我們在寫c程式的時候會呼叫各種庫函式來輔助完成某些功能,例如printf,這就是api,windows作業系統提供了1000多種api函式。
軟體開發包(software development kit)
假如我們要開發呼叫中心,在購買語音卡的同時,廠商就會提供語音卡的sdk開發包,以方便我們對語音卡的程式設計操作,這個開發包通常會包含語音卡的api函式庫、幫助文件、使用手冊、輔助工具等資源。
api和sdk是一種廣泛使用的專業術語,並沒有專指某一種特定的api和sdk。乙個windows應用程式至少有乙個視窗,稱為主視窗,接收使用者輸入,顯示輸出。視窗分為客戶區和非客戶區,客戶區中顯示文字或繪製圖形,非客戶區指標題欄、選單欄、系統選單、最小化框、最大化框等,他們由windows系統來管理。應用程式主要管理客戶區的外觀和操作。
在windows應用程式中,視窗時通過視窗控制代碼(hwnd)來標識的。我們要對某個視窗進行操作,首先要得到這個視窗的控制代碼。
控制代碼(handle),在windows程式中,系統在建立視窗、圖示、游標等資源的時候會為他們分配記憶體,並返回標識這些資源的標識號,即控制代碼。
視窗控制代碼(hwnd)
圖示控制代碼(hicon)
游標控制代碼(hcursor)
畫刷控制代碼(hbrush)
windows程式設計是一種事件驅動方式的程式設計模式,主要是基於訊息的。例如,當使用者在畫圖的時候,按下滑鼠左鍵,此時,作業系統會感知到這一事件,於是將這個事件包裝成乙個訊息,投遞到應用程式的訊息佇列中,然後應用程式從訊息佇列中取出訊息並進行響應。在這個處理過程中,作業系統也會給應用程式「傳送訊息」,即作業系統呼叫程式中乙個專門負責處理訊息的函式,這個函式稱為視窗過程。
typedef struct tagmsg msg;
每乙個windows應用程式在開始執行後,系統都會為該程式建立乙個訊息佇列,這個訊息佇列用來存放該程式建立的視窗訊息。
windows將產生的訊息依次放入訊息佇列中,而應用程式則通過乙個訊息迴圈不斷的從訊息佇列中取出訊息,並進行響應。
進隊的訊息將由系統放入應用程式的訊息佇列中,由應用程式取出並傳送。
不進隊的訊息在系統呼叫視窗過程時直接傳送給視窗
winmain函式是windows程式的入口點函式,與dos程式的入口函式main的作用相同,當winmain函式結束或者返回時,windows應用程式結束。
1.建立視窗
設計乙個視窗類
註冊視窗類
建立視窗
顯示及更新視窗
2.訊息迴圈用於處理傳送給視窗的訊息。
```cpp
#include #include lresult callback winmyproc(
hwnd hwnd,//視窗控制代碼
uint umsg,//訊息識別符號
wparam wparam,//訊息的附加資訊wparam 型別為unsigned int
lparam lparam//訊息的附加資訊lparam 型別為long
);int winapi winmain(
hinstance hinstance,//程式當前執行的例項的控制代碼,這是乙個數值
hinstance hprevinstance,//當前例項的前乙個例項的控制代碼,在win32環境下,這個引數總為null
lpstr lpcmdline,//指定傳遞給應用程式的命令列引數,是乙個以空終止的字串
int ncmdline//指定程式的視窗應該如何顯示,最大化、最小化、隱藏等,一般不需要去理會
) return msg.wparam;
}//編寫視窗過程函式
lresult callback winmyproc(hwnd hwnd, uint umsg, wparam wparam, lparam lparam)
break;
case wm_destroy:
postquitmessage(0);
break;
default:
return defwindowproc(hwnd, umsg, wparam, lparam);
} return 0;
}
Windows程式內部執行機制
2 sdk software development kit 軟體開發包 3 常用控制代碼 視窗控制代碼 hwnd 位圖控制代碼 hbitmap 圖示控制代碼 hicon 選單控制代碼 hmenu 檔案控制代碼 hfile 當前例項控制代碼 hinstance 全域性記憶體物件控制代碼 hgloba...
Windows應用程式執行機制(筆記)
windows應用程式 以 windows 作為平台執行的應用程式。api函式 api函式 windows 提供了大量可以在應用程式中呼叫的,用 c語言編寫的函式。windows api 函式的功能如下 1.視窗管理函式 實現視窗的建立 移動和修改等功能。2.圖形裝置函式 實現圖形的繪製及操作功能,...
HelloWorld 程式執行機制
1.隨便新建乙個資料夾,存放 新建乙個j a檔案檔案字尾名為.j a helloworld.j a 注意點 系統可能沒有顯示檔案字尾名,我們需要手動開啟3.編寫 public class helloworld 4.編譯j ac j a檔案,會生成乙個class檔案 5執行class檔案,j a cl...