鱼C论坛

 找回密码
 立即注册
查看: 3032|回复: 1

关于程序设计这本书的窗口程序

[复制链接]
发表于 2014-2-11 22:40:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. #include <Windows.h>
  2. LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
  3. int WINAPI WinMain(__in HINSTANCE hInstance,
  4.                                    __in_opt HINSTANCE hPrevInstance,
  5.                                    __in_opt LPSTR lpCmdLine,
  6.                                    __in int nShowCmd )
  7. {
  8.        HWND hwnd;
  9.            MSG msg;
  10.            WNDCLASS wc;
  11.            wc.style=0;
  12.            wc.lpfnWndProc=(WNDPROC)WndProc;
  13.            wc.cbWndExtra=0;
  14.            wc.cbClsExtra=0;
  15.            wc.hInstance=hInstance;
  16.            wc.hIcon=LoadIcon(NULL,IDI_WINLOGO);
  17.            wc.hCursor=LoadCursor(NULL,IDC_ARROW);
  18.            wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
  19.            wc.lpszMenuName=NULL;
  20.            wc.lpszClassName=TEXT("MyWndClass");
  21.        RegisterClass(&wc);
  22.            hwnd=CreateWindow(TEXT("MyWndClass"),
  23.                                  TEXT("Hello SDK Application"),
  24.                                                  WS_OVERLAPPEDWINDOW,
  25.                                                  CW_USEDEFAULT,CW_USEDEFAULT,
  26.                                                  CW_USEDEFAULT,CW_USEDEFAULT,
  27.                                                  NULL,NULL,
  28.                                              hInstance,
  29.                                                  NULL);
  30.            ShowWindow(hwnd,nShowCmd);
  31.            UpdateWindow(hwnd);
  32.            while (GetMessage(&msg,NULL,0,0))
  33.            {
  34.                    TranslateMessage(&msg);
  35.                    DispatchMessage(&msg);

  36.            }

  37.            return msg.wParam;
  38. }
  39. LRESULT CALLBACK WndProc(HWND hwnd,
  40.                                                  UINT message,
  41.                                                  WPARAM wParam,
  42.                                                  LPARAM lParam)
  43. {
  44.         PAINTSTRUCT ps;
  45.         HDC hdc;
  46.         switch (message)
  47.         {
  48.         case WM_LBUTTONDOWN:
  49.                 MessageBox(hwnd,TEXT("鼠标点击"),TEXT("没事"),MB_OK);
  50.                 /*break;*/
  51.         return 0;
  52.         case WM_PAINT:
  53.                 //hdc=BeginPaint(hwnd,&ps);
  54.                 //Ellipse(hdc,0,0,200,200);
  55.                 //EndPaint(hwnd,&ps);
  56.          //break;
  57.                 return 0;
  58.         case WM_DESTROY:
  59.                 PostQuitMessage(0);
  60.                 break;
  61.                

  62.   
  63.         }
  64. /*        return 0;*/
  65.       return DefWindowProc(hwnd,message,wParam,lParam);
  66. }
复制代码
我用的是vs2008,关于case WM_LBUTTONDOWN:case WM_PAINT:这两个书上后面是return 0;孙鑫的书是用vc6用的是break;在这里如果case WM_PAINT:后面部接代码,
1.直接跟return 0,运行程序后点鼠标没有出现messagebox,而是出现程序当机
2.如果直接跟break,运行后点鼠标,就没事,可以出现messagebox
3,如果后面写入hdc3句话,接return 0,运行后也会出现messagebox ,程序正常运行。
这到底是怎么回事呢,为什么会出现这个情况。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-2-13 19:02:48 | 显示全部楼层
路过看看= =!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-13 02:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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