QQ登录

只需一步,快速开始

快捷登录

登录 或者 注册 请先

UG爱好者

查看: 2773|回复: 2
打印 上一主题 下一主题

[已解决] 帮忙 改下菜单程序 感激不尽

[复制链接]

列兵

Rank: 1

4

主题

8

帖子

0

积分
跳转到指定楼层
楼主
发表于 2011-5-30 19:50:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 syh521 于 2011-5-30 21:31 编辑

// Test_wchar_t.cpp : 定义 DLL 的初始化例程。
//

#include "stdafx.h"
#include "Test_wchar_t.h"
#include "ProToolkit.h"
#include "ProMenu.h"
#include "ProMenubar.h"
#include "ProMessage.h"
#include "ProUtil.h"
#include "ProUICmd.h"
#include <ProWindows.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
void Duangai1Fn();
void Duangai2Fn();
void Duangai3Fn();
void Duangai4Fn();
static uiCmdAccessState UsrAccessDefault(uiCmdAccessMode access_mode)//访问控制函数
{

        return (ACCESS_AVAILABLE);

}
//
//        注意!
//
//                如果此 DLL 动态链接到 MFC
//                DLL,从此 DLL 导出并
//                调入 MFC 的任何函数在函数的最前面
//                都必须添加 AFX_MANAGE_STATE 宏。
//
//                例如:
//
//                extern "C" BOOL PASCAL EXPORT ExportedFunction()
//                {
//                        AFX_MANAGE_STATE(AfxGetStaticModuleState());
//                        // 此处为普通函数体
//                }
//
//                此宏先于任何 MFC 调用
//                出现在每个函数中十分重要。这意味着
//                它必须作为函数中的第一个语句
//                出现,甚至先于所有对象变量声明,
//                这是因为它们的构造函数可能生成 MFC
//                DLL 调用。
//
//                有关其他详细信息,
//                请参阅 MFC 技术说明 33 和 58。
//

// CTest_wchar_tApp

BEGIN_MESSAGE_MAP(CTest_wchar_tApp, CWinApp)
END_MESSAGE_MAP()


// CTest_wchar_tApp 结构

CTest_wchar_tApp::CTest_wchar_tApp()
{
        // TODO: 在此添加构造代码,
        // 将所有重要的初始化放置在 InitInstance 中
}


// 唯一的 CTest_wchar_tApp 对象

CTest_wchar_tApp theApp;


// CTest_wchar_tApp 初始化

