[转]如何将属性表嵌入对话框中显示
【最終結(jié)果圖】
?
【簡(jiǎn)單設(shè)計(jì)流程】
1. 創(chuàng)建工程:根據(jù)VC向?qū)С绦騽?chuàng)建一個(gè)Dialog Based應(yīng)用程序,進(jìn)入資源視圖,在對(duì)話框模板上創(chuàng)建一個(gè)Picture控件來設(shè)置屬性頁的顯示范圍,調(diào)整好Picture到合適大小,如下圖:
??? 我們假設(shè)Picture控件的ID為IDC_SHEET_RECT。
?注:這是教程,用不著過于拘泥界面的美觀!
?
2. 創(chuàng)建三個(gè)屬性頁模板:在VC的資源視圖中插入一個(gè)對(duì)話框,拖動(dòng)到合適大小,修改對(duì)話框的樣式,將Popup修改為Child,Border樣式設(shè)置為Thin或None
??? 然后將該對(duì)話框模板復(fù)制三份,我們就有了三份屬性頁模板,如下圖:
?
3. 然后在資源視圖的字符串表中添加三個(gè)資源字符串作為屬性頁的標(biāo)題,如下圖:
?
4. 好了,現(xiàn)在前期準(zhǔn)備工作都做充分了,開始進(jìn)行編碼了,其實(shí)編碼就十來行簡(jiǎn)單的代碼:
?
代碼 代碼代碼// 在對(duì)話框類(假設(shè)類名為CMyDialog)中添加屬性表和屬性頁的成員變量
// mydialog.h#include <list>
class CMyDialog : public CDialog
{
public:
// ... 省略private:
std::list<CPropertyPage*> m_pPageList;
CPropertySheet m_propSheet;
// ... 余下的也省略
};
// mydialog.cpp
CMyDialog::CMyDialog(CWnd* pParent /* = NULL */) : CDialog(CMyDialog::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
// 初始化屬性頁和屬性表
m_pPageList.push_back(new CPropertyPage(IDD_PAGE1, IDS_PAGE1));
m_pPageList.push_back(new CPropertyPage(IDD_PAGE2, IDS_PAGE2));
m_pPageList.push_back(new CPropertyPage(IDD_PAGE3, IDS_PAGE3));
std::list<CPropertyPage*>::const_iterator iter = m_pPageList.begin();
??? for (; iter != m_pPageList.end(); ++iter)
??? {
??????? m_propSheet.AddPage(*iter);
??? }
}
BOOL CMyDialog::OnInitDialog()
{
// 初始化對(duì)話框
CDialog::OnInitDialog();
// ... 省略部分工程創(chuàng)建自動(dòng)添加的代碼
// 創(chuàng)建屬性表
m_propSheet.Create(this, WS_CHILD | WS_VISIBLE, WS_EX_CONTROLPARENT); CRect rcSheet;
??GetDlgItem(IDC_SHEET_RECT)->GetWindowRect(rcSheet);
ScreenToClient(rcSheet);
m_propSheet.SetWindowPos(NULL, rcSheet.left, rcSheet.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE); return TRUE;}
5. 至此,我們完成了創(chuàng)建一個(gè)嵌入式屬性表的所有工作,編譯和運(yùn)行試試!
轉(zhuǎn)載于:https://www.cnblogs.com/zhanglibo0626/archive/2011/09/01/2161553.html
總結(jié)
以上是生活随笔為你收集整理的[转]如何将属性表嵌入对话框中显示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 18、正则表达式中常用字符
- 下一篇: 用正则表达式获取指定的字符串续_取出所有