首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2012中考 | 2012高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 托業 | 雅思 | 專四專八 | 口譯筆譯 | 博思 GRE GMAT | 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 零起點法語 | 零起點德語 | 零起點韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師 | 秘書資格 | 心理咨詢師 | 出版專業資格 | 廣告師職業水平 | 駕駛員 網絡編輯 | 公共營養師 | 國際貨運代理人 | 保險從業資格 | 電子商務師 | 普通話 | 企業培訓師 營銷師 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 化工工程師 | 材料員 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
定制應用程序外觀
本章主要講解如何修改MFC AppWizard自動生成的應用程序的外觀,包括工具欄和狀態欄的變成。
9.1在窗口創建之前修改
第三章介紹了一些MFC AppWizard應用程序的執行流程,如果要在窗口創建之前修改應用程序的外觀,可以再MainFrame類的PreCreateWindow()函數中修改窗口的外觀屬性。
01 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
02 {
03 if( !CFrameWnd::PreCreateWindow(cs) )
04 return FALSE;
05 // TODO: Modify the Window class or styles here by modifying
06 // the CREATESTRUCT cs
07 cs.cx=800;
08 cs.cy=500;
09 cs.style&=~FWS_ADDTOTITLE;
10 cs.lpszName="www";
11 return TRUE;
12 }
由于MFC應用程序的View類是覆蓋在Frame類之上的,在此處對外觀做的修改將只顯示在Frame類部分。如窗口的大小,標題。
一個MFC單文檔應用程序窗口的默認窗口樣式是WS_OVERLAPPEDWINDOW和WS_ADDTOTITLE,要去掉其中的一種樣式,可以對其做取反操作。
1 cs.style=cs.style&~WS_ADDTOTITLE;
或者直接設置窗口的樣式
1 cs.style=WS_OVERLAPPEDWINDOW;
9.2在窗口創建之后修改
在窗口創建之后修改窗口的樣式,在Create函數中執行。在Create函數中調用SetWindowLong函數。
1 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
2 {
3 //
4 SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW);
5 SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_ERROR));
6 }
9.3動態加載Icon
如果要設置窗口的Icon為系統提供的格式,可以通過SetClassLong來實現,如果要動態的加載一個自定義的Icon,首先需要在Frame類的頭文件中創建一個HICON類型的變量。
HICON m_icon;可以同時加載多個文件,則需要創建的HICON數組HICON m_iconl[],然后調用LoadIcon函數。
1 hicon[0]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));
2 hicon[1]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON2));
書中給出了三種加載icon文件的方法,選擇一個自己看著順眼的方式。加載Icon文件之后,設置窗口的icon
1 SetClassLong(m_hWnd,GCL_HICON,(LONG)hicon[0]);
9.4設置定時器
SetTimer函數屬于標準消息,在Frame類上右鍵,可以看到所有的標準消息。
1 void CMainFrame::OnTimer(UINT nIDEvent)
2 {
3 // TODO: Add your message handler code here and/or call default
4 static int index=0;
5 index=++index%4;
6 CFrameWnd::OnTimer(nIDEvent);
7 }
這里有2個概念,一是創建一個靜態變量的時候,在內存區域的全局對象與靜態變量區域分派內存,只會創建一次。二是如果要在一個循環中將值限定在一個范圍之內,可以將循環值和這個值取模。
創建一個定時器之后,需要在OnCreate函數中添加定時器的響應。在MSDN中可以看到SetTimer函數的說明
1 UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );
SetTimer函數的返回值也即是函數的編號(第一個參數),第二個參數為定時器的響應時間,以毫秒為單位,第三個參數通常設置為NULL,具體為什么,沒看懂。
1 SetTimer(1,1000,NULL);
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |