圖一
圖二
看了上面兩圖你是不是對VC有信心了?Visual C++ 可實現(xiàn)你想要的統(tǒng)一風格界面。請看如何實現(xiàn):
1.首先要建立漂亮界面主窗口。它也是一個對話框,方法前文有介紹。
2.處理漂亮界面主窗口的OnInitDialog()函數(shù)。很重要??!
BOOL CTitleBarDlg::OnInitDialog()
{
//此處 不能修改和添加代碼!因為其它對話框的OnInitDialog()要用到
m_ToolTip.Create(this,TTS_ALWAYSTIP);//Create提示
m_ReSizeFlag = TRUE;
CRect rtWnd;
GetClientRect(&rtWnd);
m_OldWidth = rtWnd.Width();
m_OldHeight = rtWnd.Height();
OldPoint.x = rtWnd.Width();
OldPoint.y = rtWnd.Height();
if(!m_BaseFlag)
{
m_BaseFlag = TRUE;
CDialog::OnInitDialog();
//************************************
你只能在處修改和添加你所需主窗口初始化的代碼
……
//************************************
}
return TRUE;
}
3.建立你的對話框和對話框類。 //顯示代碼
用對話框資源編輯器完成對話框模板。用ClassWizard生成CyourDlg類此時基類只能為CDialog。
4.修改基類CDialog為漂亮界面類(CtitleBarDlg)
yourDlg.h yourDlg.cpp 內(nèi)的CDialog都要改,用Edit/Replace功能快些且安全。
在yourDlg.h還要包括TitleBarDlg.h
注意:對話框構造函數(shù)第一個參數(shù)CtitleBarDlg nID 要刪除。否則通Build通不過。
5. 顯示你的窗口
CyouDlg *pMyDlg;
pMyDlg = new CyouDlg;
pMyDlg->Create(IDD_YOUR_DLG);
pMyDlg->ShowWindow(SW_SHOW);
這種代碼要在適當?shù)臅r候delete pMyDlg,防內(nèi)存泄露。由于 pMyDlg沒有定義為全局,處理它有一定難度。如果是用DoModal()顯示就好了,大家可以去試一下。解決了告訴我!
6. 完成編譯運行。你的對話框的風格是不是和主窗口一樣,有沒顯示出來?
二.說明
統(tǒng)一風格的漂亮界面基本達到了目的。但同樣也存在幾個問題:
1.漂亮界面界必須是主窗口。我還沒有想出方法能讓它獨立出來。
2.顯示其它子窗口只能是非模式對話框窗口方式。我嘗試DoModal顯示但沒有成功。但我分析MFC后找到了笨方法,MFC也是這么做。
3.基于述原因,我建立了統(tǒng)一的界面風格的開發(fā)模板,只有在此模板上開發(fā)就能實現(xiàn)軟件漂亮統(tǒng)一的界面風格。需要可和我聯(lián)系! 若有機會我會和大家繼續(xù)探討漂亮界面的實現(xiàn)的其它難點。
三、結束語
源代碼請參考源代碼(附件)
本人聯(lián)系方法:song_0962@sina.com QQ:34544052