iCAx开思工具箱

标题: UI对话框 [打印本页]

作者: hyccai    时间: 2011-3-5 13:28
标题: UI对话框
void UserDialogExitAction(char *dialog_name_,char *component_,ProAppData data_);
ProError UserCreateDialog()
{
ProError status;
int dialog_stats;
char * dialog_name="CreateDialog";
//加载对话话
status=ProUIDialogCreate(dialog_name,dialog_name);
if(status!=PRO_TK_NO_ERROR)
{
  AfxMessageBox(_T("Dialog create error!"));
  return status;
}
//设置对话框各元件的值
ProUIPushbuttonActivateActionSet(dialog_name,"OK",(ProUIAction)UserDialogExitAction,NULL);
ProUIPushbuttonActivateActionSet(dialog_name,"Cancel",(ProUIAction)UserDialogExitAction,NULL);
//显示对话框
status=ProUIDialogActivate(dialog_name,&dialog_stats);
if(status!=PRO_TK_NO_ERROR)
{
  AfxMessageBox(_T("Dialog activate error!"));
  return status;
}
//从内存清除对话框
status=ProUIDialogDestroy(dialog_name);
if(status!=PRO_TK_NO_ERROR)
{
  AfxMessageBox(_T("Dialog destroy error"));
  return status;
}
return status;
}
//对话框取消按钮动作函数
void UserDialogExitAction(char *dialog_name_,char *component_,ProAppData data_)
{
ProUIDialogExit(dialog_name_,1);
}

//问题是,第一次执行成功,单击OK后,再执行第二次时就 AfxMessageBox(_T("Dialog create error!"));
作者: hust65    时间: 2011-3-6 22:25
你可以先試試看在ProUIDialogDestroy後把dialog_stats印出來看是不是1
作者: hyccai    时间: 2011-3-7 09:07
status=ProUIDialogActivate(dialog_name,&dialog_stats);
        if(status!=PRO_TK_NO_ERROR)
        {
                AfxMessageBox(_T("Dialog activate error!"));
                return status;
        }
        CString str;
        str.Format(_T("%d"),dialog_stats);
        AfxMessageBox(str);
       //从内存清除对话框
        status=ProUIDialogDestroy(dialog_name);
        if(status!=PRO_TK_NO_ERROR)
        {
                AfxMessageBox(_T("Dialog destroy error"));
                return status;
        }
        //str.Format(_T("%d"),dialog_stats);
        AfxMessageBox(str);
       return status;
}

前后都是1
作者: hust65    时间: 2011-3-7 09:50
你的code我看了幾遍
感覺應該沒有錯
實在是不清楚為什麼第二次會失敗??
只是我的習慣會是

static void UserDialogExitAction(char *dialog_name_,char *component_,ProAppData data_);
static  char * dialog_name="CreateDialog";

ProError UserCreateDialog()
{
....
}

void UserDialogExitAction(char *dialog_name_,char *component_,ProAppData data_)
{
   ProUIDialogExit(dialog_name_,1);
}
作者: hyccai    时间: 2011-3-7 10:47
谢谢!我试下你的方法
作者: hyccai    时间: 2011-3-7 14:14
照你的方法也不行,是不是VC2008配置的问题?[
作者: hust65    时间: 2011-3-7 14:56
VC2008? 所以你用的是ProE5.0嗎?
作者: hyccai    时间: 2011-3-7 18:01
不是,是VC2008+ProE4.0
在写UI对话框之前一直都没问题的
我看有些配置(上图)忽略特定库中有忽略两个库,我没有
要是忽略编译就有问题了.下图是论坛上的配置


作者: hust65    时间: 2011-3-7 18:27
我不知道真正的問題在哪裡

但是ProE4的.lib都是用VC2005 build的
ProE5的.lib才是用VC2008
這些在PTC的網上有說明

我自己的code ProE4就用2005 ProE5就用2008
做了很多UI對話框都沒碰到問題
作者: hyccai    时间: 2011-3-8 15:25
能不能说下你VC2005+PROE4.0是怎么配置的,我想用VC2005,实在没办法了
最好能详细点了,如果有时间
作者: hust65    时间: 2011-3-8 15:44
https://ossandcad.blogspot.com/2 ... n-using-visual.html
上面應該能下載sample
你可以參考他的配置
作者: hyccai    时间: 2011-3-8 18:14
上不了啊,可不可以贴个成功的例子在这里
我今天下午卸了VC2008,装了个VC2005还是老问题,
实在没办法了
作者: hyccai    时间: 2011-3-8 18:15
发我邮箱也行hyccai2008@sina.com
作者: hust65    时间: 2011-3-9 08:55
有寄到你的信箱了
真不行再說
作者: hyccai    时间: 2011-3-9 09:54
非常感谢!现在去收邮件
作者: hyccai    时间: 2011-3-9 18:22
hust65 发表于 2011-3-9 08:55
有寄到你的信箱了
真不行再說

非常感谢!问题现在解决了
作者: fuyuelei    时间: 2011-9-13 10:32
可以问一下怎么解决的吗?我也遇到了与你同样的问题,第一次可以打开对话框,第二次就有问题,我用的是2008+proe5.0
作者: Volcanoskar    时间: 2012-5-25 22:51
求例子哦,毕业设计
{:soso_e159:}邮箱:ganjiang8888@163.com




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3