MFC打字训练娱乐程序(四)
来源:互联网 发布:阿里云简单应用 编辑:程序博客网 时间:2024/05/21 22:24
就要回学校了,由于时间仓促,简要介绍一下我的子窗口的程序。
这里说明,子窗口在建立时没有初始化响应函数,此时我们可以自己添加OnInitDialog,但是要在子窗口的头文件中包含该响应函数,以下是我的初始化操作
BOOL CCompile::OnInitDialog()
{
CDialog::OnInitDialog();
((CComboBox*)GetDlgItem(IDC_COMBO1))->ResetContent();//消除现有所有内容
((CComboBox*)GetDlgItem(IDC_COMBO2))->ResetContent();//消除现有所有内容
((CComboBox*)GetDlgItem(IDC_COMBO3))->ResetContent();//消除现有所有内容
((CComboBox*)GetDlgItem(IDC_COMBO4))->ResetContent();//消除现有所有内容
GetCurrentDirectory(MAX_PATH, ssIniPath);
lstrcat(ssIniPath, "//Option.ini");
CIniConfig m_ini(ssIniPath);
char ssOption1[3] = {0};
m_ini.GetString("section1", "key3", ssOption1);
int iOption1 = 0;
iOption1=atoi(ssOption1);
char ssOption2[3] = {0};
m_ini.GetString("section2", "key3", ssOption2);
int iOption2 = 0;
iOption2=atoi(ssOption2);
char ssOption3[3] = {0};
m_ini.GetString("section3", "key3", ssOption3);
int iOption3 = 0;
iOption3=atoi(ssOption3);
char ssOption4[3] = {0};
m_ini.GetString("section4", "key3", ssOption4);
int iOption4 = 0;
iOption4=atoi(ssOption4);
//以下添加字体格式
m_cbExamble1.AddString("Arial");
m_cbExamble1.AddString("Arial Black");
m_cbExamble1.AddString("Comic Sans MS");
m_cbExamble1.AddString("Courier New");
m_cbExamble1.AddString("Dotum");
m_cbExamble1.AddString("DotumChe");
m_cbExamble1.AddString("Euclid");
m_cbExamble1.AddString("Times New Roman");
if (ssOption1)
{
m_cbExamble1.SetCurSel(iOption1);
}
else
m_cbExamble1.SetCurSel(0);
m_cbExamble4.AddString("黑");
m_cbExamble4.AddString("红");
m_cbExamble4.AddString("橙");
m_cbExamble4.AddString("黄");
m_cbExamble4.AddString("绿");
m_cbExamble4.AddString("蓝");
m_cbExamble4.AddString("靛");
m_cbExamble4.AddString("紫");
if (ssOption4)
{
m_cbExamble4.SetCurSel(iOption4);
}
else
m_cbExamble4.SetCurSel(2);
char cList[5];
for (char i = 1; i < 10; i++)
{
memset(cList, 0, sizeof(cList));
sprintf(cList, "%d", i);
m_cbExamble2.AddString(cList);
}
if (ssOption2)
{
m_cbExamble2.SetCurSel(iOption2);
}
else
m_cbExamble2.SetCurSel(0);
//以下程序用来获得字典
WIN32_FIND_DATA FindData;//查找文件必须的变量
HANDLE hFile;
char szPath[MAX_PATH];
char szRoute[MAX_PATH];
int bNext;
size_t iPos;
GetCurrentDirectory(MAX_PATH, szPath);//获取软件当前路径并放在szPath中,
//将程序路径放在szPath中
strcat(szPath, "//Data//*");//完善字典路径
hFile = FindFirstFile(szPath, &FindData);//获得第一个文件
if(hFile == INVALID_HANDLE_VALUE)//INVALID_HANDLE_VALUE表示无效的句柄值
{
return false;
}
do
{
memset(szPath, 0, MAX_PATH);
memset(szRoute, 0, MAX_PATH);
sprintf(szPath, "%s", FindData.cFileName);
GetFlagPos(szPath, &iPos);
if (iPos)
{
memcpy(szRoute, szPath, iPos);
m_cbExamble3.AddString(szRoute);
}
memset(&FindData, 0, sizeof(FindData));
bNext = FindNextFile(hFile, &FindData);
}while(bNext);
if (ssOption3)
{
m_cbExamble3.SetCurSel(iOption3);
}
else
m_cbExamble3.SetCurSel(0);
FindClose(hFile);
return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
}
保存按钮设置如下
void CCompile::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//以下是设置字体风格
char szWordStyle[30];
char szPosition1[3] = {0};
int nIndex1= m_cbExamble1.GetCurSel();//得到选择的字典在下拉单中的位置
m_cbExamble1.GetLBText(nIndex1, strCBText1);//将字典放到strCBText2中
csWord = strCBText1;
strcpy(szWordStyle, csWord);
itoa(nIndex1,szPosition1,10);
//以下是难度选择
int nIndex2 = m_cbExamble2.GetCurSel();//得到选择的难度在下拉单中的位置
m_cbExamble2.GetLBText(nIndex2, strCBText2);//将难度放到strCBText1中
iComplex=atoi(strCBText2);
inComplex = iComplex * iConst;//难度选择返回的是一个整数,此时inComplex中放有整型难度值
char szPosition2[3] = {0};
itoa(nIndex2,szPosition2,10);
//以下是字典文件选择
char szFilePath[256];
char szPosition3[3] = {0};
int nIndex3 = m_cbExamble3.GetCurSel();//得到选择的字典在下拉单中的位置
m_cbExamble3.GetLBText(nIndex3, strCBText3);//将字典放到strCBText3中
memset(szDicPath, 0, 256);
memset(szFilePath, 0, 256);
GetCurrentDirectory(256, szFilePath);
strcat(szDicPath, szFilePath);
strcat(szDicPath, "//data//");
strcat(szDicPath, strCBText3);
strcat(szDicPath, ".txt");//组织好了文件名路径,并放在szDicPath中
itoa(nIndex3,szPosition3,10);
//以下是设置字体颜色
int nIndex4= m_cbExamble4.GetCurSel();//得到选择的颜色在下拉单中的位置
iColour = nIndex4;
char szPosition4[3] = {0};
itoa(nIndex4,szPosition4,10);
//以下程序实现了保存设置操作
GetCurrentDirectory(MAX_PATH, szIniPath);
lstrcat(szIniPath, "//Option.ini");
CIniConfig m_ini(szIniPath);
m_ini.SetString("section1", "key1", "Word");
m_ini.SetString("section1", "key2", szWordStyle);
m_ini.SetString("section1", "key3", szPosition1);
m_ini.SetString("section2", "key1", "Difficulty");
m_ini.SetNumber("section2", "key2", inComplex);
m_ini.SetString("section2", "key3", szPosition2);
m_ini.SetString("section3", "key1", "Dictionary");
m_ini.SetString("section3", "key2", szDicPath);
m_ini.SetString("section3", "key3", szPosition3);
m_ini.SetString("section4", "key1", "Colour");
m_ini.SetNumber("section4", "key2", iColour);
m_ini.SetString("section4", "key3", szPosition4);
OnOK();
}
此外说明,在使用Combo Box控件对字典进行列举时,我另外使用的函数是
#include "string.h"
//获取字符串中"."所在的位置
int GetFlagPos( char *str, size_t *Pos)
{
*Pos = 0;
size_t iStrLen = strlen(str);
if (iStrLen == 0)
return 0;
for(size_t i = 0; i <= iStrLen; i++)
{
if(str[i] =='.')
{
*Pos = i;
break;
}
}
return 1;
}
最后将本人添加的变量名简要做一概括:
子窗口:字体选择m_cbExamble1,颜色设置m_cbExamble4,难度选择m_cbExamble2,字典选择m_cbExamble3
主窗口:开始m_btn1,恢复m_ddit12,暂停m_bun3,结束m_bun2,输入框m_edit2,正确m_edit01,得分m_edit02,错误m_edit03
看过使用自己定义后的控件,感觉自己定义的很没有一定的规律,有点乱,呵呵,不管怎样,自己的程序介绍完了,但是其中也反映出很多问题,做事要有一定的条理,不要什么都将就着来,有些事可以草草而过,但是有些事就是要细心才能做的好。
为自己加油!
- MFC打字训练娱乐程序(四)
- MFC打字训练娱乐程序(一)
- MFC打字训练娱乐程序(二)
- MFC打字训练娱乐程序(三)
- MFC截图程序的实现(四)
- ACM集训--打字训练
- sdut打字训练
- MFC 对话框上打字
- 逻辑思维训练(四)
- Caffe-4.1--(本机PC + 一个完整独立的训练程序)前台MFC+调用后台Caffe训练
- 键盘打字程序源代码
- MASM-打字练习程序
- VB打字程序
- [Win32] 打字游戏MFC版
- 微信小程序娱乐---哇哦窝
- 周末训练笔记(四)
- 用JS做的打字程序(为qixiao)
- MFC笔记(四)
- MVC
- 《Linux内核修炼之道》精华分享与讨论(1)——缅怀已逝的十八年(1991~1998)
- 通过一个Qt地址簿教程学到的
- 在VC6.0及VS中添加对话框oninitdialog()函数的方法
- 动网论坛系统已死 所谓的改革无非是徒劳
- MFC打字训练娱乐程序(四)
- linux vi 命令大全
- ARM体系的各种异常的分析(转)
- 项目推动的鲜活案例
- 用动软代码生成器2.41将批量生成的代码部署到已有项目详细教程(基于抽象工厂模式的三层架构)
- 盗墓迷城V1.0策划案
- RMAN复制(Duplicate)数据库之实战
- C#反射问题总结
- google检索技巧-从菜鸟到黑客