iCAx开思网
标题:
请教一下,用VC做的对话框可以调用UIstyler做的对话框吗?
[打印本页]
作者:
haiying
时间:
2004-10-25 21:33
标题:
请教一下,用VC做的对话框可以调用UIstyler做的对话框吗?
我用MFC作出的对话框,可不可以和UISYLER做出的对话框相互调用?有没有那位高手试过?请教一下!
作者:
mbdwt
时间:
2004-10-26 13:58
当然可以了!可有必要吗?
作者:
mizzle
时间:
2004-10-26 14:26
当然有了,例如客户需要的是树形的对话框,uistyler里有吗
作者:
haiying
时间:
2004-10-26 22:03
因为我要调用另外一个人用UIstyler做的东西,请教一下mbdwt和mizzle两位该如何调用呢?能否给个例子。
作者:
深夜摔键盘
时间:
2004-10-27 00:00
以前试过,可以的。
1.对话框的主程程序文件中要include 对话框模板中的头文件
2.把对话框模板的c文件中的内容拷到MFC对话框的主程序文件中,模板文件中的UG程序入口函数就不要拷了。
3。在MFC对话框的控件中调用UF_STYLER_create_dialog函数,就可以调出UISTYLER对话框。
要注意一些UG的头文件,按需要,MFC对话框主程序文件中也要include。
作者:
haiying
时间:
2004-10-27 11:13
按键盘兄的提示,我试了一下,可是一直编译不过,
#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
作者:
深夜摔键盘
时间:
2004-10-27 11:18
因为你的程序中没有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,要么就非模态的
附件里是一个测试程序,仅供参考。
作者:
haiying
时间:
2004-10-28 09:17
程序通过了,非常感谢键盘兄!再问一下,如果我在UISTYLER的对话框中调用mfc的对话框是否也可以?
作者:
深夜摔键盘
时间:
2004-10-28 12:43
那个程序是以前写的,
在ufusr里,漏了一句:AFX_MANAGE_STATE(AfxGetStaticModuleState());
作者:
haiying
时间:
2004-11-4 15:43
我将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没错吧?
作者:
haiying
时间:
2004-11-5 14:43
高手们帮帮忙啊!
欢迎光临 iCAx开思网 (https://www.icax.org/)
Powered by Discuz! X3.3