这个是基于UG的一个信息管理系统的设计,ug是一个类似于Auto CAD的三维作图软件,他自身带了一个叫做UIStyler的用户自定义界面的程序,可以做出这样的一个界面:
 
之后它会自动生成一个标准的代码框架,就像extern void ufsta (char *param, int *retcode, int rlen)这样的(书上说这些就是入口啊什么的我实话不太懂。)
然后在那个里面不是有什么添加啊,保存啊,还有一些输入对话框吗,他们都是实现的和数据库的连接后的数据提取,显示,更改的功能。现在的问题重要就是和数据库连接不成功(带式代码却可以运行)。
因为到底能不能用还要在电脑上安装UG,比较麻烦,所以就请大家帮我看看这个代码,我是在网上找的比较成型的那种连接接口的函数块,高亮部分,但是不能成功连接麻烦大家啦~~谢谢啦代码从一楼发数据库callbackug

解决方案 »

  1.   

    // MaterialInfo.cpp : Defines the initialization routines for the DLL.
    //#include "stdafx.h"
    #include "MaterialInfo.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif/* The following definition defines the number of callback entries */
    /* in the callback structure:                                      */
    /* UF_STYLER_callback_info_t MAT_cbs */
    #define MAO_CB_COUNT ( 6 + 1 ) /* Add 1 for the terminator */CString strtemp;
    CString str_tmp1,str_tmp2,str_tmp3,str_tmp4,str_tmp5,str_tmp6;//add_:添加标志;
    int add_=0;
    char DbType;//定义数据库指针
    CDatabase *m_pdatabase;
    CRecordset *m_pset;
    _ConnectionPtr m_DBCnt;
    _RecordsetPtr  m_pRecordset;/*--------------------------------------------------------------------------*/
    static UF_STYLER_callback_info_t MAO_cbs[MAO_CB_COUNT] = 
    {
     {UF_STYLER_DIALOG_INDEX, UF_STYLER_CONSTRUCTOR_CB  , 0, MAO_constructor_cb},
     {UF_STYLER_DIALOG_INDEX, UF_STYLER_DESTRUCTOR_CB   , 0, MAO_destructor_cb},
     {UF_STYLER_DIALOG_INDEX, UF_STYLER_APPLY_CB        , 0, MAO_apply_cb},
     {MAO_MATERIAL           , UF_STYLER_ACTIVATE_CB     , 0, MAO_mao_type_sel},
     {MAO_PART              , UF_STYLER_ACTIVATE_CB     , 0, MAO_partname_type_sel},
     {MAO_BTN               , UF_STYLER_ACTIVATE_CB     , 0, MAO_btn_cb},
     {UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 }
    };/*------------------------------------------------------------*/
    static UF_MB_styler_actions_t actions[] = {
        { "MaterialInfo.dlg",  NULL,   MAO_cbs,  UF_MB_STYLER_IS_NOT_TOP },
        { NULL,  NULL,  NULL,  0 } /* This is a NULL terminated list */
    };
    /*------------------------------------------------------------*/
    extern void ufsta (char *param, int *retcode, int rlen)
    {
        int  error_code;
     
        if ( (UF_initialize()) != 0) 
              return;
                                                     
        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 ); 
        }
                                                     
        UF_terminate();                             
        return;
    }
    /*------------------------------------------------------------*/
    extern void ufusr(char *param, int *retcode, int rlen)
    {
        int  response   = 0;
        int  error_code = 0;
     
        if ( ( UF_initialize() ) != 0 ) 
               return;    if ( ( error_code = UF_STYLER_create_dialog ( "MaterialInfo.dlg",
               MAO_cbs,      /* Callbacks from dialog */
               MAO_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_terminate();                             
        return;
    }/*------------------------------------------------------------*/
    extern int ufusr_ask_unload (void)
    {
         /* unload immediately after application exits*/
         return ( UF_UNLOAD_IMMEDIATELY );     /*via the unload selection dialog... */
         /*return ( UF_UNLOAD_SEL_DIALOG );   */
         /*when UG terminates...              */
         /*return ( UF_UNLOAD_UG_TERMINATE ); */
    }
    /*------------------------------------------------------------*/
    extern void ufusr_cleanup (void)
    {
        return;
    }
    /*-------------------------------------------------------------------------*/
    /*---------------------- UIStyler Callback Functions ----------------------*/
    /*-------------------------------------------------------------------------*/
    //在构造函数中初始化,将数据库中的产品列表信息调入显示窗口中int MAO_constructor_cb ( int dialog_id,
                 void * client_data,
                 UF_STYLER_item_value_type_p_t callback_data)
    {
    UF_STYLER_item_value_type_t item_data;     /* Make sure User Function is available. */  
         if ( UF_initialize() != 0) 
              return ( UF_UI_CB_CONTINUE_DIALOG );     /* ---- Enter your callback code here ----- */
    /*-------------数据库初始化-------------*/
    //----在构造函数中初始化数据库,并将材料信息显示在界面中----//CString strtemp;
    strtemp = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
    strtemp = strtemp + JigPath;
    strtemp = strtemp + "\\application\\Mao_Manage.mdb"; try                 
    {
    CoInitialize(NULL);
        m_DBCnt.CreateInstance(__uuidof(Connection));
    {
    m_DBCnt->Open(strtemp.GetBuffer(strtemp.GetLength()),"","",adModeUnknown);
    }
    }
         catch(_com_error e)
     {
          AfxMessageBox("数据库连接失败,确认数据库设置是否正确!");
      return TRUE;
     }