马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 ,程序正常运行。
这到底是怎么回事呢,为什么会出现这个情况。
|