自定义一组向导页面(2)

时间:2022-09-10 17:10:07

  前边解决了从父对话框列表控件,调用相应的选择题界面的问题,接下来,需要对选择题界面添加导航按钮。

自定义一组向导页面(2)

自定义一组向导页面(2)

首先给“下一题”按钮添加消息,在点击的时候,把它链接到下一个对象指针,然后DoModal。这样如果一直点击,就可以一直打开到最后一题的对话框。如果点击“上一题”按钮的时候,就要考虑把已经打开的对话框关掉,也就是触发“返回”按钮的消息。所以,对每个对话框首先应该判断是否在前一次操作中打开过,如果打开过,则触发“返回”按钮消息,如果没打开过则调用next指针。这时候,标志位flag 变量就起作用了。首先要在程序中,对标志位设初值0,打开则设1,关闭的时候再设0。对“上一题”作类似的设计。具体代码如下,

void CDlgSEL::OnBnClickedButSelNext()
{
	// TODO:  在此添加控件通知处理程序代码
	CDlgSEL_main *p = (CDlgSEL_main *)this->GetParent();
	CString str;
	int i;
	p1 = this;
	if ((this->next->flag) != 1 && this->ise!=4)
	{
		this->next->flag = 1;
		this->next->DoModal();
		
	}
	else if (this->ise==4)
	{
		for(i = 4; i > -1; i--)
		{
			if (p1->flag == 1)
			{
				this->flag = 0;
				p1->OnBnClickedButSelReturn();
				p1 = p1->last;
			}
		}
			
		}
	else if (this->next->flag == 1)
	{
		this->flag = 0;
		p1->OnBnClickedButSelReturn();
	}
		
	}




void CDlgSEL::OnBnClickedButSelPrev()
{
	// TODO:  在此添加控件通知处理程序代码
	CDlgSEL_main *p = (CDlgSEL_main *)this->GetParent();
	CString str;
	int i;
	p1 = this;
	if ((this->last->flag) != 1 && this->ise != 0)
	{
		this->last->flag = 1;
		this->last->DoModal();

	}
	else if (this->ise == 0)
	{
		for (i = 0; i < 5; i++)
		{
			if (p1->flag == 1)
			{
				this->flag = 0;
				p1->OnBnClickedButSelReturn();
				p1 = p1->next;
			}
		}

	}
	else if (this->last->flag == 1)
	{
		this->flag = 0;
		p1->OnBnClickedButSelReturn();
	}
	 
}

经过测试,是有效的。