WEB开发网
开发学院软件开发VC 用VC++创建自定义向导程序 阅读

用VC++创建自定义向导程序

 2010-06-04 20:37:50 来源:WEB开发网   
核心提示:5. 辅助代码,如初始化等BOOL CWizard::OnInitDialog(){CDialog::OnInitDialog();//获得每页显示的范围CRect Rect1;GetWindowRect(&Rect1); // 获得主窗口的位置int nCaption = ::GetSystemMetrics(SM_

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 下编译通过。

本文配套源码

上一页  1 2 3 4 5 

Tags:VC 创建 定义

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接