UG爱好者
标题:
帮忙 改下菜单程序 感激不尽
[打印本页]
作者:
syh521
时间:
2011-5-30 19:50
标题:
帮忙 改下菜单程序 感激不尽
本帖最后由 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 已跳过 ==========
为什么会这样的 请高手指点
作者:
sheng
时间:
2011-5-30 21:47
版主泡妞去了 明天让他看看
作者:
lovedongyao
时间:
2011-5-31 10:44
你有没有发现,你犯的错误其实只有一种,就是代号LNK2019错误啊,这是一种MFC里面的错误,哥们,昨天我在你的一个帖子上已经说过你了,你要多思考,不要一有问题首先想到的是求救,先看看靠自己的力量能不能解决,翻一翻C语言的教科书,查查MFC的语法,或是整理下MFC常见错误类型,这才是一个正确的学习态度,你这个学习编程的方式是相当不对的,一直这样下去你很难成长和进步的。这个错误应该是你环境变量没有设置好,或是包含文件没有加载全,也可能是lib文件没有加载全造成的吧,这些东西没弄好,怎么能链接到proe软件中呢??? 总之这都是二次开发里的低级的不能再低级的错误了
欢迎光临 UG爱好者 (https://www.ugsnx.com/)
Powered by Discuz! X3.2