日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Windows程序设计学习笔记(1):一个简单的windows程序

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows程序设计学习笔记(1):一个简单的windows程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《Windows程序設計》(第五版)(美Charles Petzold著)

 1 #include<windows.h>
 2 
 3 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
 4 
 5 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdline,int iCmdShow) 
 6 //第一個參數是實例句柄,在Windows程序中,句柄就是一個數值,程序里用它來標志某些東西
 7 //第三個參數是用來運行程序的命令行
 8 //第四個參數用來指明程序最初如何顯示:正常顯示、最大化到全屏、最小化到任務欄
 9 {
10     static TCHAR szAppName[]=TEXT("HelloWin");
11     HWND hwnd;    //窗口句柄
12     MSG msg;    //消息結構
13     WNDCLASS wndclass;    //窗口類結構
14 
15     wndclass.style=CS_HREDRAW | CS_VREDRAW;
16     wndclass.lpfnWndProc = WndProc; //將窗口類的過程設為WndProc函數
17     wndclass.cbClsExtra=0;
18     wndclass.cbWndExtra=0; //這兩行用于在類結構和Windows內部維護的窗口結構中預留額外的空間
19     wndclass.hInstance=hInstance; //應用程序的實例句柄
20     wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //為所有基于該窗口類的窗口設定一個圖標
21     wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); //載入一個預定義的鼠標指針
22     wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //為這類窗口的客戶區指定背景顏色
23     wndclass.lpszMenuName=NULL; //指定窗口類的菜單
24     wndclass.lpszClassName=szAppName; //為窗口類指定一個名稱
25 
26     if(!RegisterClass(&wndclass)) //RegisterClass(&wndclass)窗口類注冊
27     {
28         MessageBox(NULL,TEXT("This program requares Windows NT"),szAppName,MB_ICONERROR);
29         return 0;
30     } 
31 
32     hwnd=CreateWindow(szAppName, //創建窗口類 窗口類名稱
33             TEXT("The Hello Program"), //窗口標題
34             WS_OVERLAPPEDWINDOW, //風格
35             CW_USEDEFAULT, //初始x坐標
36             CW_USEDEFAULT, //初始y坐標
37             CW_USEDEFAULT, //初始x方向尺寸
38             CW_USEDEFAULT, //初始y方向尺寸
39             NULL, //父窗口句柄
40             NULL, //窗口菜單句柄
41             hInstance, //程序實例句柄
42             NULL); //創建參數
43     ShowWindow(hwnd,iCmdShow); //顯示窗口
44     UpdateWindow(hwnd); //重繪窗口
45     while(GetMessage(&msg,NULL,0,0))//消息循環,GetMessage函數用于從消息隊列中對消息進行檢索,此調用將一個指向名稱為msg的MSG結構變量的指針傳給Windows
46     {
47         Translate(&msg); //將msg結構返還給Windows以進行某些鍵盤消息的轉換
48         DispatchMessage(&msg); //將msg結構再次返回給Windows,接下來,Windows會將這條消息發送給合適的窗口過程來處理
49     }
50     return msg.wParam;
51 }
52 
53 LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
54 {
55     HDC hdc; //設備環境句柄
56     PAINTSTRUCT ps; //繪制結構
57     RECT rect; //矩形結構
58    
59     switch(message) //消息處理
60     {
61     case WM_VREATE:
62         return 0;
63     case WM_PAINT: //當窗口客戶區的部分或全部無效且必須更新時應用程序將收到此通知
64         hdc=BeginPaint(hwnd,&ps); //幾乎總是從BeginPaint開始
65         GetClientRect(hwnd,&rect);
66         DrawText(hdc,TEXT("Hello,Windows 10!"),-1,&rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER); //繪制文本
67         EndPaint(hwnd,&ps);
68     case WM_DESTROY: //銷毀窗口
69        PostQuitMessage(0);
70        return 0;
71     }
72     return DefWindowProc(hwnd,message,wParam,lParam); //對所有窗口過程沒有處理的消息進行默認處理
73 }

?

轉載于:https://www.cnblogs.com/Toya/p/11193477.html

總結

以上是生活随笔為你收集整理的Windows程序设计学习笔记(1):一个简单的windows程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。