码迷,mamicode.com
首页 > 其他好文 > 详细

CProperySheet使用

时间:2016-05-07 07:02:21      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

自己在做一个项目 需要使用到CProperySheet 

记得当初写框架的时候用过CProperySheet

现在都忘光了


刚好在弄界面美化 就复习复习了


第一步添加一个CPropertySheet变量

建议重写CPropertySheet

CMyPropertySheet m_sheet;

第二步 创建新的对话框资源 对话框资源的基类为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::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CDlgFile, CPropertyPage)
	ON_BN_CLICKED(IDOK, &CDlgFile::OnBnClickedOk)
END_MESSAGE_MAP()


// CDlgFile 消息处理程序


void CDlgFile::OnBnClickedOk()
{
	AfxMessageBox(L"File!\n");
}

// 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::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(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"Process!\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);

}


第三步 在主窗口中添加对话框成员

CDlgFile m_DlgFile;
CDlgProcess m_DlgProcess;


第四步 在主窗口初始化函数中将对话框加入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);


这里有点蛋疼的是主窗口跟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); 

/*
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);
}
}
*/

技术分享

CProperySheet使用

标签:

原文地址:http://blog.csdn.net/zhuhuibeishadiao/article/details/51335660

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!