用VC++创建自定义向导程序
2010-06-04 20:37:50 来源:WEB开发网5. 辅助代码,如初始化等
BOOL CWizard::OnInitDialog()
{
CDialog::OnInitDialog();
//获得每页显示的范围
CRect Rect1;
GetWindowRect(&Rect1); // 获得主窗口的位置
int nCaption = ::GetSystemMetrics(SM_CYCAPTION); // 系统Title高度
int nXEdge = ::GetSystemMetrics(SM_CXEDGE);
int nYEdge = ::GetSystemMetrics(SM_CYEDGE);
CRect Rect2;
GetDlgItem(IDC_POS)->GetWindowRect(&Rect2); // 获得框架的位置
Rect1.top=Rect1.top+nCaption+nYEdge; // 相对坐标
Rect1.left=Rect1.left+2*nXEdge;
//计算机位置
rectPage.top=Rect2.top-Rect1.top;
rectPage.left=Rect2.left-Rect1.left;
rectPage.bottom=Rect2.bottom-Rect1.top;
rectPage.right=Rect2.right-Rect1.left;
//页示的添加要显
CStep1* pStep1 = new CStep1;
CStep2* pStep2 = new CStep2;
CStep3* pStep3 = new CStep3;
AddPage(pStep1, IDD_STEP1);
AddPage(pStep2, IDD_STEP2);
AddPage(pStep3, IDD_STEP3);
//显示第一页
ShowPage(1);
return TRUE;// return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
因为是无模式窗体,所以要自己销毁窗体
void CWizard::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
//每页依次消除
struct PAGELINK* pTemp=pPageLink;
while(pTemp)
{
struct PAGELINK* pNextTemp = pTemp->Next;
pTemp->pDialog->DestroyWindow();
delete pTemp->pDialog;
delete pTemp;
pTemp = pNextTemp;
}
}
6.启动向导需要在IDC_BEGINWIZ 按钮的Click事件中加入下列代码:
CWizard MyWiz; //显示向导
MyWiz.DoModal();
四、测试
上述两个程序在Win2000、VC++ 6.0 下编译通过。
本文配套源码
更多精彩
赞助商链接