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中產生相應...