iCAx开思工具箱

标题: 关于在UG中使用MFC的总结,并顺便向darkhorse问好 [打印本页]

作者: zhjb113    时间: 2003-9-27 19:38
标题: 关于在UG中使用MFC的总结,并顺便向darkhorse问好
我是张军波,偶然看到这里关于我以前的一篇文章的讨论,很高兴,但是很多人都反映按照我的做法不能正确的调用MFC,特此再把新作和一些调用MFC的经验总结一下
  
关于在UGOpen中使用MFC,可以看看这篇文章:
www.e-works.net.cn/ewkArticles/Category29/Article15522.htm
www.e-works.net.cn/ewkArticles/Category29/Article15522.htm
  
如果需要在MFC生成的对话框中,调用UG的对话框选择对象,需要先这样
//锁定资源
UF_UI_lock_ug_access(UF_UI_FROM_CUSTOM);
...
//调用选择对象的函数,比如选择特征
UF_UI_select_feature
//资源解锁
UF_UI_unlock_ug_access(UF_UI_FROM_CUSTOM);
  
欢迎继续讨论这个话题

      OK了..-darkhorse ::r

作者: bbrian    时间: 2003-10-9 08:12
张军波博士你好,我是李俊亭的同学,早知道你的大名,也见过你,我现在工作需要做点UG的二次开发,初级开始,有些问题不清楚,还想请教你,我看了你的文章,按照做,完全可以,但是你是如何进行出错处理的呢?还有我的一个程序,关于注册ACTIONS总是不成功,如下
  
static UF_MB_cb_status_t set_attr();
static UF_MB_cb_status_t new_part();
  
static UF_MB_action_t action_table[]=
{
  {"SET_ATTRIBUTE",set_attr,NULL},
  {"CREATE_NEW_PART",new_part,NULL},
  {NULL,NULL,NULL}
};
  
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
{
    /* Initialize the API environment */
    int errorCode = UF_initialize();
  
    if ( 0 == errorCode )
    {
        /* TODO: Add your application code here */
       
        UF_MB_add_actions (action_table);                           
        /* Terminate the API environment */
        errorCode = UF_terminate();
    }
}
  
错误提示:
D:\Ccc\Ccc.cpp(81) : error C2440: 'initializing' : cannot convert from '' to 'enum UF_MB_cb_status_e (__cdecl *)(void *,void *,struct MB_activated_button_s *)'
        None of the functions with this name in scope match the target type
D:\Ccc\Ccc.cpp(82) : error C2440: 'initializing' : cannot convert from '' to 'enum UF_MB_cb_status_e (__cdecl *)(void *,void *,struct MB_activated_button_s *)'
        None of the functions with this name in scope match the target type
  
菜单的ACTIONS是SET_ATTIBUTE和CREATE_NEW_PART。
作者: zhjb113    时间: 2003-10-14 13:27
你这样做当然不对了,应该将这两个函数定义为下面的格式
static UF_MB_cb_status_t set_attr(UF_MB_widget_t w, UF_MB_data_t client_data,  UF_MB_activated_button_p_t button);  
  
static UF_MB_cb_status_t new_part(UF_MB_widget_t w, UF_MB_data_t client_data,  UF_MB_activated_button_p_t button);
作者: mizzle    时间: 2003-11-24 16:08
不好意思,你的文章怎么看不到呢,能不能发到我信箱一份mizzle@hit.edu.cn
谢谢了
作者: yangdan    时间: 2003-12-16 13:34
张博士你好:
      我也是看到你的文章,开始用MFC dll进行开发的.只是我想实现从一个文本文件中读取数据,比如坐标点赋值给BLOCK等,从而实现造型,总是出错,无法读出文本文件中的数据,出现了Debug Assertion Failed!错误,UG退出.
      我读取文件使用了几种方法都不成:CFILE 和 CARCHIVE联合; FOPEN; FREOPEN等,均出错.
      请问你有没有好的办法?请指教.
程序如下:
  
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
{
    /* Initialize the API environment */
    int errorCode = UF_initialize();
  
    if ( 0 == errorCode )
    {
        /* TODO: Add your application code here */
      CFile SourceFile;//数据文件
      CString SourceData;//定义一临时变量保存一条记录
      SourceFile.Open("aa.txt",0,NULL);
      CArchive ar([$SourceFile,CArchive::load)]
  
    //  LPCTSTR  lpsz;
      ar.WriteString(SourceData);
      for(int t=0;t<2;t++)
      {
        SourceData="日期,开盘,最高,最低,收盘,成交量,成交金额";
      }
      
  
      while(NULL!=ar.ReadString(SourceData))//循环读取文件,直到文件结束
        {
          
  
          if(SourceData=="日期,开盘,最高,最低,收盘,成交量,成交金额 "||SourceData=="")
          continue;//跳过文件头部的提示信息
          //分析并填充//  
    //      MessageBox(SourceData);
          int nYear,j;
          for(j=0;j<=6;j++)
          {
            CString Year= SourceData.Left(SourceData.Find(","));//截取年前面的字符串
            nYear=atoi(Year);//类型转换
//            MessageBox("year  " + Year);
            SourceData=SourceData.Right(SourceData.GetLength()-SourceData.Find(",")-1);//将年以及前面的字符删除。
          //  MessageBox(SourceData);
  
          }
        }
  
        /* Terminate the API environment */
        errorCode = UF_terminate();
    }
  
    /* Print out any error messages */
   &nbsprintErrorMessage( errorCode );
}
  
我的邮箱:younghualin@163.com
作者: yangdan    时间: 2003-12-16 13:40
其中aa.txt是格式化的文本文件,其格式为:
日期,开盘,最高,最低,收盘,成交量,成交金额  
1996年10月10日,0,10,6,8,45,66,
1996年11月10日,0,11,6,8,45,78,
程序在执行到
while(NULL!=ar.ReadString(SourceData))//循环读取文件,直到文件结束
时,就出错.
  
该段程序在MFC exe中执行没有问题.
  
请问这是怎么回事.
  
谢谢
作者: wufei0108    时间: 2006-2-18 16:37
大家好!www.e-works.net.cn/ewkArticles/Category29/Article15522.htm 我上不了。哪位仁兄有张博士的那篇文章能不能给我发一下。我的邮箱:wufei0108@tom.com 不胜感激!
作者: zhjb113    时间: 2006-2-20 18:00
https://www.icad.com.cn/cadforum ... orum_id=7&page=
作者: wufei0108    时间: 2006-2-21 09:51
能再问一个超级菜鸟的问题吗?Document到底是什么?在UG的某一安装文件夹里还是在哪里能看到?




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