找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 17428|回复: 10
打印 上一主题 下一主题

请教一下,用VC做的对话框可以调用UIstyler做的对话框吗?

[复制链接]
跳转到指定楼层
1
发表于 2004-10-25 21:33:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
我用MFC作出的对话框,可不可以和UISYLER做出的对话框相互调用?有没有那位高手试过?请教一下!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2004-10-26 13:58:16 | 只看该作者
当然可以了!可有必要吗?
3
发表于 2004-10-26 14:26:24 | 只看该作者
当然有了,例如客户需要的是树形的对话框,uistyler里有吗
4
发表于 2004-10-26 22:03:50 | 只看该作者
因为我要调用另外一个人用UIstyler做的东西,请教一下mbdwt和mizzle两位该如何调用呢?能否给个例子。
5
发表于 2004-10-27 00:00:41 | 只看该作者
以前试过,可以的。
  
1.对话框的主程程序文件中要include 对话框模板中的头文件
2.把对话框模板的c文件中的内容拷到MFC对话框的主程序文件中,模板文件中的UG程序入口函数就不要拷了。
3。在MFC对话框的控件中调用UF_STYLER_create_dialog函数,就可以调出UISTYLER对话框。
  
要注意一些UG的头文件,按需要,MFC对话框主程序文件中也要include。
6
发表于 2004-10-27 11:13:10 | 只看该作者
按键盘兄的提示,我试了一下,可是一直编译不过,
#define ymh_CB_COUNT ( 7 + 1 ) /* Add 1 for the terminator */
   
/*--------------------------------------------------------------------------
The following structure defines the callback entries used by the        
styler file.  This structure MUST be passed into the user function,     
UF_STYLER_create_dialog along with ymh_CB_COUNT.                        
--------------------------------------------------------------------------*/
static UF_STYLER_callback_info_t  ymh_cbs[ ymh_CB_COUNT] =  
{
  {UF_STYLER_DIALOG_INDEX, UF_STYLER_OK_CB           , 1, ymh_ok_cb},
  {UF_STYLER_DIALOG_INDEX, UF_STYLER_APPLY_CB        , 0,  
ymh_apply_cb},
  {UF_STYLER_DIALOG_INDEX, UF_STYLER_CANCEL_CB       , 0, ymh_cancle_cb},
  {ymh_RADIO_0       , UF_STYLER_VALUE_CHANGED_CB, 0, ymh_danwei_cb},
  {ymh_LIST_2        , UF_STYLER_ACTIVATE_CB     , 1, ymh_tuzhguige_cb},
  {ymh_ACTION_7      , UF_STYLER_ACTIVATE_CB     , 1, ymh_action_7_act_cb},
  {ymh_ACTION_8      , UF_STYLER_ACTIVATE_CB     , 1, ymh_action_8_act_cb},
  {UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 }
};
  
static UF_MB_styler_actions_t actions[] = {
    { "tuzhi.dlg",  NULL,   ymh_cbs,  UF_MB_STYLER_IS_NOT_TOP },
    { NULL,  NULL,  NULL,  0 } /* This is a NULL terminated list */
};
void DisplayDialog()
  
{
  
       AFX_MANAGE_STATE(AfxGetStaticModuleState());
  
       CLibDialog dlg;
  
       dlg.DoModal();
  
}
  
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
  
{
  
    int errorCode=UF_initialize();
  
    
  DisplayDialog ();
  
    if ( 0 == errorCode )
  
    {
  
        errorCode = UF_terminate();
  
    }
if ( (error_code = UF_MB_add_styler_actions ( actions ) ) != 0 )
    {
          char fail_message[133];
          
          UF_get_fail_message(error_code, fail_message);
          printf ( "%s\n", fail_message );  
    }
               
  
}
  
extern "C" void ufusr_cleanup(void)
  
{
  
}
  
extern "C"  int ufusr_ask_unload( void )
  
{
  
    return( UF_UNLOAD_UG_TERMINATE );
  
}
  
这段程序是添加在主程序里,可是编译后出现以下错误:
ompiling...
yagai.cpp
D:\ugkaifa\program\yagaicanshu\yagaitest\yagai.cpp(81) : error C2146: syntax error : missing ';' before identifier 'ymh_cbs'
D:\ugkaifa\program\yagaicanshu\yagaitest\yagai.cpp(81) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
  
tuzhi.dll - 2 error(s), 0 warning(s)
我一直找不错错误,肯请键盘兄再指教一下,能不能给个例子,很急,谢谢!
ymhai@126.com
7
发表于 2004-10-27 11:18:24 | 只看该作者
因为你的程序中没有include <uf_mb.h>。
可以删掉这个:
static UF_MB_styler_actions_t actions[] = {  
     { "tuzhi.dlg", NULL, ymh_cbs, UF_MB_STYLER_IS_NOT_TOP },  
     { NULL, NULL, NULL, 0 } /* This is a NULL terminated list */  
};  
这是菜单调用对话框的信息结构,
而且,你是要从MFC对话框中调用,这个结构体没用处了。
  
另外,如果你是想用菜单调用MFC对对话框,那模板文件中的UG程序入口函数就不要拷到对话框的主程文件中了。在工程的主程序文件中手工添加ufusr入口,在这个入口中,new 一个MFC对话框对象,然后要么domodal,要么就非模态的
  
附件里是一个测试程序,仅供参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8
发表于 2004-10-28 09:17:01 | 只看该作者
程序通过了,非常感谢键盘兄!再问一下,如果我在UISTYLER的对话框中调用mfc的对话框是否也可以?
9
发表于 2004-10-28 12:43:18 | 只看该作者
那个程序是以前写的,
在ufusr里,漏了一句:AFX_MANAGE_STATE(AfxGetStaticModuleState());
10
发表于 2004-11-4 15:43:26 | 只看该作者
我将Mfc的对话框改为非模态的后调不出UISTYLER 的对话框。而模态是可以的,是什么原因呢?再请教一下键盘兄及各位高手。
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
  
{  
     int errorCode=UF_initialize();
     AFX_MANAGE_STATE(AfxGetStaticModuleState());  
    // CxinbangDilog *dlg=new CxinbangDilog ;
   //dlg->DoModal();
   CxinbangDilog*PNMDlg;
   PNMDlg=new CxinbangDilog ;
   PNMDlg->Create(IDD_DIALOG1);
   PNMDlg->ShowWindow(SW_SHOW);                     
       if ( 0 == errorCode )
     {
         errorCode = UF_terminate();
     }
   }
  
void CxinbangDilog::OnDestroy()  
{
   CDialog::OnDestroy();
   delete this;   
}
  
void CxinbangDilog::OnButtonGobank2()  
{
   m_pRecordset->Close();
   DestroyWindow();
   
}
   
new 和delete没错吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-26 14:17 , Processed in 0.027874 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表