Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341718
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:05:36

我编写的一个窗口程序,运行成功后我又加了一个鼠标左键的消息代码,调试运行都正常,可是在形成的窗口中却不能响应双击鼠标左键的事件,我不明白这是怎么回事,谢谢老师给予指教.以下是我编写的代码:
#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) |
给主人留下些什么吧!~~