专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »VB教程 » windowsapi函数:Windows API一日一练(11)GetMessage函数 »正文

windowsapi函数:Windows API一日一练(11)GetMessage函数

来源: 发布时间:星期一, 2009年9月28日 浏览:7次 评论:0
  应用为了获取源源不断消息就需要GetMessage来实现所有在窗口上输入消息都会放到应用消息队列里然后再发送给窗口回调处理

  GetMessage声明如下:

WINUSERAPI
BOOL
WINAPI
GetMessageA(
    __out LPMSG lpMsg,
    __in_opt HWND hWnd,
    __in UINT wMsgFilterMin,
    __in UINT wMsgFilterMax);
WINUSERAPI
BOOL
WINAPI
GetMessageW(
    __out LPMSG lpMsg,
    __in_opt HWND hWnd,
    __in UINT wMsgFilterMin,
    __in UINT wMsgFilterMax);
#def UNICODE
# GetMessage GetMessageW
#
# GetMessage GetMessageA
#end // !UNICODE


  lpMsg是从线程消息队列里获取到消息指针

  hWnd是想获取那个窗口消息当设置为NULL时是获取所有窗口消息

  wMsgFilterMin是获取消息ID编号最小值如果小于这个值就不获取回来

  wMsgFilterMax是获取消息ID编号最大值如果大于这个值就不获取回来

  返回值可能是0大于0或者等于-1如果成功获取条非WM_QUIT消息时就返回大于0值;如果获取WM_QUIT消息时就返回值0值如果出错就返回-1

  这个例子如下:

#001 //主入口
#002 //
#003 // 蔡军生 2007/07/19
#004 // QQ: 9073204
#005 //
#006  APIENTRY _tWinMain(HINSTANCE hInstance,
#007                       HINSTANCE hPrevInstance,
#008                       LPTSTR    lpCmdLine,
#009                              nCmdShow)
#010 {
#011  UNREFERENCED_PARAMETER(hPrevInstance);
#012  UNREFERENCED_PARAMETER(lpCmdLine);
#013 
#014   //
#015  MSG msg;
#016  HACCEL hAccelTable;
#017 
#018  // 加载全局
#019  LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
#020  LoadString(hInstance, IDC_TESTWIN, szWindowClass, MAX_LOADSTRING);
#021  MyRegisterClass(hInstance);
#022 
#023  // 应用化:
#024   (!InitInstance (hInstance, nCmdShow))
#025  {
#026          FALSE;
#027  }
#028 
#029  hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TESTWIN));
#030 
#031  // 消息循环:
#032  BOOL bRet;
#033  while ( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
#034  {
#035          (bRet  -1)
#036         {
#037               //处理出错
#038 
#039         }
#040           (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
#041         {
#042               TranslateMessage(&msg);
#043               DispatchMessage(&msg);
#044         }
#045  }
#046 
#047   () msg.wParam;
#048 }
#049


  第33行就是获取所有窗口消息回来

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: