⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo6_1b.c

📁 WINDOWS图形编程随书光盘
💻 C
字号:
  1 /****************************************************************/
  2 /*         Demo6_1b  ---  Play MetaFile                         */
  3 /****************************************************************/
  4 
  5 #include <windows.h>
  6 #include "demo6_1b.h"
  7 
  8 int  PASCAL  WinMain(HANDLE, HANDLE, LPSTR, int);
  9 long FAR PASCAL MainWndProc(HWND, unsigned, WORD, LONG);
 10 
 11 
 12 /****************************************************************/
 13 /*                      WinMain()                               */
 14 /****************************************************************/
 15 
 16 int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
 17                    LPSTR lpszCmdLine, int nCmdShow)
 18 {
 19    WNDCLASS wclass;
 20    MSG      msg;
 21    HWND     hWnd;
 22    char     szName[] = "Demo6_1b";
 23 
 24    if (!hPrevInstance)
 25     {
 26         wclass.style         = CS_HREDRAW | CS_VREDRAW;
 27         wclass.lpfnWndProc   = MainWndProc;
 28         wclass.cbClsExtra    = 0;
 29         wclass.cbWndExtra    = 0;
 30         wclass.hInstance     = hInstance;
 31         wclass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
 32         wclass.hCursor       = LoadCursor(NULL, IDC_ARROW);
 33         wclass.hbrBackground = GetStockObject(WHITE_BRUSH);
 34         wclass.lpszMenuName  = szName;
 35         wclass.lpszClassName = szName;
 36 
 37         if (!RegisterClass (&wclass))
 38            return (FALSE);
 39     }
 40 
 41     hWnd = CreateWindow(
 42                 szName,
 43                 "Play MetaFile",
 44                 WS_OVERLAPPEDWINDOW,
 45                 CW_USEDEFAULT,
 46                 CW_USEDEFAULT,
 47                 CW_USEDEFAULT,
 48                 CW_USEDEFAULT,
 49                 NULL,
 50                 NULL,
 51                 hInstance,
 52                 NULL );
 53 
 54     if (!hWnd)
 55         return (FALSE);
 56 
 57     ShowWindow(hWnd, nCmdShow);
 58     UpdateWindow(hWnd);
 59 
 60     while (GetMessage(&msg, NULL, NULL,NULL))
 61        {
 62            TranslateMessage(&msg);
 63            DispatchMessage(&msg);
 64        }
 65     return (msg.wParam);
 66 }
 67 
 68 
 69 
 70 /****************************************************************/
 71 /*                      MainWndProc()                           */
 72 /****************************************************************/
 73 
 74 long FAR PASCAL MainWndProc(HWND hWnd, unsigned message,
 75                             WORD wParam, LONG lParam)
 76 {
 77    PAINTSTRUCT   ps;
 78    HDC           hDC;
 79    static HANDLE hMF;
 80    char          Filename[] = "demo6_1.mf";
 81 
 82    switch (message)
 83     {
 84         case WM_CREATE :
 85                 srand(LOWORD(GetCurrentTime()));
 86                 hMF = GetMetaFile(Filename);
 87                 if (hMF == 0)
 88                   {
 89                      char  Str[100];
 90 
 91                      sprintf(Str, "File %s not found !",
 92                                   Filename);
 93                      MessageBox(hWnd,
 94                                 Str,
 95                                 NULL,
 96                                 MB_OK | MB_ICONHAND);
 97                      DestroyWindow(hWnd);
 98                   }
 99                 return (0);
100 
101         case WM_COMMAND :
102                 switch(wParam)
103                   {
104                     case IDM_EXIT :
105                          DestroyWindow (hWnd);
106                          break;
107 
108                     case IDM_DRAW :
109                          InvalidateRect(hWnd, NULL, TRUE);
110                          break;
111                   }
112                 return (0);
113 
114       case WM_PAINT :
115             hDC = BeginPaint(hWnd, &ps);
116 
117             PlayMetaFile(hDC, hMF);
118 
119             EndPaint(hWnd, &ps);
120             return (0);
121 
122       case WM_DESTROY :
123                 DeleteMetaFile(hMF);
124                 unlink(Filename);
125                 PostQuitMessage(0);
126                 return (0);
127 
128       default :
129          return (DefWindowProc(hWnd, message, wParam, lParam));
130     }
131 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -