Windows程式設計5 MDI 庫程式 檔案

2022-08-25 18:42:22 字數 3811 閱讀 4734

1、 多文件介面(mdi)

mdi的組成

mdi主視窗(主框架視窗

mainframe

)mdi客戶視窗(

mdiclient

)mdi 子視窗

1mdi 子視窗

2建立過程

1)建立

mdi主視窗

a) 沒有父視窗,需要註冊視窗類,定義視窗過程函式

b) mdi主視窗的視窗過程函式,不再呼叫

defwindowproc

。代之以呼叫

defframproc

。lresult   defframeproc(

hwnd  hwnd,           // handle to mdi frame window

hwnd  hwndmdiclient,  // handle to mdi client window

uint  umsg,           // message

wparam  wparam,       // first message parameter

lparam  lparam        // second message parameter

2) 建立

mdi客戶視窗

a. 視窗類:

mdi主視窗

b.父視窗是

mdi主視窗

c.建立時需要使用

clientcreatruct

結構,指定

mdi子視窗的起始id。

3)建立

mdi子視窗

a. 父視窗是

mdi客戶視窗

b.所有的

mdi子視窗都需要註冊並定義視窗過程函式

c.mdi

子視窗的視窗函式過程函式,不再呼叫

defwindproc

。代之以呼叫

defmdichildproc

。4)相關函式

:drawmenubar(hwnd hwnd);//重繪指定視窗選單欄,用於切換多文件時重新整理重繪相應選單欄。

enumchildwindows();//列舉指定視窗的所有子視窗執行

lpenumfunc

**函式。

bool  enumchildwindows(

hwnd   hwndparent,         // handle to parent window

wndenumproc  lpenumfunc,  // pointer to callback function

setwindowlong/ getwindowlong;

iswindow;等等

5)訊息相關

:wm_mdiactivate

wm_mdidestroy

wm_mdigetactive

wm_mdicascade

wm_mditile

wm_mdiiconarrange

2、 windows庫程式

1. 分類:

靜態庫程式 - 執行時不依賴,在鏈結階段會被鏈結到可執行檔案或者動態庫中,本質是目標檔案程式的歸檔。副檔名:

lib。

動態庫程式 - 執行時依賴,在鏈結階段不會被複製到可執行檔案或其他動態庫中。副檔名:

dll。

靜態庫程式

所有的win32函式都沒有靜態庫版本,但標準

c/c++

函式既有靜態庫也有動態庫版本。可以在工程選項中配置。

c語言靜態庫

1.靜態庫的使用

建立乙個c檔案,可以在檔案中直接使用

c庫函式,不需要標頭檔案。

c編譯器只是根據庫函式名稱,在庫中找到對應的函式**,進行鏈結。

2.靜態庫的建立

1)建專案

2)新增庫程式

(),編寫原始檔**使用c檔案

3.鏈結靜態庫的路徑設定

法1)專案的「project/ setting」中設定庫的路徑

法2)可以使用

pragma

關鍵字設定#pragma comment( lib, "..\\lib\\clib.lib")(指定路徑

)c++語言的靜態庫

1. 靜態庫的建立

1)建立專案

2)新增庫程式,原始檔使用

cpp檔案

2. 庫的匯入

1)專案的「setting」中設定庫的路徑

2)可以使用 pragma 關鍵字設定

3. 注意

在cpp環境使用

c靜態庫,庫中函式原型定義要增加 extern 「c」, 例如:

extern "c" int add(... ); extern 「c」 .

等。防止

c++編譯器對

c語言庫函式做換名,使得採用

c下的函式原型,正確呼叫

c庫函式。

c中使用

c++庫時,需要在

c++庫編譯時,對

extern 「c」 用

c++編譯器巨集

#ifdef _ _cplusplus

來處理(由於

c語言中無法識別 extern "c"  串。)

。使得可對c編譯器與

c++編譯器公用。

如:#ifdef  __cplusplus  

extern "c"  filetime;

另外可用filetimetosystemtime轉化為系統時間,

bool filetimetosystemtime(

const filetime *lpfiletime,//轉變的檔案時間

lpsystemtime lpsystemtime,// 接收的系統時間

systemtime(結構體):見msdn

設定檔案屬性:

bool    setfileattributes(

lpctstr    lpfilename,      // 檔名

dword    dwfileattributes   //設定檔案屬性,可組合設定

);///成功返回

true

,失敗返回

false

。增加檔案屬性:獲取原檔案屬性,與需要增加的屬性做位或,再設定回去。

刪除檔案屬性:獲取原檔案屬性,與需要刪除的屬性取反且位與,再設定回去。

9) 檔案查詢

handle   findfirstfile(

lpctstr    lpfilename, //查詢路徑

lpwin32_find_data    lpfindfiledata  //查詢的資料

);  //返回查詢控制代碼,此控制代碼可用於

findnextfile,findclose,

失敗返回invalid_handle_value 。

引數說明:lpwin32_find_data(結構體

),儲存查詢檔案或子目錄的資料

typedef  struct _win32_find_data win32_find_data;

10) 獲取下乙個檔案

bool    findnextfile(

handle   hfindfile, //查詢控制代碼,由

lpwin32_find_data   lpfindfiledata //查詢的資料

); //找到返回

true

,失敗返回

false

。,查詢基於檔名

11) 關閉查詢

bool findclose (

handle  hfindfile  // 查詢控制代碼

);//成功返回

true

,失敗返回

false

Windows 動態鏈結庫程式設計

windows 動態鏈結庫程式設計 1 介紹 windows作業系統是應用最關的作業系統,因此動態鏈結庫也為程式設計師所熟悉,即使對於普通的使用者來說,很多時候也會碰到.dll結尾的檔案,這就是動態鏈結庫檔案。windows下的動態鏈結庫可以通過參考標頭檔案和.lib庫檔案進行編譯,從而使得動態鏈結...

Oracle資料庫程式設計 開發PL SQL子程式和包

7 開發pl sql子程式和包 子程式 執行時是編譯而不是執行,要呼叫才會有結果。子程式分為過程 store procedure 和函式 function 儲存到資料庫中,直屬與庫。dml增 刪 改用過程,計算用函式。過程 沒有返回值。create or replace procedure sp t...

書籍點評 windows核心程式設計 第5版

說句老實話,很久沒碰c 的書了,畢竟自己的本行是c 最近在windows的應用程式上開發碰上了點問題,想對windows程式設計的原理做些了解,正好有朋友推薦了這本書,就拿來看看。僅僅是粗略看了看,就對自己以前的知識有些汗了。本書分為五大部分,必備知識 工作機理 記憶體管理 動態鏈結庫及結構化異常處...