Windows01 內部機制初步認識

2021-09-24 12:26:39 字數 2043 閱讀 8390

2019獨角獸企業重金招聘python工程師標準》

sdk,software development kit,就是軟體開發包。windows sdk包括api函式、幫助文件、輔助工具等等。

windows本來直譯就是很多視窗,所以可見視窗的重要性。windows系統中,視窗是乙個互動的工具,接受使用者的輸入,顯示輸出。

視窗可以分為客戶區和非客戶區。我們用的部分就是客戶區;系統自帶的比如標題、選單、最大最小化等等就是非客戶區。

視窗也有父子之分,還有模態和非模態之分。模態就是子視窗不動,父視窗可以動,比如qq聊天視窗和好友列表視窗,兩者有互動但是互不影響。非模態就是子視窗必須處理完才能處理父視窗,比如警告。

視窗的表示就是控制代碼(hwnd),可以理解為,你把書用繩子捆起來,就會比較好提。控制代碼就是把視窗、圖示等等資源捆起來,然後打個結,做個標記。系統就按著你這個標記給你分配記憶體什麼的。

有人也許會問,傳遞首位址不可以麼?可以!但是會暴露記憶體位址,不安全。所以作業系統會有個對映表(控制代碼表),將位址和標記對應,很巧,這就是控制代碼。

常見控制代碼分類:

我們可以將作業系統比喻成賣冰淇淋的,然後有很多孩子想吃,就排隊,還排成乙個圈,迴圈吃。這些孩子就是訊息,這個隊伍就是訊息佇列。會一直迴圈,然後作業系統就依次處理。然後訊息對應著事件,當輪到這個訊息的時候,作業系統就會處理對應的事件。這個隊伍可以不斷有孩子插隊和離開。

//msg結構體:

typedef struct tagmsg msg;

訊息分類:訊息對映:1、訊息和訊息處理函式。

2、sdk是遍歷判斷,mfc是訊息對映,會快很多。(sdk程式設計是ifelse判斷,mfc直接是switch)

windows訊息分類:

系統訊息:wm_command等,id區分的訊息,通知訊息(視窗之間的傳遞)。

自定義訊息:巨集,值應該大於等於wm_user。

具體實現:函式宣告—>訊息對映入口—>訊息處理函式

1.在類定義中加入訊息處理函式的函式宣告,注意要以afx_msg打頭。2.在類的訊息對映表中新增該訊息的訊息對映入口項。

//on_notify是控制項向其父視窗傳送訊息處理的巨集

//on_command是選單和工具欄項處理訊息的巨集

//on_message是處理自定義訊息的巨集。

on_command(id_view_customize, &cmainframe::onviewcustomize);//訊息id,訊息處理函式

on_notify(wnotifycode,id,memberfxn) //訊息通知碼,控制項id,訊息處理函式

//on_message看下方的自定義訊息

如果想要使用某個處理函式批量處理某些命令訊息,則可以像cmainframe訊息對映表中的

3.在類實現中新增訊息處理函式的函式實現。

例如,mainfrm.cpp中wm_create的訊息處理函式的實現:

int cmainframe::oncreate(lpcreatestruct lpcreatestruct)

如果需要使用使用者自定義訊息:

首先要定義訊息巨集,如:#define wm_update_wnd (wm_user+1);

再到訊息對映表中新增訊息對映入口項:on_message(wm_update_wnd, &cmainframe::onupdatewnd);

然後在mainfrm.h中新增訊息處理函式的函式宣告:afx_msg lresult onupdatewnd(wparam wparam, lparam lparam);

最後在mainfrm.cpp中實現此函式。

Windows 程式內部執行原理

2.應用程式 作業系統 計算機裝置硬體互動 windows程式設計完全是基於訊息的事件驅動模式 使用者需要完成某種功能,會呼叫os 某種支援,os將使用者的需要包裝成訊息,投遞到應用程式訊息對列中,應用程式從訊息對列取走訊息,做出響應 os感知裝置的變化 如滑鼠移動,鍵盤按下,並知道具體資訊 表示o...

Windows程式內部機制(下)

include includelresult callback winsunproc hwnd hwnd,uint umsg,wparam wparam,lparam lparam int winapi winmain hinstance hinstance,hinstance hprevinsta...

微控制器01

1 什麼是微控制器一台能夠工作的計算機要有這樣幾個部份構成 cpu 進行運算 控制 ram 資料儲存 rom 程式儲存 輸入 輸出裝置 例如 序列口 並行輸出口等 在個人計算機上這些部份被分成若干塊晶元,安裝乙個稱之為主機板的印刷線路板上。而在微控制器中,這些部份,全部被做到一塊積體電路晶元中了,所...