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程式設計的原理做些了解,正好有朋友推薦了這本書,就拿來看看。僅僅是粗略看了看,就對自己以前的知識有些汗了。本書分為五大部分,必備知識 工作機理 記憶體管理 動態鏈結庫及結構化異常處...