设为首页 加入收藏

TOP

2.4 Windows应用程序举例(1)
2013-10-07 01:11:29 来源: 作者: 【 】 浏览:87
Tags:2.4 Windows 应用程序 举例

2.4  Windows应用程序举例(1)

与控制台程序相比,虽然编制一个Windows应用程序所需要的代码要多得多,但Windows应用程序所具有的功能强大和易操作的特性是控制台程序所不能比拟的。与其他应用程序一样,基于Windows的C应用程序也有自己的结构,称为Win32应用程序结构。

【例2.1】一个完整的Windows应用程序generic举例(Ex2_01)。

(1) 在Microsoft Visual C++(www.cppentry.com) 6.0中选择File→new菜单命令,打开New对话框。选择Project标签,从列表框选中"Win32 Application"选项,如图2.16所示。

(2) 在工程名称文本框中输入Win32应用程序项目名称"generic"。在Location下的编辑框中直接输入文件夹名称,或单击浏览按钮选择一个已有的文件夹。

(3) 单击OK按钮继续。一个询问项目类型的Win32应用程序向导将被显示,从中选中"An empty project(一个空的工程)"选项。单击Finish按钮,系统将显示AppWizard(应用程序向导)的创建信息,单击OK按钮,系统将自动创建此应用程序。

(4) 在Microsoft Visual C++(www.cppentry.com) 6.0的File菜单中,选择New命令,打开New对话框。单击Files标签,在左边的列表框中选择C++(www.cppentry.com) Source File选项,在右边的File文本框中输入"generic.cpp",单击OK按钮,如图2.17所示。

 
(点击查看大图)图2.16  New对话框的工程界面
 
(点击查看大图)图2.17  New对话框文件页面
(5) 在文档窗口中输入如下代码:
  1. #include <windows.h>  
  2. #include <stdio.h>  
  3. HINSTANCE hInst;            // 当前实例的句柄  
  4. HWND hWndMain;      // 主窗口的句柄  
  5. LRESULT CALLBACK WndProc(HWNDUINTWPARAMLPARAM);  
  6. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,  
  7. PSTR lpszCmdLine, int nCmdShow)  
  8. {  
  9. MSG  msg;        // 消息  
  10. WNDCLASS  wnd;       // 窗口类  
  11. wnd.style = CS_HREDRAW|CS_VREDRAW;  
  12. wnd.cbClsExtra = 0;  
  13. wnd.cbWndExtra = 0;  
  14. wnd.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);  
  15. wnd.hCursor = ::LoadCursor(NULL, IDC_ARROW);  
  16. wnd.hIcon = ::LoadIcon(NULL, IDI_APPLICATION);  
  17. wnd.hInstance = hInstance;  
  18. wnd.lpfnWndProc = WndProc;  
  19. wnd.lpszClassName = "generic";   // 窗口类  
  20. wnd.lpszMenuName = NULL;  
  21. if (!RegisterClass(&wnd))     // 注册窗口  
  22. {  
  23. return FALSE;  
  24. }  
  25. hWndMain = CreateWindow("generic"// 窗口类名  
  26. "简单的窗口演示程序",                  // 窗口标题  
  27. WS_OVERLAPPEDWINDOW,                 // 窗口样式  
  28. CW_USEDEFAULT,                       // 窗口最初的x位置  
  29. CW_USEDEFAULT,                      // 窗口最初的y位置  
  30. CW_USEDEFAULT,                      // 窗口最初的x大小  
  31. CW_USEDEFAULT,                        // 窗口最初的y大小  
  32. NULL,                                    // 父窗口句柄  
  33. NULL,                                   // 窗口菜单句柄  
  34. hInstance,                              // 应用程序实例句柄  
  35. NULL                                 // 创建窗口的参数  
  36. );  
  37. ShowWindow(hWndMain,nCmdShow);     // 显示窗口  
  38. UpdateWindow(hWndMain);              // 更新窗口,包括窗口的客户区  
  39. while(GetMessage(&msg,NULL,0,0))  
  40. {  
  41. TranslateMessage(&msg);            // 转换某些键盘消息  
  42. DispatchMessage(&msg);           // 将消息发送给窗口过程,这里是WndProc  
  43. }  
  44. return msg.wParam;  
  45. }  
  46. LRESULT CALLBACK  WndProc (HWND hwnd, UINT message,  
  47. WPARAM wParam, LPARAM lParam)  
  48. {  
  49. HDC hdc;  
  50. PAINTSTRUCT ps;  
  51. char *hello = "这是一个Windows模板程序!";  
  52. char Buffer[256];  
  53. int x, y;  
  54. switch(message)  
  55. {  
  56. case WM_PAINT:  
  57. hdc = BeginPaint(hwnd,&ps);  
  58. TextOut(hdc, 20, 10, hello, lstrlen(hello));  
  59. EndPaint(hwnd, &ps);  
  60. break;  
  61. case WM_CHAR:                        // 当获取某一个字符输入产生的消息  
  62. hdc = GetDC(hwnd);  
  63. sprintf(Buffer, "      ");  
  64. TextOut(hdc, 0, 0, Buffer, strlen(Buffer));  
  65. sprintf(Buffer, "%c", wParam);  
  66. TextOut(hdc, 0, 0, Buffer, strlen(Buffer));  
  67. ReleaseDC(hwnd,hdc);  
  68. break;  
  69. case  WM_LBUTTONDOWN:               // 按下鼠标左键产生的消息  
  70. hdc = GetDC(hwnd);  
  71. x = LOWORD(lParam);  
  72. y = HIWORD(lParam);  
  73. Ellipse(hdc, x-10, y-10, x+10, y+10);  
  74. break;  
  75. case WM_DESTROY:                       // 当窗口关闭时产生的原因  
  76. PostQuitMessage(0);              // 产生WM_QUIT消息  
  77. break;  
  78. default:                                // 执行默认的消息处理  
  79. return(DefWindowProc(hwnd, message, wParam, lParam));  
  80. }  
  81. return (0);  
【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.4 Windows应用程序举例(2) 下一篇2.3.4 设备描述表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: