一、往基於對話框的程序添加菜單:
[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函數中添加以下代碼即可: