怎么在已经生成两个CPropertyPage的基础上调用完一个exe程序后再添加多一个CPropertyPage啊?

huminjing 2008-06-05 11:47:44
我设计的是在一个对话框的上面有两个CPropertyPage,在点击其中一个CPropertyPage的控件按钮后调用一个exe的程序,程序调用运行完后,自动新增一个CPropertyPage页,然后把生成的结果在新添加的CPropertyPage上显示,可是我就不知道怎么自动新增啊,那位高手可以指点下下啊?
...全文
80 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huminjing 2008-06-11
  • 打赏
  • 举报
回复
我原来属性页上有两个CPropertyPage了,可是我想在运行完一个exe程序后在加多一个,但就是不懂怎么加,以为是用AddPage了
菜牛 2008-06-06
  • 打赏
  • 举报
回复
CSvmSheet svmsheet;
m_modelresult.Construct(IDD_PROP_MODELRESULT);
svmsheet.m_sheet.AddPage(&m_modelresult);
这些代码是干什么?不是在原来属性页上添加吗?怎么新建了一个?
huminjing 2008-06-06
  • 打赏
  • 举报
回复
还是不懂啊
huminjing 2008-06-05
  • 打赏
  • 举报
回复
我也是这么做的
void CSvmParam::OnButTrain()
{
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = _T("open");
ShExecInfo.lpFile = _T("svm-train.exe");
ShExecInfo.lpParameters = _T(svmstr);
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);

if(ShExecInfo.hProcess)
{

::WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
::CloseHandle(ShExecInfo.hProcess);
}
CSvmSheet svmsheet;
m_modelresult.Construct(IDD_PROP_MODELRESULT);
svmsheet.m_sheet.AddPage(&m_modelresult);
}
可是不行啊,可以调用到exe,可是调用运行结束后没有新CPropertyPage生成啊
cnzdgs 2008-06-05
  • 打赏
  • 举报
回复
CreateProcess加载exe程序,WaitForSingleObject等待进程句柄,AddPage添加新页。
Joephia 2008-06-05
  • 打赏
  • 举报
回复
写给自己用的
STARTUPINFO si;
memset(&si,0,sizeof(STARTUPINFO));

si.cb=sizeof(STARTUPINFO);
si.lpReserved=NULL;
si.lpDesktop=NULL;
si.lpTitle=NULL;
si.dwFlags=STARTF_USESHOWWINDOW;
si.cbReserved2=0;
si.lpReserved2=NULL;
si.wShowWindow=SW_SHOWNORMAL;
PROCESS_INFORMATION pi;

BOOL b=CreateProcess(NULL,"Notepad.exe", NULL, NULL,false, 0, NULL, NULL, &si, &pi);
::WaitForSingleObject(pi.hProcess,0xFFFFFFFF);

if(b)
MessageBox("OK");
else
MessageBox("Err");
向导对话框 向导对话框实际上是一种特殊的属性表,和属性表不同的是,它能使用按钮来成从一页到另一页的移动,而不是使用选项卡。我们用MFC AppWizard(exe)来建立新的程序时,就是用向导对话框成的整 个过程,图3.7.1就是这个过程的 第一步,点击Next到下一步。 由于向导是一种特殊的属性表, 因此与其对应的MFC类也是属性 表类CpropertySheet和属性页类 CpropertyPage,在向导程序中,属 性表的创建方法没有改变,只是在 调用DoModel函数之前应调用 SetWizardMode(设置向导模式)函数, 图3.7.1 建立新项目过程的第一步 将属性表的操作方式设置为向导模式。 在向导模式下,每一个属性页都有Back、Next、Cancel按钮,由于每次显示向导的特定页时,MFC自动调用OnSetActive()(设置活动页函数)函数,因此我们可以重载OnSetActive函数,在此函数中利用SetWizardButton(设置属性页按钮显示方式)设置希望出现的按钮,在向导程序的最后一页,可以通过用SetFinishText(设置Finish命令按钮中的文本)设置Finish按钮所显示的文字,同时隐藏”上一步(Back)”按钮和”下一步(Next)”按钮。 例3.28 创建向导对话框 (1)创建一个基于对话框的应用程序,名为:向导对话框 (2)创建属性页对话框和属性页对话框类并添加相应的消息映射函数 1)Insert ResourceDialogIDD_PROPPAGE_MEDIUMNew,创建了第一个对话框,将其ID改为:IDD_STEP1,将其Language属性设置为Chinese[P.R.C]。并为该对话框建类,类名为:Cpage1,基类为:CpropertyPage。 2)删除对话框上的原有控件,在控件工具栏中拖到对话框一个静态文本,静态文本的属性Caption处写:第一个对话框,再拖过一个静态图片控件,将一个.bmp图形Import(导入)到程序中,再把这个图形加到这个图片控件上,如图3.7.2所示。 利用ClassWizard为类Cpage1增加消息映射函数OnSetActive,在此函数中激活Next按钮,代码如下: BOOL Cpage1::OnSetActive() { CPropertySheet *pSheet=(CPropertySheet *)GetParent(); ASSERT_KINDOF(CPropertySheet,pSheet); pSheet->SetWizardButtons(PSWIZB_NEXT); return CPropertyPage::OnSetActive();

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