iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 24506|回复: 1
打印 上一主题 下一主题

加锁解锁是怎么一回事?

[复制链接]
跳转到指定楼层
楼主
发表于 2005-9-24 16:04:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册登录,享用更多网站功能!

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

x
一直不明白加锁解锁的意义,为什么ug就对话框就还能用模态非模态来定义?我下面的问题可能与加锁解锁有关,但我一直不知道如何解决,诚望各位不吝指教,谢谢!

我用一个MFC非模态对话框调用几个带UG入口函数的动态库,得到几个二级对话框,如果用完一个对话框,关掉,起动另一个,没问题。可是当我用了一个对话框,忘记关掉就另起动了一个对话框,没关掉的对话框就被隐藏起来(应该没关掉)后面的对话框就不能正常运行了,为什么呢?我用的部分代码如下:
1。这是二级对话框的动态库入口函数(这是其一,其它类似)://#ifdef DISPLAY_FROM_USER_EXIT
extern void ufusr (char *param, int *retcode, int rlen)
{
    int  response   = 0;
    int  error_code = 0;

//   if ( ( UF_initialize() ) != 0 ) //一级对话框已初始化
   //        return;
        UF_UI_lock_ug_access(UF_UI_FROM_CUSTOM);//加锁
    if ( ( error_code = UF_STYLER_create_dialog ( "h.dlg",
           CHANGE_cbs,      /* Callbacks from dialog */
           CHANGE_CB_COUNT, /* number of callbacks*/
           NULL,        /* This is your client data */
           &response ) ) != 0 )
    {
          char fail_message[133];

          /* Get the user function fail message based on the fail code.*/
          UF_get_fail_message(error_code, fail_message);
          UF_UI_set_status (fail_message);
          printf ( "%s\n", fail_message );
    }

UF_UI_unlock_ug_access(UF_UI_FROM_CUSTOM);//解锁
//   UF_terminate();                             
    return;
}

2。这是一级对话框调用代码:
    char file_name[]= "../h_.dll" ;   
     FreeLibrary(hpart);
   HINSTANCE hpart=NULL;
    typedef void (WINAPI * LIBDLL)();
   hpart = :oadLibrary (file_name);
   LIBDLL lpproc;
lpproc = (LIBDLL)GetProcAddress (hpart,"ufusr");
if(lpproc!=(LIBDLL)NULL)
{
(*lpproc)();
}}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 支持支持
沙发
发表于 2005-9-24 18:49:25 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手板模型制作,在线3D打印服务

QQ|小黑屋|手机版|开思工具箱 CAD工具箱_CAM工具箱  

GMT+8, 2024-12-27 12:01 , Processed in 0.013764 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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