C++ 初识Windows消息

来源:互联网 发布:80c51单片机引脚图 编辑:程序博客网 时间:2024/06/03 18:14

本帖内容:对消息的演示测试


●先来完成一个简单的任务,看看消息能完成什么样的工作,首先写一个简单的程序,通过编写的程序发送消息来关闭记事本的进程,获取窗口的标题和设置窗口的标题。

1.打开VC6.0,文件 → 新建-MFC AppWizard[exe] → 工程名字:MessageTest1(工程名字根据自己爱好设置就可以啦)→  基本对话框 → 然后一直点下一步,到最后一步选择“CMessateTest1Dlg”→完成→确定

窗口界面如图1

图1

关闭记事本按钮的代码如下:

void CMessageTestDlg::OnCLOSE() {// 关闭记事本HWND hWnd = ::FindWindow("Notepad",NULL);if (hWnd == NULL){AfxMessageBox("没有找到记事本");return;}::SendMessage(hWnd, WM_CLOSE, NULL, NULL);}


打开记事本的按钮代码如下:

void CMessageTestDlg::OnExec() {// 打开记事本WinExec("notepad.exe",SW_SHOW);}


修改记事本标题的按钮代码如下:

void CMessageTestDlg::OnEditWnd() {// 修改记事本标题HWND hWnd = ::FindWindow(NULL,"无标题-记事本");if (hWnd == NULL){AfxMessageBox("没有找到记事本");return;}char *pCaptionText = "消息测试";::SendMessage(hWnd,WM_SETTEXT,(WPARAM)0,(LPARAM)pCaptionText);}


获取记事本标题的代码如下:

void CMessageTestDlg::OnGetWnd() {// 获取记事本标题char pCaptionText[MAXBYTE] = { 0 };HWND hWnd = ::FindWindow("Notepad",NULL);if (hWnd == NULL){AfxMessageBox("没有找到记事本");return;}::SendMessage(hWnd,WM_GETTEXT,(WPARAM)MAXBYTE,(LPARAM)pCaptionText);AfxMessageBox(pCaptionText);}


上面的代码中,FindWindow()函数的功能是,通过指定的窗口类名(IpClassName)或窗口标题(IpWindowName)查找匹配的窗口并返回最上层的窗口句柄简单理解就是,通过指定的窗口名(窗口名相对于窗口类名来说更直观些,因此往往使用的是窗口名)返回窗口句柄。FindWindow()函数返回的窗口句柄是为了给SendMessage()函数来使用的。



0 0
原创粉丝点击