141上位机VC MFC编写打字练习软件实例
141上位机VC MFC编写打字练习软件实例 功能展示 刚接触电脑的朋友都有练习打字速度的经历,我们这例程自己编写程序实现打字软件的开发,效果如图,点击开始进行字母输入练习,点击停止,可以出练习; 要点提示 例程中同时可显示10个字母,字母通过十个静态文字控件加载了字母位图后,进行显示;用户输入字母与静态文本控件表示的字母相同时,随机更换此控件图片,且设置控件的位置到窗口顶部; 10个静态控件位置由上到下漂移通过定时器设置控件窗口位置实现; 实现功能 1.新建基于对话框的应用程序 2.给工程添加A-Z字母位图和窗口背景位图; 添加八个编辑控件用于显示设置练习时间,打字数,错误数,漏打数,正确率,打字速度,已练习时间,字母下降速度,等信息,为了编程方便,每个控件都关联上变量 CEditm_Alternation; CEdit m_Timing; Cedit m_sNum; CEdit m_Veracity; Cedit m_uTime; CEdit m_Rate; CEdit m_lNum;Cedit m_eNum; 3.添加变量 UINT m_Num[10]; //显示字母 CStatic m_Static[10];//静态控件显示字母int m_Error; //错误数 int m_Sum; //打字数 intm_Lose; //漏打数 int m_Time; //用时 BOOL m_IsStart; //开始 int m_iTime; //定时 int m_aTime; //间隔时间 4. OnInitDialog()中初始化已添加的变量 InitPanel(); for(inti=0;i<10;i++) { m_Static.Create("",WS_CHILD|WS_CLIPSIBLINGS| WS_EX_TOOLWINDOW|SS_BITMAP,CRect(0,0,50,50),GetDlgItem(IDC_RECT),1240+i);} InitPanel();为自定义初始化函数 - void CGkbc8Dlg::InitPanel()
- {
- m_IsStart = FALSE;
- m_uTime.SetWindowText("时间:0分0秒");
- m_sNum.SetWindowText("打字数:0个");
- m_eNum.SetWindowText("错误数:0个");
- m_lNum.SetWindowText("漏打数:0个");
- m_Veracity.SetWindowText("正确率:0.0%");
- m_Rate.SetWindowText("速度:0个/分");
- m_Timing.SetWindowText("1");
- m_Alternation.SetWindowText("500");
- }
复制代码后面依次添加m_Num, m_Static 变量的设置函数void SetBitmap(int num); void RandLetter();用户字母输入消息判断函数PreTranslateMessage(); 定时器处理函数OnTimer()及练习开结束函数OnStart(), OnStop()函数体为 - void CGkbc8Dlg::RandLetter()
- {
- CTime time = CTime::GetCurrentTime();
- srand(time.GetHour()+time.GetMinute()+time.GetSecond());
- for(int i=0;i<10;i++)
- {
- m_Num[i] = rand()%26+1;
- }
- }
- void CGkbc8Dlg::SetBitmap(int num)
- {
- HBITMAP m_hBitmap;
- m_hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAPA+m_Num[num]-1));
- m_Static[num].SetBitmap(m_hBitmap);
- m_Static[num].MoveWindow(45+58*num,21,24,24);
- m_Static[num].ShowWindow(SW_SHOW);
- }
复制代码我们来演示下功能实现的整个过程
|