BOOL CTest_wchar_tApp::InitInstance()
{
        CWinApp::InitInstance();
    /*AfxOleInit();*/
        return TRUE;
}
extern "C" int user_initialize()
{
ProError     status;
ProFileName  MsgFile;
uiCmdCmdId   PushButton_cmd_id1,PushButton_cmd_id2,
PushButton_cmd_id3,PushButton_cmd_id4;
ProStringToWstring(MsgFile, "Message.txt");//设置菜单信息文件名
   
        /*=========================================================*\
添加菜单条
\*=========================================================*/
status=ProMenubarMenuAdd ("UserMenuBar", "UserMenu",
"Utilities", PRO_B_TRUE, MsgFile);
/*=======================================================*\
菜单条的下级子菜单设置
\*=========================================================*/
//添加下级子菜单项
ProMenubarmenuMenuAdd("UserMenuBar", "SubMenu", "SubMenu",
NULL, PRO_B_TRUE, MsgFile);
//设置菜单按钮的动作函数
ProCmdActionAdd("PushButtonAct1",(uiCmdCmdActFn)Duangai1Fn,
uiCmdPrioDefault,UsrAccessDefault,
PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id1);
//添加菜单按钮
ProMenubarmenuPushbuttonAdd("SubMenu", "PushButton1", "PushButton1",
"Adding a push button to the ProE menu bar", NULL,
PRO_B_TRUE, PushButton_cmd_id1, MsgFile);
//设置菜单按钮的动作函数
ProCmdActionAdd("PushButtonAct2",(uiCmdCmdActFn)Duangai2Fn,
uiCmdPrioDefault,UsrAccessDefault,
PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id2);
//添加菜单按钮
ProMenubarmenuPushbuttonAdd("SubMenu","PushButton2","PushButton2",
"Adding another push button to the ProE menu bar",NULL,
PRO_B_TRUE,PushButton_cmd_id2, MsgFile);
//设置菜单按钮的动作函数
ProCmdActionAdd("PushButtonAct3",(uiCmdCmdActFn)Duangai3Fn,
uiCmdPrioDefault,UsrAccessDefault,
PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id3);
//添加菜单按钮
ProMenubarmenuPushbuttonAdd("SubMenu","PushButton3","PushButton3",
"Adding the third push button to the ProE menu bar",NULL,
PRO_B_TRUE, PushButton_cmd_id3, MsgFile);
//设置菜单按钮的动作函数
ProCmdActionAdd("PushButtonAct4",(uiCmdCmdActFn)Duangai4Fn,
uiCmdPrioDefault,UsrAccessDefault,
PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id4);
//添加菜单按钮
ProMenubarmenuPushbuttonAdd("SubMenu","PushButton4", "PushButton4",
"Adding the forth push button to the ProE menu bar", NULL,
PRO_B_TRUE, PushButton_cmd_id4, MsgFile);
return status;
}
/*=========================================================*\
FUNCTION: user_terminate()
\*=========================================================*/
extern "C" void user_terminate()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
}
/*=========================================================*\
FUNCTION: AccessAvailable (菜单项的访问权限设置:可选)
\*=========================================================*/
static uiCmdAccessState AccessAvailable (uiCmdAccessMode access_mode)
{
return (ACCESS_AVAILABLE);

}
错误
1>Test_wchar_t.obj : error LNK2019: 无法解析的外部符号 "void __cdecl Duangai4Fn(void)" (?Duangai4Fn@@YAXXZ),该符号在函数 _user_initialize 中被引用
1>Test_wchar_t.obj : error LNK2019: 无法解析的外部符号 "void __cdecl Duangai3Fn(void)" (?Duangai3Fn@@YAXXZ),该符号在函数 _user_initialize 中被引用
1>Test_wchar_t.obj : error LNK2019: 无法解析的外部符号 "void __cdecl Duangai2Fn(void)" (?Duangai2Fn@@YAXXZ),该符号在函数 _user_initialize 中被引用
1>Test_wchar_t.obj : error LNK2019: 无法解析的外部符号 "void __cdecl Duangai1Fn(void)" (?Duangai1Fn@@YAXXZ),该符号在函数 _user_initialize 中被引用
1>Debug/Test_wchar_t.dll : warning LNK4088: 因 /FORCE 选项生成了映像;映像可能不能运行
1>LIBC.lib(crt0init.obj) : warning LNK4254: 节“.CRT”(40000040)合并到具有不同属性的“.data”(C0000040)
1>LIBC.lib(crt0init.obj) : warning LNK4253: 节“.CRT”未合并到“.data”;已合并到“.rdata”
1>生成日志保存在“file://c:\Users\song\Desktop\Test_wchar_t\Debug\BuildLog.htm”
1>Test_wchar_t - 4 个错误,17 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========   





为什么会这样的 请高手指点

有奖推广贴子: 

回复

使用道具 举报

上尉

3D世界网创始人

Rank: 6Rank: 6

544

主题

3097

帖子

5880

积分
沙发
发表于 2011-5-30 21:47:42 | 只看该作者
版主泡妞去了 明天让他看看
回复 支持 反对

使用道具 举报

列兵

Rank: 1

15

主题

78

帖子

0

积分
板凳
发表于 2011-5-31 10:44:18 | 只看该作者
你有没有发现,你犯的错误其实只有一种,就是代号LNK2019错误啊,这是一种MFC里面的错误,哥们,昨天我在你的一个帖子上已经说过你了,你要多思考,不要一有问题首先想到的是求救,先看看靠自己的力量能不能解决,翻一翻C语言的教科书,查查MFC的语法,或是整理下MFC常见错误类型,这才是一个正确的学习态度,你这个学习编程的方式是相当不对的,一直这样下去你很难成长和进步的。这个错误应该是你环境变量没有设置好,或是包含文件没有加载全,也可能是lib文件没有加载全造成的吧,这些东西没弄好,怎么能链接到proe软件中呢???   总之这都是二次开发里的低级的不能再低级的错误了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

 
 
QQ:1359218528
工作时间:
9:00-17:00
 
微信公众号
手机APP
机械社区
微信小程序

手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )    论坛管理员QQ:1359218528

本站信息均由会员发表,不代表本网站立场,如侵犯了您的权利请联系管理员,邮箱:1359218528@qq.com  

Powered by UG爱好者 X3.2  © 2001-2014 Comsenz Inc. GMT+8, 2024-11-23 13:39

返回顶部