请选择 进入手机版 | 继续访问电脑版

NX二次开发

 找回密码
 立即注册
查看: 792|回复: 0

[技术分享] win32窗口消息程序实例-转载

[复制链接]

558

主题

755

帖子

3524

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3524
发表于 2018-2-28 15:49:43 | 显示全部楼层 |阅读模式
一个不错的例子,转载自:http://blog.csdn.net/gg_simida/article/details/70792890
  1. // 窗口过程
  2. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  3. {
  4.     switch (message)
  5.     {
  6.     case WM_LBUTTONDOWN:
  7.         MessageBoxA(hWnd, "你单击了鼠标左键", "WM_LBUTTONDOWN", MB_OK);
  8.         break;
  9.     case WM_CHAR:
  10.         char szChar[64];
  11.         sprintf_s(szChar, 64, "你按下了键盘键:%c", wParam);
  12.         MessageBoxA(hWnd, szChar, "WM_CHAR", MB_OK);
  13.         break;
  14.     case WM_PAINT:
  15.         {
  16.             PAINTSTRUCT ps;
  17.             HDC hdc = BeginPaint(hWnd, &ps);
  18.             // TODO: 在此添加任意绘图代码...
  19.             SetTextColor(hdc, RGB(255, 0, 0));
  20.             SetBkColor(hdc, RGB(0, 255, 0));
  21.             TextOutA(hdc, 200, 200, "Hello World!", (int)strlen("Hello World!"));
  22.             EndPaint(hWnd, &ps);
  23.         }
  24.         break;
  25.         case WM_CREATE:
  26.                 {
  27.                         int scrWidth, scrHeight;
  28.                         RECT rect;
  29.                         //获得屏幕尺寸
  30.                         scrWidth = GetSystemMetrics(SM_CXSCREEN);
  31.                         scrHeight = GetSystemMetrics(SM_CYSCREEN);
  32.                         //获取窗体尺寸
  33.                         GetWindowRect(hWnd, &rect);
  34.                         rect.left = (scrWidth-rect.right) / 2;
  35.                         rect.top = (scrHeight-rect.bottom) / 2;
  36.                         //设置窗体位置
  37.                         SetWindowPos(hWnd, HWND_TOP, rect.left, rect.top, rect.right, rect.bottom, SWP_SHOWWINDOW);
  38.                 }
  39.                 break;
  40.     case WM_DESTROY:
  41.         PostQuitMessage(0);
  42.         break;
  43.     default:
  44.         break;
  45.     }
  46.     return DefWindowProc(hWnd, message, wParam, lParam);
  47. }

  48. int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
  49. {
  50.     // 注册窗口类
  51.     WNDCLASSEX wcex;
  52.     wcex.cbSize = sizeof(WNDCLASSEX);
  53.     wcex.style          = CS_HREDRAW | CS_VREDRAW;
  54.     wcex.lpfnWndProc    = WndProc;
  55.     wcex.cbClsExtra     = 0;
  56.     wcex.cbWndExtra     = 0;
  57.     wcex.hInstance      = hInstance;
  58.     wcex.hIcon          = NULL;
  59.     wcex.hCursor        = LoadCursor(NULL, IDC_HAND);
  60.     wcex.hbrBackground  = (HBRUSH)(GetStockObject(BLACK_BRUSH));
  61.     wcex.lpszMenuName   = NULL;
  62.     wcex.lpszClassName  = L"mywndclass";
  63.     wcex.hIconSm        = NULL;
  64.     RegisterClassEx(&wcex);

  65.     // 创建窗口 WS_OVERLAPPEDWINDOW WS_CAPTION
  66.     HWND hWnd = CreateWindowExA(0, "mywndclass", "This is a win32 wnd", WS_POPUP,
  67.         0, 0, 600, 370, NULL, NULL, hInstance, NULL);

  68.     // 显示窗口
  69.     ShowWindow(hWnd, nCmdShow);

  70.     // 窗口消息循环
  71.     MSG msg;
  72.     while (GetMessage(&msg, NULL, 0, 0))
  73.         {
  74.         TranslateMessage(&msg);
  75.         DispatchMessage(&msg);
  76.     }
  77.     return (int) msg.wParam;
  78. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋| ( 蜀ICP备16014681号

GMT+8, 2018-12-19 05:38 , Processed in 0.073081 second(s), 23 queries .

Powered by www.nxopen.cn

© 2001-2013 nxopen.cn

快速回复 返回顶部 返回列表