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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Windows应用程序组成及编程步骤

發(fā)布時間:2024/2/2 综合教程 43 生活家
生活随笔 收集整理的這篇文章主要介紹了 Windows应用程序组成及编程步骤 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Windows應用程序組成及編程步驟:

1、應用程序的組成:
一個完整的Windows應用程序通常由五種類型的文件組成
1.C語言源程序文件
2.頭文件
3.模塊定義文件
4.資源描述文件
5.項目文件

2、源程序組成結構:
1.所有應用程序的入口,類似main函數(shù)
2.完成一系列的定義和初始化,并產生消息循環(huán)

Windows應用程序-> 入口函數(shù)WinMain,窗口函數(shù)WndProc->構成基本框架->
包含多種數(shù)據(jù)類型、數(shù)據(jù)結構與函數(shù)等。

/*WinMain和WndProc是Windows應用程序的主體*/
(1)WinMain函數(shù)
1.基本組成部分:函數(shù)說明、初始化和消息循環(huán)

2.功能:注冊窗口類,建立窗口及執(zhí)行必要的初始化
進入消息循環(huán),具接受的消息調用相應的處理過程
當消息循環(huán)檢索到WM_QUIT時終止程序

3.WinMain函數(shù)說明

 1 int WINAPI WinMain
 2 (
 3 HINSTANCE hThisInst,//應用程序當前實例句柄
 4 HINSTANCE hPrevInst,//應用程序其他實例句柄
 5 LPSTR lpszCmdLine,//指向程序命令行參數(shù)的指針
 6 int nCmdShow    //應用程序開始執(zhí)行時窗口顯示方式的整數(shù)值標識
 7 )
 8 {
 9 return 0;
10 }

注意!Windows是多任務管理的,同一應用程序的多個窗口可能會同時存在,
Windows系統(tǒng)對每個窗口的執(zhí)行稱為一個實例,并用一個實例句柄來唯一標識
(2)初始化
窗口類的定義:定義窗口類的形式與功能->LoadIcon/LoadCursor/GetStockObject
窗口類的注冊:窗口類必須先注冊后使用->RegisterClass
創(chuàng)建窗口實例:CreatWindow
顯示窗口:ShowWindow,UpdateWindow
(a)窗口類定義
通過給窗口類數(shù)據(jù)結構WNDCLASS賦值完成,該數(shù)據(jù)結構中包含窗口類的各種
屬性。窗口類定義常用以下函數(shù):
LoadIcon的作用是在應用程序中加載一個窗口圖標。其原型為:
HICON LoadIcon(HINSTANCE hInstance,LPCTSTR IpIconName)
第一個參數(shù):圖標資源所在的模塊句柄,NULL則使用系統(tǒng)預定義圖標
第二個參數(shù):圖標資源名或系統(tǒng)預定義圖標標識名

//窗口類定義
wndclass.style = 0;    //窗口類型為缺省類型
wndclass.IpfnWndProc = WndProc;    //定義窗口過程函數(shù)
wndclass.cbClsExtra = 0;    //窗口類無拓展
wndclass.cbWndExtra = 0;    //窗口實例無拓展
wndclass.hInstance = hinstance;    //當前實例句柄
wndclass.hIcon = LocadIcon(NULL,IDI_APPLICATION);//窗口的最小化圖標為缺省圖標
wndclass.hCursor = LocadCursor(NULL,IDC_ARROW);//窗口采用箭頭光標
wndclass.hbrBackground = GetStockObject(WHITE_BRUSH);//窗口背景為白色
wndclass.IpszMenuName = NULL;//窗口中無菜單
wndclass.IpszClassName = IpszClassName;//窗口類名為"窗口"

LoadCursor的作用是在應用程序中加載一個窗口光標
HCURSOR LoadCursor(HINSTANCE hInstance,LPCTSTR lpCursorName)
第一個參數(shù):光標資源所在的模塊句柄,NULL則使用系統(tǒng)預定義圖標
第二個參數(shù):光標資源名或系統(tǒng)預定義圖標標識名

應用程序調用函數(shù)GetStockObject獲取系統(tǒng)提供的背景刷
HBRUSH GetStockObject(int nBrush);

(b)注冊窗口類
Windows系統(tǒng)本身提供部分預定義的窗口類,程序員也可以自定義窗口類,
窗口類必須先注冊后使用。窗口了的注冊由函數(shù)
RegisterClass()實現(xiàn)。

RegisterClass(&wndclass);//wndclass為窗口類結構
RegisterClass函數(shù)返回為布爾值,注冊成功則返回真

(c)創(chuàng)建窗口實例
創(chuàng)建一個窗口類的實例由函數(shù)CreateWindow()實現(xiàn)

函數(shù)原型如下:

HWND CreateWindow
(
LPCTSTR lpszClassName,    //窗口類名
LPCTSTR lpszTitle,    //窗口標題名
DWORD dwStyle,    //創(chuàng)建窗口的樣式
int x,y,    //窗口左上角坐標
int nWidth,nHeight,    //窗口寬度和高度
HWND hwndParent,    //該窗口的父窗口句柄
HMENU hMenu,    //窗口主菜單句柄
HINSTACNCE hInstcane,    //創(chuàng)建窗口的應用程序當前句柄
LPVOID lpParam    //指向一個傳遞給窗口的參數(shù)值的指針
)

(d)顯示窗口
窗口類的顯示由ShowWindow和UpdateWindow函數(shù)實現(xiàn)。應用程序調用
ShowWindow函數(shù)在屏幕上顯示窗口
ShowWindow(hwnd,nCmdshow);//nCmdshow為窗口顯示形式標識
SW_HIDE 隱藏窗口
SW_SHOWNORMAL 顯示并激活窗口
SW_SHOWMINIMIZE 顯示并最小化窗口
SW_SHOWMAXMIZE 顯示并最大化窗口
SW_SHOWNOACTIVE 顯示但不激活窗口
SW_RESTORE 恢復窗口的原來位置及尺寸
顯示窗口后,應用程序調用UpdateWindow更新并繪制用戶區(qū),
并發(fā)出WM_PAINT消息。
UpdateWindow(hwnd);

(3)消息循環(huán)
Windows將產生的消息在WinMain函數(shù)中傳給窗口函數(shù)的相應過程處理
從消息隊列中讀取一條消息,并將消息放在MSG結構體中

消息循環(huán)的常見格式如下:

1 MSG Msg;
2 …
3 while (GetMessage (&Msg,NULL,0,0))
4 { 
5 TranslateMessage(&Msg);//將消息的虛擬鍵轉換為字符信息
6 DispatchMessage(&Msg); //將消息傳送到指定窗口函數(shù)
7 }

其中函數(shù)GetMessage形式為:
(返回零值,即檢索到WM_QUIT消息,程序結束循環(huán)并退出)

1 GetMessage
2 (lpMSG,    //指向MSG結構的指針
3 hwnd,
4 nMsgFilteMin, //用于消息過濾的最小消息號值
5 nMsgFilterMax //用于消息過濾的最大消息號值
6 )

總結

以上是生活随笔為你收集整理的Windows应用程序组成及编程步骤的全部內容,希望文章能夠幫你解決所遇到的問題。

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