當前位置:編程學習大全網 - 人物素材 - 如何用純Win32 SDK編寫GUI程序

如何用純Win32 SDK編寫GUI程序

因此不會對壹些基礎的知識作過多的講解。如果大家有需要,我在就某些細節作進壹步的解釋。編寫Windows下面的GUI程序,比較有影響力的就是MS的Visual Studio系列和Borland的BCB系列。BCB需要在程序發布的時候,多帶壹些borland提供的庫,比較的麻煩。所以我很少用。如果用VS系列來編寫GUI程序,主要有兩個方式,第壹就是用微軟提供的MFC來作,第二就是用純的Win32 SDK來編寫GUI程序。眾所周知的原因,MFC對Win32 SDK的包裝比較的失敗,不如BCB那樣的流暢,有時候妳很難在程序中發揮自己的思路,因此,我壹般就是用純的Win32 SDK來編寫GUI程序,而不用晦澀的MFC,因為用MFC,妳不僅僅要知道Win32 SDK,還需要查詢MFC的壹些技巧,實在得不償失。用Win32 SDK編寫GUI的難處在於,有時候妳需要為了壹個簡單的事情而查詢很多的資料與SDK文檔。但是妳得到的卻是對Windows系統的透徹理解和程序運行的高效,輕量化。因為用Win32 SDK需要的庫都是內含在每壹個Windows系統中的。理論上來說,只要是Windows系統,妳的程序就可以正確無誤的運行。下面就我最近編寫Windows GUI程序的碰到的壹些問題壹壹說明。首先,看壹下程序的最終運行效果圖(我的編譯器是VC6): 1 用VC6的Win32程序搭好框架之後,就添加自己的模式對話框,碰到的第壹個問題就是如何設置Radio控件(有的中文書翻譯為 單選按鈕)的初始狀態和查詢最終的結果。經過壹番努力查詢Win32 SDK之後,標準答案如下:設置Radio的初始狀態:BOOL CheckDlgButton(HWNDhDlg,int nlDButton,UINT uCheck);獲得Radio控件的最終狀態:UINT IsDlgButtonChecked(HWND hDlg,Int nlDBUtton);2 如何處理slider control(中文叫做滑竿控件)的相關事件。slider control,其實和上面的那個簡單的radio control還是有本質的區別的。radio control是內含在windows的壹般庫裏面的。不需要特別的庫的支持,而slider control(英文也叫track bar)是需要COMCTL32.lib的支持,要用這個slider control,妳需要作三個動作。a 在源文件裏面加入COMCTL32.lib的引用。b 在頭文件裏面加入對commctl.h的聲明,壹般加到stdafx.h即可。#include // Add by liuzhi.

c 在程序裏面,需要加入使用common control的宏:InitCommonControls();否則,程序會閃壹下就會退出的。因為程序沒有申請到該有的資源。 加入對slider control的聲明後。需要處理slider control的壹些事件。這是需要特別註意的是,slider control不像radio control那樣子直接用SDK API就可以處理了。需要特殊的消息機制,下面壹壹道來:2.1 獲得控件的窗口句柄。slider control也是壹個窗口,是對話框的子窗口,因此,要用GetDlgItem來實現:backlight_wnd = GetDlgItem(hDlg, IDC_SLIDER_BACKLIGHT);2.2 設置slider control的區間,是給slider control發TBM_SETRANGE消息,比如我設置0到100就是:SendMessage(backlight_wnd,TBM_SETRANGE, (WPARAM)1,(LPARAM)MAKELONG(0,100));2.3 設置滑塊的初始位置是發送TBM_SETPOS消息來實現的: SendMessage(backlight_wnd,TBM_SETPOS, (WPARAM)1,(LPARAM)BacklightPercentage);

2.4 slider control和用戶的交互,則是通過WM_HSCROLL消息來實現的,需要在WM_HSCROLL的響應函數裏面發送TBM_GETPOS消息得到當前滑塊的位置:BacklightPercentage = (unsigned char)SendMessage(backlight_wnd,TBM_GETPOS,0,0);2.5 旁邊的壹個當前刻度的數字的說明,需要先設定壹個Static text文本控件,然後動態給該控件發送WM_SETTEXT消息來實現動態的更新數字:SendMessage(GetDlgItem(hDlg, IDC_STATIC_BACKLIGHT_VALUE), WM_SETTEXT, 0, LPARAM(szBacklightPercentage));最後面的那個參數,szBacklightPercentage是壹個字符串。3 如何在對話框裏面顯示圖標或者圖片:如果程序沒有圖片,總是顯得十分的死板,因此,在程序上面顯示圖片,圖標是必要的美化程序的方法。網上關於程序顯示圖片的說明也很多。但是都比較的復雜。如果僅僅顯示靜態的圖標,其實不用那麽復雜的。3.1 需要好的icon素材。漂亮的icon素材就如程序的臉蛋壹樣。是必須的,要得到好的icon素材,第壹是到網上“淘寶”。看看能不能找到妳滿意的。另外也有搜索自己電腦上漂亮圖標的工具。因為windows自己也提供了很多的圖標資源。這裏推薦壹個叫做 IconExtract 的小軟件。大家可以網上下載,它可以很方便的把本地的圖標都挖出來。壹般情況下,夠我們用的了。找好自己喜歡的圖標之後,記得在資源裏面的icon項目下引用進來。3.2 顯示圖標:如果不是動態顯示,就只是簡單的在對話框上面加picture控件,然後在屬性裏面指定icon的來源即可。4 如何響應電源插拔事件:在筆記本上面,ac電源插上和拔出的時候,會有背光亮度的改變,因此需要在知道這個電源來源改變的時候來重新獲得當前背光,經查詢,程序需要響應WM_POWERBROADCAST消息。如果wParam是PBT_APMPOWERSTATUSCHANGE,就需要重新獲得當然背光: case WM_POWERBROADCAST:

if (wParam == PBT_APMPOWERSTATUSCHANGE) // Power source maybe changed, check the backlight again.

wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_ICON_CONFIG2); // IDI_SMALL這樣子修改之後,妳會發現,程序運行的顯示圖標是改變了。但是程序exe的圖標還是沒有改變,這是因為exe和dll默認都顯示id為最低的那個icon的圖標。因此,在resource.h裏面把自己希望顯示的圖標id和現有的程序圖標id換壹下就可以了。#define IDI_ICON_CONFIG2 107 // make sure the icon ID is lowest.

好了。

  • 上一篇:五年級語文寫作文怎麽寫200字
  • 下一篇:材料作文和為貴,諧為美
  • copyright 2024編程學習大全網