我编写的一个窗口程序,运行成功后我又加了一个鼠标左键的消息代码,调试运行都正常,可是在形成的窗口中却不能响应双击鼠标左键的事件,我不明白这是怎么回事,谢谢老师给予指教.以下是我编写的代码:
#include //头文件
#include
LRESULT CALLBACK WinSunProc( //声明窗口过程函数
HWND hwnd, // handle to window 窗口句柄
UINT uMsg, // message identifier 消息代码
WPARAM wParam, // first message parameter 消息的附加参数
LPARAM lParam // second message parameter
);
int WINAPI WinMain( //主函数说明
HINSTANCE hInstance, // handle to current instance 当前运行的实例句柄
HINSTANCE hPrevInstance, // handle to previous instance 当前实例的前一个实例的句柄
LPSTR lpCmdLine, // command line 指向应用程序的命令行参数的指针
int nCmdShow // show state 指定窗口如何显示
)
{
WNDCLASS wndcls; //定义一个窗口类
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
//wndcls.hIcon=LoadIcon(hinstance,"IDI_MYICON");
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName="LDS2007";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);
HWND hwnd;
hwnd=CreateWindow("LDS2007","李德生开发的窗口软件",WS_OVERLAPPEDWINDOW,
0,0,1000,600,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char code is %d",wParam);
MessageBox(hwnd,szChar,"char",0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"单击了鼠标左键","消息框",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,0,100,"注意代码中此处DC的定义是:HDC hdc;",strlen("注意代码中此处DC的定义是:HDC hdc"));
TextOut(hdc,0,80,"这是单击鼠标左键形成的消息反应",strlen("这是单击鼠标左键形成的消息反应"));
ReleaseDC(hwnd,hdc);
break;
case WM_RBUTTONDOWN:
MessageBox(hwnd,"单击了鼠标右键","MessageBox消息框",0);
HDC hDC;
hDC=GetDC(hwnd);
TextOut(hDC,0,140,"这是单击鼠标右键形成的消息反应",strlen("这是单击鼠标右键形成的消息反应"));
TextOut(hDC,0,160,"注意代码中此处DC的定义是:HDC hDC;",strlen("注意代码中此处DC的定义是:HDC hDC;"));
ReleaseDC(hwnd,hDC);
break;
case WM_LBUTTONDBLCLK:
MessageBox(hwnd,"双击了鼠标左键","Message提示",0);
HDC hdC;
hdC=GetDC(hwnd);
TextOut(hdC,0,180,"这是双击鼠标左键形成的消息反应",strlen("这是双击鼠标左键形成的消息反应"));
TextOut(hdC,0,200,"注意代码中此处DC的定义是:HDC hdC;",strlen("注意代码中此处DC的定义是:HDC hdC;"));
ReleaseDC(hwnd,hdC);
break;
case WM_PAINT:
HDC hDc;
PAINTSTRUCT ps;
hDc=BeginPaint(hwnd,&ps);
TextOut(hDc,0,0,"李德生编写的第一个窗口程序",strlen("李德生编写的第一个窗口程序"));
TextOut(hDc,0,20,"这是窗口重绘形成的消息反应",strlen("这是窗口重绘形成的消息反应"));
TextOut(hDc,0,40,"注意代码中此处DC的定义是:HDC hDc;",strlen("注意代码中此处DC的定义是:HDC hDc;"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的结束此程序?","消息框message",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
--------------------next---------------------
阅读(978) | 评论(0) | 转发(0) |