Windows A P I编程主讲人 : 翟慧杰
学时:48
(第十九讲)
在滚屏后,函数开始调用TextOut函数进行信息输出.TextOut函数的原型定义如下:BOOL TextOut(HDC hdc,// 设备描述表句柄 int nXStart 文本输出起始点 X坐标 int nYStart,文本输出起始点 Y坐标 LPCTSTR lpString,指向输出字符串的指针 int cbString // 字符串中字符的数目 ); TextOut函数能够用当前设定的字体在窗口的指定部位输出一段文本信息.如果操作成功则返回一非零值,否则返回零值.捕获键盘消息的信息主要根据表中的描述,通过使用按位操作确定某些特定位的值,然后再判断具体的状态.
在TextOut函数调用过程中,还调用了wsprintf函数,并使其返回值作为TextOut函数的一个参数值.wsprintf函数的原型定义如下:int wsprintf LPTSTR lpOut,// 指向需要输出的字符串的指针 LPCTSTR lpFmt,指向格式控制字符串的指针 其他可选参数 );wsprintf函数能够将一组字符序列按lpFmt参数指定的格式转换,然后保存在lpOut参数指定的字符缓冲区中等待输出.其中,字符序列由可选参数决定,而可选参数的数目和具体内容应该与lpFmt所指定的格式一致.如果wsprintf函数操作成功,则返回输出字符的数目,但这个字符数目不包括表示结束的NULL标志.如果操作失败,返回的整数值将与输出的字符数目不相符.
实例主要说明了如何处理键盘消息,读者应该着重理解各种信息在MSG结构体变量中是如何保存的,怎样才能够对其中的具体信息进行识别和提取. 程序运行后将产生一个背景色为灰色的简单窗口,并在窗口的顶部出现标题提示信息.这时用户如果进行键盘操作,则窗体中便会显示该操作所产生的键盘消息,每显示一条消息程序都会滚屏和重绘窗口,滚屏区域的颜色为白色.执行结果如图所示.
键盘消息实例2:#include
wcex.hIcon= LoadIcon(NULL,LPCTSTR)IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL,IDC_ARROW); wcex.hbrBackground = (HBRUSH)COLOR_WINDOW+1); wcex.lpszMenuName = NULL; wcex.lpszClassName = "SeeKeyMessage"; wcex.hIconSm = LoadIcon(NULL,(LPCTSTR)IDI_APPLICATION); if(!RegisterClassEx(&wcex)) return FALSE; int SW_XFS = GetSystemMetrics(SM_CXSCREEN); int SW_YFS = GetSystemMetrics(SM_CYSCREEN); HWND hWnd; hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,SeeKeyMessage"Trace Key Operation",WS_OVERLAPPEDWINDOW,0, 0, SW_XFS, SW_YFS-25,
NULL, NULL, hInstance, NULL); if(!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); MSG msg; while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;}