|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <Windows.h>
- LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
- int WINAPI WinMain(__in HINSTANCE hInstance,
- __in_opt HINSTANCE hPrevInstance,
- __in_opt LPSTR lpCmdLine,
- __in int nShowCmd )
- {
- HWND hwnd;
- MSG msg;
- WNDCLASS wc;
- wc.style=0;
- wc.lpfnWndProc=(WNDPROC)WndProc;
- wc.cbWndExtra=0;
- wc.cbClsExtra=0;
- wc.hInstance=hInstance;
- wc.hIcon=LoadIcon(NULL,IDI_WINLOGO);
- wc.hCursor=LoadCursor(NULL,IDC_ARROW);
- wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
- wc.lpszMenuName=NULL;
- wc.lpszClassName=TEXT("MyWndClass");
- RegisterClass(&wc);
- hwnd=CreateWindow(TEXT("MyWndClass"),
- TEXT("Hello SDK Application"),
- WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT,CW_USEDEFAULT,
- CW_USEDEFAULT,CW_USEDEFAULT,
- NULL,NULL,
- hInstance,
- NULL);
- ShowWindow(hwnd,nShowCmd);
- UpdateWindow(hwnd);
- while (GetMessage(&msg,NULL,0,0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return msg.wParam;
- }
- LRESULT CALLBACK WndProc(HWND hwnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam)
- {
- PAINTSTRUCT ps;
- HDC hdc;
- switch (message)
- {
- case WM_LBUTTONDOWN:
- MessageBox(hwnd,TEXT("鼠标点击"),TEXT("没事"),MB_OK);
- /*break;*/
- return 0;
- case WM_PAINT:
- //hdc=BeginPaint(hwnd,&ps);
- //Ellipse(hdc,0,0,200,200);
- //EndPaint(hwnd,&ps);
- //break;
- return 0;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
-
-
- }
- /* return 0;*/
- return DefWindowProc(hwnd,message,wParam,lParam);
- }
复制代码 我用的是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 ,程序正常运行。
这到底是怎么回事呢,为什么会出现这个情况。
|
|