[转]如何将属性表嵌入对话框中显示
生活随笔
收集整理的這篇文章主要介紹了
[转]如何将属性表嵌入对话框中显示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【最終結果圖】
?
【簡單設計流程】
1. 創建工程:根據VC向導程序創建一個Dialog Based應用程序,進入資源視圖,在對話框模板上創建一個Picture控件來設置屬性頁的顯示范圍,調整好Picture到合適大小,如下圖:
??? 我們假設Picture控件的ID為IDC_SHEET_RECT。
?注:這是教程,用不著過于拘泥界面的美觀!
?
2. 創建三個屬性頁模板:在VC的資源視圖中插入一個對話框,拖動到合適大小,修改對話框的樣式,將Popup修改為Child,Border樣式設置為Thin或None
??? 然后將該對話框模板復制三份,我們就有了三份屬性頁模板,如下圖:
?
3. 然后在資源視圖的字符串表中添加三個資源字符串作為屬性頁的標題,如下圖:
?
4. 好了,現在前期準備工作都做充分了,開始進行編碼了,其實編碼就十來行簡單的代碼:
?
代碼 代碼代碼// 在對話框類(假設類名為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()
{
// 初始化對話框
CDialog::OnInitDialog();
// ... 省略部分工程創建自動添加的代碼
// 創建屬性表
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. 至此,我們完成了創建一個嵌入式屬性表的所有工作,編譯和運行試試!
轉載于:https://www.cnblogs.com/zhanglibo0626/archive/2011/09/01/2161553.html
總結
以上是生活随笔為你收集整理的[转]如何将属性表嵌入对话框中显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 18、正则表达式中常用字符
- 下一篇: 用正则表达式获取指定的字符串续_取出所有