|
|
sfLib類庫(kù)指南
你是否厭煩了mfc 的過(guò)度封裝,想修改增加功能很繁瑣。可是直接用winapi 編程,只能使用c語(yǔ)言,而且要熟悉winapi 的底層函數(shù),消息封裝等等。selfLib 類庫(kù)恰好解決了你的煩惱,sfLib 類庫(kù)直接簡(jiǎn)單的用c++封裝了winapi 。
用sfCracker.h文件提供windows消息的參數(shù) 轉(zhuǎn)換成c++數(shù)據(jù)的類型。
在sfWnd.h文件中,CWnd 類把全局的windows消息處理函數(shù)移到 你派生的 CWnd子類。
在窗口消息處理函數(shù) sfWndMsgProc 中把消息處理 轉(zhuǎn)移到CWnd 類的 OnWndMsg函數(shù),你需要在OnWndMsg函數(shù)中由自己決定,把哪些消息傳送給你的CWnd子類。傳送消息時(shí),可以根據(jù) sfCracker.h 中的宏定義,轉(zhuǎn)換函數(shù)參數(shù)。
sfWndMsgProc 窗口消息處理函數(shù)的工作過(guò)程如下:
在函數(shù)中,定義了一個(gè)映射表 CSimpleMap,函數(shù)正在處理的窗口句柄與CWnd 類指針的映射表。 還定義了 static CWnd* s_pCWndRcv 保存當(dāng)前處理的 CWnd 類。
使用CWnd 類的 Create 函數(shù)時(shí),先把CWnd 的this 指針傳給 sfWndMsgProc 函數(shù)中的靜態(tài)變量s_pCWndRcv, 然后在接受到第一個(gè)窗口句柄(hWnd)不是null的消息時(shí),以hWnd 為關(guān)鍵字 加入s_HWNDMap 映射表,在接收到后續(xù)的窗口消息都用該消息的窗口句柄(hWnd),在s_HWNDMap 映射表中查詢,得到 CWnd 類指針 pWnd,再調(diào)用 pWnd->OnWndMsg(),完成在 CWnd 子類中處理窗口消息。
使用sfLib 類庫(kù)的CWnd 創(chuàng)建窗口,首先建立你的窗口類(如 CMainWnd),派生于 CWnd 類,添加你需要的變量、函數(shù),比如在 Create 函數(shù)在定義自己窗口的類型,標(biāo)題,樣式等等,然后在OnWndMsg 函數(shù)在接受窗口消息,并且分發(fā)到各自的處理函數(shù)。
vs2008 (及以上版本 )中使用sfLib
一,創(chuàng)建一個(gè) hello world 程序
1.啟動(dòng) vs2008,新建 clr 空項(xiàng)目
2,項(xiàng)目名 helloworld,保存在 d:\mydoc\vs28proj\hellwd 文件夾
3,復(fù)制 sfLib\sample\helloworld 文件夾的 mainWnd.h 和 main.cpp 兩個(gè)文件,
粘貼到 項(xiàng)目文件夾 d:\mydoc\vs28proj\hellwd。
4.項(xiàng)目中添加文件,vs 菜單 項(xiàng)目-> 添加現(xiàn)有項(xiàng),
彈出的瀏覽窗口,選擇剛才粘貼的 mainWnd.h 和 main.cpp 兩個(gè)文件,點(diǎn)擊 添加。
5,項(xiàng)目 設(shè)置 附加包含目錄,點(diǎn)擊vs菜單 項(xiàng)目->屬性,在屬性頁(yè) 左邊 點(diǎn)擊 配置屬性,
在右邊的 附加包含目錄 設(shè)置成 sfLib 所在的目錄,如 d:\sfLib
6, 生成 exe 文件,運(yùn)行 則可出現(xiàn)一個(gè) 窗口,中央有 hello world! 文字。
vs 中 查看mainWnd.h, 可以看到 從 sfLib 的CWnd 類,派生了 CMainWnd 類,類內(nèi)
Create 方法,調(diào)用 create 可以 注冊(cè)創(chuàng)建一個(gè)窗口,標(biāo)題 是 mainwnd,
OnWndMsg 函數(shù) 接收 windows 消息,但是只 分發(fā)了 WM_PAINT WM_CREATE 兩個(gè)消息,分別 由 OnPaint OnCreate 方法處理。你可以 添加分發(fā)windows 消息, 形式 CASE_MSG( WM_XXXX,函數(shù)名)
mainWnd.h 中 OnCreate 方法 什么都沒(méi)做,直接返回 1,你可以在OnCreate 中創(chuàng)建窗口。
在 OnPaint中 畫(huà) hello world! 文字。
查看main.cpp ,在 程序一啟動(dòng)就執(zhí)行的主函數(shù) wWinMain ,定義了一個(gè) CMainWnd 類的
實(shí)例,并調(diào)用 Create 方法,還用 windows 標(biāo)準(zhǔn)做法,接收分發(fā) windows 消息。
|
評(píng)分
-
查看全部評(píng)分
|