Windows應用程式執行機制(筆記)

2021-06-29 12:06:54 字數 2214 閱讀 3301

windows應用程式:以

windows

作為平台執行的應用程式。

api函式

api函式:

windows

提供了大量可以在應用程式中呼叫的,用

c語言編寫的函式。

windows api 函式的功能如下:

1.視窗管理函式:實現視窗的建立、移動和修改等功能。

2.圖形裝置函式:實現圖形的繪製及操作功能,這型別函式的集合又叫做圖形裝置介面。

3.系統服務函式:實現與作業系統有關的一些功能。

視窗與控制代碼

在windows

應用程式中,視窗是通過視窗控制代碼(

hwnd)

來標識的;要對某個視窗進行操作,就必須要得到這個視窗的控制代碼。

控制代碼:乙個控制代碼是指使用的乙個唯一的整數值,即乙個4

位元組(64

位程式中為8位元組

)長的數值,來標識

應用程式中的不同物件和同類物件中的不同的例項,諸如,乙個視窗,按鈕,圖示,滾動條,輸出裝置,控制項或者檔案等。

訊息及訊息迴圈

windows應用程式在程式啟動並建立了程式視窗之後,隨即就進入了乙個迴圈等待狀態,直到獲取某個訊息。系統為每個應用程式都建立了乙個叫做訊息佇列的儲存空間,在程式的執行過程中如果發生了乙個事件,

windows

就會把這個事件所對應的訊息送人訊息佇列等待使用。應用程式可以通過呼叫

windows

提供的api

函式從訊息佇列中獲取訊息。一旦獲取訊息,就把這個訊息發給系統,系統會根據訊息中的

hwnd

找到應該接收訊息的程式視窗,並根據視窗提供資訊,以訊息為引數來呼叫乙個使用者編寫的叫做」視窗函式「的函式在視窗函式中對訊息進行處理。處理完畢後,立即返回訊息迴圈,等待獲取下乙個訊息。

windows程式設計是一種事件驅動模式的程式設計,主要是基於訊息的。

windows

應用程式必須接受了訊息才會啟動某種操作。當使用者想要完成某種功能時,會呼叫作業系統的某種支援。然後作業系統將使用者的需要包裝成訊息,並投遞到訊息佇列當中,最後,應用程式從訊息佇列中取走訊息,並進行響應。

windows應用程式的基本結構

乙個windows

程式一般由標頭檔案、原始檔。動態鏈結庫、資源等幾部分組成。

#include//編寫windows程式必須要包含的標頭檔案

lresult callback wndproc(hwnd hwnd,//派送訊息的視窗控制代碼

uint message,//系統傳遞來的訊息標示

wparam wparam,//訊息的附加引數

lparam lparam)//訊息的附加引數

break;

case wm_destroy:

postquitmessage(0);

//投放乙個wm_quit訊息到訊息佇列中函式引數將做為

//wm_quit的wparam一般用做winmain函式的返回值,

//getmessage接到wm_quit訊息時返回0訊息迴圈結束程式退出。

break;

default:

return defwindowproc(hwnd,message,wparam,lparam);

//此函式呼叫預設視窗過程,對應用程式沒有處理的訊息進

//行預設處理。在編寫視窗過程時一般放在default裡 }}

//主函式

int winapi winmain(hinstance hinstance,//當前應用程式例項的控制代碼

hinstance preinstance,//前乙個應用程式例項的控制代碼,

//在win32環境下,這個引數總是null

lpstr lpcmdline,//指向本程式命令列的指標

int ncmdshow)//決定應用程式視窗顯示方式的標誌

return msg.wparam;//winmain函式結束時,通過return返回乙個值給系統。

來自一條表示退出的訊息,返回這個值給系統,從而退出。

//類似於 return 0 ;只是這裡這個值不一定也是0,具體取決於是什麼訊息。

}

參考:

Windows程式內部執行機制

2 sdk software development kit 軟體開發包 3 常用控制代碼 視窗控制代碼 hwnd 位圖控制代碼 hbitmap 圖示控制代碼 hicon 選單控制代碼 hmenu 檔案控制代碼 hfile 當前例項控制代碼 hinstance 全域性記憶體物件控制代碼 hgloba...

Windows程式內部執行機制

我們在寫c程式的時候會呼叫各種庫函式來輔助完成某些功能,例如printf,這就是api,windows作業系統提供了1000多種api函式。軟體開發包 software development kit 假如我們要開發呼叫中心,在購買語音卡的同時,廠商就會提供語音卡的sdk開發包,以方便我們對語音卡的...

Spark Spark應用執行機制

sparkcontext spark 應用程式的入口,負責排程各個運算資源,協調各個 worker node 上的 executor rdd的action運算元觸發job的提交,提交到spark中的job生成rdd dag,由dagscheduler轉化為stage dag,每個stage中產生相應...