對話框編程(vc使用技巧集)

一、往基於對話框的程序添加菜單

[1] 先添加菜單(IDR_MENU1)資源,並加上需要的菜單項。

[2] 編輯對話框資源IDD_DLGMENUTOOLBAR_DIALOG的屬性,在屬性對話框中選擇IDR_MENU1即可。

  

[3] 假如您不希望在對話框屬性中直接設置菜單,而通過代碼在程序中動態生成可以採用如下方法:

CFileNameDlg類聲名中添加成員變量CMenu m_menu,再在CFileNameDlg::OnInitDialog() 中添加如下代碼:

//加載菜單

m_menu.LoadMenu(IDR_MENU1);

//設置當前菜單

SetMenu(&m_menu);

//當你不需要菜單時可以用 SetMenu(NULL);來取消當前菜單

二、往基於Dialog的程序添加工具欄

[1] 先添加工具欄(IDR_TOOLBAR1)資源,並畫好各個按鈕。

[2] CFileNameDlg類聲名中添加成員變量 CToolBar m_wndtoolbar;

[3] CFileNameDlg::OnInitDialog() 中添加如下代碼

三、改變對話框背景色:

CDlgMenuToolbarDlg::OnPaint()中修改代碼實現Dialog 填充顏色:

方法二、在InitInstance()(不是OnInitDialog())中加入:

SetDialogBkColor(RGB(255,0,0),RGB(0,255,0));

注意:要放在InitInstance函數的最前面!

四、爲dialog的工具欄添加工具提示:

[1] CFileNameDlg類定義中手工添加消息映射函數的定義,如下黑體部分

[2] CFileNameDlg.cpp添加函數的實現代碼

[3] CFileNameDlg.cpp中添加消息映射,請看如下代碼中的黑體部分

[4] CFileNameDlg.h中添加聲明:

BOOL CFileNameDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)

五、給沒有工具欄的窗口添加工具欄:

在資源管理器中編輯工具欄,並將其屬性改爲IDR_MAINFRAME,然後在MainFrm.h中聲明:

CToolBar m_wndToolBar;

MainFrm.cpp中添加:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

 m_wndToolBar.Create(this);

 m_wndToolBar.LoadToolBar(IDR_MAINFRAME);

 ……;

停靠工具欄:在剛纔添加的後面加入下面代碼:

m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle()|CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC);

 

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);//控制是否開啓任意停靠

完善一下功能:

在菜單中添加一項“工具欄”,ID設爲ID_VIEW_TOOLBAR,一切OK,試試吧!

六、創建分隔窗口:

只有框架類可以創建分隔,分隔可以嵌套。

.h文件中聲明 CSplitterWnd m_wndSplitter;並且包含COneView.h(新建視圖類)和CWinFrame.h(新建框架類)文

 

件;

然後在.cpp文件中加入:

當用戶創建好分割窗口後,有時並不希望通過拖動切分條來調節窗口的大小。這時就必須鎖定切分條。鎖定切分條的最

 

簡單的方法莫過於不讓CSplitterWnd來處理WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_SETCURSOR消息,而是將這些消息交給

 

CWnd窗口進行處理,從而屏蔽掉這些消息。拿WM_LBUTTONDOWN處理過程來說。修改爲如下:

 

void CXXSplitterWnd::OnLButtonDown(UINT nFlags,CPoint point)

{

  CWnd::OnLButtonDown(nFlags,point);

}

其餘的處理方法類似。

七、“打開”按鈕的設置:

    用類嚮導創建該按鈕的click函數,選擇默認值OnOpen,加入以下代碼:

八、窗口居中:

在初始化(OnInit)函數中增加:CenterWindow();即可

九、對話框加狀態條:

   

十、設置初始窗口狀態:

 

對於MDI函數SetWindowText無效,主窗口的標題只能在資源列表中修改,子窗口標題在**doc.cpp中重載OnNewDocument(),調用SetTitle("LGdownload中文版");來修改。

 

設置初始窗口最大化的另一優化方法:

十一、對話框透明特效:

OnInitDialog()中加入以下代碼:

 

注意:fun的參數128不能太小,否則就完全透明瞭!

十二、設置對話框裏的STATIC控件顏色屬性

在該對話框增加WM_CTLCOLOR事件,加入以下代碼:

if( nCtlColor==CTLCOLOR_STATIC )

{

    pDC->SetTextColor(RGB(255,255,255));

    pDC->SetBkColor(RGB(91,145,244));

  pDC->SetBkMode(TRANSPARENT); //設置透明

}

設置STATIC控件背景透明:

if( nCtlColor==CTLCOLOR_STATIC )

{

 pDC->SetBkMode(TRANSPARENT); //設置透明

 return (HBRUSH)::GetStockObject(NULL_BRUSH);

}

十三、使窗口的最大化和最小化按鈕消失:

PreCreateWindow函數中添加以下代碼即可:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章