- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
自己在做一个项目 需要使用到CProperySheet
记得当初写框架的时候用过CProperySheet
现在都忘光了
刚好在弄界面美化 就复习复习了
第一步添加一个CPropertySheet变量
建议重写CPropertySheet
CMyPropertySheet m_sheet;[/code]
第二步 创建新的对话框资源 对话框资源的基类为CPropertyPage
// DlgFile.cpp : 实现文件
//
#include "stdafx.h"
#include "MFC_PropertySheet_CTRL.h"
#include "DlgFile.h"
#include "afxdialogex.h"
// CDlgFile 对话框
IMPLEMENT_DYNAMIC(CDlgFile, CPropertyPage)
CDlgFile::CDlgFile()
: CPropertyPage(CDlgFile::IDD)
{
}
CDlgFile::~CDlgFile()
{
}
void CDlgFile:oDataExchange(CDataExchange* pDX)
{
CPropertyPage:oDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CDlgFile, CPropertyPage)
ON_BN_CLICKED(IDOK, &CDlgFile::OnBnClickedOk)
END_MESSAGE_MAP()
// CDlgFile 消息处理程序
void CDlgFile::OnBnClickedOk()
{
AfxMessageBox(L"File!\n");
}
[/code]
// DlgProcess.cpp : 实现文件
//
#include "stdafx.h"
#include "MFC_PropertySheet_CTRL.h"
#include "DlgProcess.h"
#include "afxdialogex.h"
// CDlgProcess 对话框
IMPLEMENT_DYNAMIC(CDlgProcess, CPropertyPage)
CDlgProcess::CDlgProcess()
: CPropertyPage(CDlgProcess::IDD)
{
}
CDlgProcess::~CDlgProcess()
{
}
void CDlgProcess:oDataExchange(CDataExchange* pDX)
{
CPropertyPage:oDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CDlgProcess, CPropertyPage)
ON_BN_CLICKED(IDOK, &CDlgProcess::OnBnClickedOk)
ON_WM_SIZE()
ON_WM_SHOWWINDOW()
END_MESSAGE_MAP()
// CDlgProcess 消息处理程序
void CDlgProcess::OnBnClickedOk()
{
AfxMessageBox(L"rocess!\n");
}
void CDlgProcess::OnSize(UINT nType, int cx, int cy)
{
CPropertyPage::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
}
BOOL CDlgProcess::OnInitDialog()
{
CPropertyPage::OnInitDialog();
return TRUE;
}
/*
void CtestDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
// 子窗口随着父窗口变大变小
if(m_ctrWeb.GetSafeHwnd())
{
m_ctrWeb.MoveWindow(0,0,cx,cy);
}
}
*/
void CDlgProcess::OnShowWindow(BOOL bShow, UINT nStatus)
{
CPropertyPage::OnShowWindow(bShow, nStatus);
}
[/code]
第三步 在主窗口中添加对话框成员
CDlgFile m_DlgFile;[/code]CDlgProcess m_DlgProcess;[/code]
第四步 在主窗口初始化函数中将对话框加入sheet 并创建sheet
this->m_sheet.AddPage(&m_DlgProcess);
this->m_sheet.AddPage(&m_DlgFile);
m_sheet.Create(this, WS_CHILD | WS_VISIBLE | WS_BORDER, WS_EX_CONTROLPARENT);[/code]
这里有点蛋疼的是主窗口跟sheet的大小不一致
我就写了这么几句 让其大小一致
CRect rect;
m_sheet.GetWindowRect(&rect);
CRect DlgRect;
GetWindowRect(&DlgRect);
POINT point;
point = DlgRect.TopLeft();
MoveWindow(point.x, point.y, rect.Width()+17, rect.Height()+40,TRUE); [/code]
/*
void CtestDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
// 子窗口随着父窗口变大变小
if(m_ctrWeb.GetSafeHwnd())
{
m_ctrWeb.MoveWindow(0,0,cx,cy);
}
}
*/[/code] |
|