用VC++创建自定义向导程序
2010-06-04 20:37:50 来源:WEB开发网3. 在CWizard添加要使用的数据结构
为了方便描述,表2列出了使用到的成员变量
(表2)
成员变量 | 类型 | 说明 |
rectPage | CRect | 每页显示的范围 |
nPageCount | UINT | 页的总数 |
nCurrentPage | UINT | 正在显示的页 |
nPageLink | PAGELINK* | 用来链接所有的页 |
typedef struct PAGELINK{
UINT nNum; CDialog* pDialog; struct PAGELINK* Next;}; |
nNum为页的编号
pDialog为页所对应的对话框的指针 |
4. CWizard所使用到的函数 添加一个新页到Wizard框架,入口参数为要添加的对话框指针和ID
void CWizard::AddPage(CDialog* pDialog, UINT nID)
{
struct PAGELINK* pTemp = pPageLink;
//插入新生成的结点
struct PAGELINK* pNewPage = new PAGELINK;
pNewPage->pDialog = pDialog;
pNewPage->pDialog->Create(nID,this); // 以无模式创建窗口
ASSERT(::IsWindow(pNewPage->pDialog->m_hWnd));
// 检查每页的样式
DWORD dwStyle = pNewPage->pDialog->GetStyle();
ASSERT((dwStyle & WS_CHILD) != 0); // 子窗口
ASSERT((dwStyle & WS_BORDER) == 0); // 无边界
// 显示
pNewPage->pDialog->ShowWindow(SW_HIDE); //先隐藏,需要时再显示
pNewPage->pDialog->MoveWindow(rectPage);
//移动对话框到制定位置,rectPage已经初始化了
pNewPage->Next=NULL;
pNewPage->nNum=++nPageCount; //计数器加1
if (pTemp) //插入到链表
{ //如果不是空链表
while (pTemp->Next) pTemp=pTemp->Next; // 移动链表末尾
pTemp->Next=pNewPage;
}
else // 空链表
pPageLink=pNewPage; //若是第一个节点
}
更多精彩
赞助商链接