ex31.c
上传用户:qdhmjx
上传日期:2022-07-11
资源大小:2226k
文件大小:3k
源码类别:

书籍源码

开发平台:

Visual C++

  1. #include <windows.h> //头文件
  2. INT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
  3. //窗口函数声明,这一函数将处理发往应用程序窗口的各种消息
  4. char szClassName[]="windowclass1";//窗口结构体的名称
  5. char szAppTitle[]="Windows API";//窗口的标题
  6. INT PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdParam,INT nCmdShow)
  7. //WinMain()函数的定义
  8. {
  9. HWND hMainWnd;//窗口句柄
  10. MSG msg;//消息结构体
  11. WNDCLASS myWC;//窗口结构体
  12. if(!hPrevInstance)
  13. /*hPrevInstance表示前一应用程序实例句柄,这一语句的作用是判断是否已有应用程序的实例在运行应用程序在建立窗口前,应先规定所要建立的窗口的特征,下面的一系列语句通过给窗口结构体的数据成员赋值来规定所要建立的窗口的特征*/
  14. {
  15. myWC.style=CS_HREDRAW|CS_VREDRAW;//窗口风格
  16. myWC.lpfnWndProc=WndProc;
  17. //本窗口的消息处理函数(窗口函数)
  18. myWC.cbClsExtra=0;//附加参数
  19. myWC.cbWndExtra=0;//附加参数
  20. myWC.hInstance=hInstance;//当前应用程序实例句柄
  21. myWC.hIcon=LoadIcon(NULL,IDI_APPLICATION);
  22. //窗口图标
  23. myWC.hCursor=LoadCursor(NULL,IDC_ARROW);
  24. //窗口光标
  25. myWC.hbrBackground=GetStockObject(WHITE_BRUSH);
  26. //窗口背景色
  27. myWC.lpszMenuName=NULL;//窗口菜单
  28. myWC.lpszClassName=szClassName; /*给窗口结构体命名,CreateWindow()函数将根据窗口结构体的名称来建立窗口*/
  29. RegisterClass(&myWC);//注册窗口
  30. }
  31. //下面用CreateWindow()函数来建立窗口,并返回所建立窗口的句柄
  32. hMainWnd=CreateWindow(
  33. szClassName,//窗口结构体的名称
  34. szAppTitle,//窗口的标题
  35. WS_OVERLAPPEDWINDOW,//窗口风格为可重叠窗口
  36. /*下面四个参数代表窗口左上角x,y坐标和窗口的宽度与高度,都使用缺省值*/
  37. CW_USEDEFAULT,CW_USEDEFAULT,
  38. CW_USEDEFAULT,CW_USEDEFAULT,
  39. /*下面参数分别为父窗口句柄、窗口菜单句柄、应用程序实例句柄和附加参数*/
  40. NULL,NULL,hInstance,NULL);
  41. ShowWindow(hMainWnd,SW_SHOWMAXIMIZED);
  42. //显示最大化窗口
  43. UpdateWindow(hMainWnd);//更新窗口
  44. //下面用While()循环来建立消息循环
  45. while(GetMessage(&msg,NULL,0,0))
  46. //获取消息,填充msg结构体
  47. {
  48. TranslateMessage(&msg);//翻译键盘消息
  49. DispatchMessage(&msg);
  50. //向窗口函数发送消息,让窗口函数处理
  51. }
  52. return msg.wParam;
  53. }
  54. INT CALLBACK WndProc(HWND hMainwnd, UINT message, WPARAM wParam, LPARAM lParam)//窗口函数的定义
  55. {
  56. char messageleft[]="the left button have been pushed";
  57. //单击鼠标左键,消息框将显示的提示内容
  58. char messageright[]="the right button have been pushed";
  59. //单击鼠标右键,消息框将显示的提示内容
  60. switch(message)//判断消息标识符
  61. {
  62. case WM_RBUTTONDOWN:
  63. {
  64. MessageBox(GetFocus(),messageright,"RButtonPushDown",MB_OK|MB_ICONINFORMATION);
  65. break;
  66. }
  67. case WM_LBUTTONDOWN:
  68. {
  69. MessageBox(GetFocus(),messageleft,"LButtonPushDown",MB_OK|MB_ICONINFORMATION);
  70. break;
  71. }
  72. case WM_DESTROY://关闭应用程序窗口时发出的消息
  73. {
  74. PostQuitMessage(0);//发出WM_QUIT消息,结束应用程序
  75. return 0;
  76. }
  77. default:break;
  78. }
  79. return DefWindowProc(hMainwnd,message,wParam,lParam);
  80. //其它没有处理的消息交给Windows做默认处理
  81. }