上QQ阅读APP看书,第一时间看更新
1.1.1 对消息的演示测试
在真正学习和认识消息之前,先来完成一个简单的任务,看看消息能完成什么样的工作。首先写一个简单的程序,通过编写的程序发送消息来关闭记事本的进程、获取窗口的标题和设置窗口的标题。
程序的具体代码如下:
void CMsgTestDlg::OnClose() { // 在此处添加处理程序代码 HWND hWnd = ::FindWindow("Notepad", NULL); if ( hWnd == NULL ) { AfxMessageBox("没有找到记事本"); return ; } ::SendMessage(hWnd, WM_CLOSE, NULL, NULL); } void CMsgTestDlg::OnExec() { // 在此处添加处理程序代码 WinExec("notepad.exe", SW_SHOW); } void CMsgTestDlg::OnEditWnd() { // 在此处添加处理程序代码 HWND hWnd = ::FindWindow(NULL, "无标题 - 记事本"); if ( hWnd == NULL ) { AfxMessageBox("没有找到记事本"); return ; } char *pCaptionText = "消息测试"; ::SendMessage(hWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)pCaptionText); } void CMsgTestDlg::OnGetWnd() { // 在此处添加处理程序代码 HWND hWnd = ::FindWindow("Notepad", NULL); if ( hWnd == NULL ) { AfxMessageBox("没有找到记事本"); return ; } char pCaptionText[MAXBYTE] = { 0 }; ::SendMessage(hWnd, WM_GETTEXT, (WPARAM)MAXBYTE, (LPARAM)pCaptionText); AfxMessageBox(pCaptionText); }
编写的代码中有4个函数:第1个函数OnClose()是用来关闭记事本程序的;第2个函数OnExec()是用来打开记事本程序的,主要是测试其他3个函数时可以方便地打开记事本程序;第3个函数OnEditWnd()是用来修改记事本标题的;第4个函数OnGetWnd()是用来获取当前记事本标题的。程序的界面如图1-1所示。
图1-1 消息测试窗口
简单测试一下这个程序。首先单击“打开记事本程序”按钮,出现记事本的窗口(表示记事本程序被打开了);接着单击“修改记事本标题”按钮,可以发现记事本程序的窗口标题改变了;再单击“获取记事本标题”按钮,弹出记事本程序窗口标题的一个对话框;最后单击“关闭记事本程序”按钮,记事本程序被关闭。