QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
2天前
goto3d 说: 在线网校重磅上线MC2022&Inventor2022全新课程,虞为民老师、大表哥同事精彩讲解,快去围观!
2021-06-25
查看: 1261|回复: 0
收起左侧

[求助] 我新增菜单程序编译不成功,新手求助,望高手解求

[复制链接]
发表于 2010-12-31 19:54:32 | 显示全部楼层 |阅读模式 来自: 中国上海

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
我是一个刚接触二次开发的新手,刚买了一本 PROE4.0二次开发实例解的书,但是我照书上面看第一节基础,新增菜单条,按书上一步一步来但是总是编译成不成功% J& e. |( T( U" F2 G/ E+ R6 d

% P, |2 s$ {& J4 q4 K: J! \请高手指点下
8 k6 c' u2 j% J2 h' Y
  a# }( J4 a+ ?// 258mj.cpp : 定义 DLL 的初始化例程。
% |: F. A8 f" I0 [2 Q) w//$ G6 W2 Y$ P- m/ U
; j8 L7 Z4 q5 T' {5 u) K) B. v' A
#include "stdafx.h"2 z( s1 ^, z7 B  E( p2 ~) ^6 s* s
#include "258mj.h"' J2 k4 I& q. O& W- z! ?3 Q

9 T6 Y, @' r1 i" ~! m! u2 j' Y#include"ProMenu.h"# H9 p1 x3 ?+ W6 |$ _1 G1 L
#include"ProUtil.h"# q  B) R- @- p
#include"ProMenubar.h"1 s. L) `% Z0 Z% m6 d* n

! ^$ z& Q9 [$ k2 J6 }#ifdef _DEBUG
; V* C3 u7 {* N#define new DEBUG_NEW! d* F. f. I' j  G
#endif, r# h1 p/ T/ b3 m8 f* i8 z9 D
/ I$ y9 j) E$ n! ^
//
& T! O8 t8 |) V0 ]+ y0 ]//TODO: 如果此 DLL 相对于 MFC DLL 是动态链接的,: d6 t' j8 R$ r3 {3 q
//        则从此 DLL 导出的任何调入
& T6 w' c( @/ \* y% H//        MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到
1 E  p, n$ I+ B4 O$ S: b//        该函数的最前面。
) q, H( j- B1 j) I# [8 u//9 Y3 a% A* h, @# n/ I$ E' O
//        例如:
7 p% }5 a% t: \  I//
5 ~# Y5 k8 g# `8 ^! G//        extern "C" BOOL PASCAL EXPORT ExportedFunction()" P  a( E$ f2 ]$ I
//        {+ n9 D7 [+ p1 G7 {' ?  O7 u# q$ P
//            AFX_MANAGE_STATE(AfxGetStaticModuleState());" p" L+ E. U" ?- n! D
//            // 此处为普通函数体
* F* Y" B1 H% m! Q0 p- p3 k//        }
+ }: [$ Z$ W  c9 W# r+ ~//2 _; r3 q+ f- \) p+ q1 U
//        此宏先于任何 MFC 调用3 e* q8 N1 A1 ^
//        出现在每个函数中十分重要。这意味着4 Q& r) z" Y/ g% b
//        它必须作为函数中的第一个语句% b: l/ ~+ P0 q& f# V( _! I
//        出现,甚至先于所有对象变量声明,
$ C2 ]1 V% ]! m0 w6 ?//        这是因为它们的构造函数可能生成 MFC
' I, E5 R! D! ~//        DLL 调用。8 `) Y9 N; S9 P2 p- u8 v+ h3 q8 B
/// L5 f; V% i( d' u  ?6 L
//        有关其他详细信息,( _6 x' n/ z! A  U; g
//        请参阅 MFC 技术说明 33 和 58。4 q  j1 J- j6 E8 E! F
//- s0 X: y/ b* S% }. `
/ c4 Q: ~; l& J* V1 @% Q5 r
* n% R% A; P. c- L( v. i# v+ N
// CMy258mjApp
2 a! ^6 ^! g+ T. d2 Q4 G: }" f& C8 [7 r; P8 s! |7 G$ h' M
BEGIN_MESSAGE_MAP(CMy258mjApp, CWinApp)
5 C; G& s1 L# d5 hEND_MESSAGE_MAP()
7 `0 i$ `7 M% C. S5 o( Z2 c9 e6 E# |) x  y
# z0 p# ?. k0 Z/ S
// CMy258mjApp 构造, _& {0 z4 I1 Z! p

: i* z' b9 m( l+ S9 E, Q+ z! FCMy258mjApp::CMy258mjApp()
9 Q! }0 _- |9 e9 R1 m{
! L! A4 C( i. F    // TODO: 在此处添加构造代码,
  ]9 J' @7 m$ Y. s    // 将所有重要的初始化放置在 InitInstance 中0 o# ^- l" L/ a9 r( ]
}
6 {5 o# }' ]! k( P. I. l4 x3 i. I! \+ i  x- B2 t

% L$ v5 J* E: y  b* e  q// 唯一的一个 CMy258mjApp 对象
6 o/ l  c; g" @5 E! n. b, H6 k1 L4 |* \1 U! m- _. H8 Q
CMy258mjApp theApp;$ n, y4 O/ |9 a6 J: e- W  ^
8 R- A- F. i% _7 j3 c3 H5 Q
7 ~" w! T, w& I( L& ^" T
// CMy258mjApp 初始化$ [9 Y2 K- M! h" @, h8 s! z

6 y" h. |) \+ R8 RBOOL CMy258mjApp::InitInstance()+ x; F" O9 S4 Z
{
* T4 a& V* m; e; [. B% e    CWinApp::InitInstance();
9 p7 |5 @  p& W8 |4 c! W6 c+ `3 L2 @3 p2 C5 s; S! K
    return TRUE;
4 Z) A. T4 \! Q5 l4 }4 Y: s) E; n3 T1 U$ @2 {. M, V

" k& U- o' A/ p! i1 ~extern "C" int user_initialize()( ?2 Z% |( H7 @& F$ l' c
{
* t/ k4 j/ |0 y     ProError     status;. b6 S  _' x0 p+ \' n: l
     ProFileName  message_file;
3 U, ~' T/ ^$ {, h8 c7 ^% v     uiCmdCmdId   cmd_id1;0 A4 m* Q( m( |
     uiCmdCmdId   cmd_id2;' ~' i, R7 ]/ c% B) ^$ T& y+ Q- n2 s
- h/ @( r+ V8 V% ]. H0 N
     ProFileName MsgFile;0 @: x  b2 U: _3 M( u' v( e' X& P
     ProStringToWstring(MsgFile, "Message2.txt");
! s: N& j- W) {. U     status=ProMenubarMenuAdd ("CHECK", "CHECK","Utilities", PRO_B_TRUE, MsgFile);' C- e- B8 e; A

; ^5 o) t7 h1 \" e& ^. u! @     status = ProCmdActionAdd("ShowTest1",(uiCmdCmdActFn)messagebox,uiCmdPrioDefault,AccessDefault,
. F3 |. }, E/ Y7 G( {* r              PRO_B_TRUE,PRO_B_TRUE,&cmd_id1);0 \+ K$ G' [0 Y
     status = ProMenubarmenuPushbuttonAdd("CHECK", "messagebox", "messagebox","Active messagebox menu", NULL,
' Q+ X0 c8 i+ a! u' V" p2 o: J              PRO_B_TRUE, cmd_id1, ProStringToWstring(message_file, "Message2.txt"));" z2 @; g8 k5 A; m
- M6 i& g+ V, W+ d% U) W8 y0 p
     status = ProCmdActionAdd("ShowTest2",(uiCmdCmdActFn)modelpath,uiCmdPrioDefault,AccessDefault,
: b% S3 R+ l5 V+ u3 n# w              PRO_B_TRUE,PRO_B_TRUE,&cmd_id2);
. f  ?! n4 X  D3 B     status = ProMenubarmenuPushbuttonAdd("CHECK", "modelpath", "modelpath","Active modelpath menu", NULL,' D  Y/ s8 \/ J* {8 u
              PRO_B_TRUE, cmd_id2, ProStringToWstring(message_file, "Message2.txt"));
. r; O1 _5 Q7 n3 Q* k% U/ I9 a0 J  R5 v
     return status;' t( ]- c* g( g
}, {0 P- h9 o  ]: M
( e3 g. }4 f  P& t$ F
extern "C" void user_terminate()
; M4 Y; H1 D* _5 {) y+ \{' P+ b1 |& Q9 I0 R$ a1 I
   AFX_MANAGE_STATE(AfxGetStaticModuleState());; X% @- f5 G" z! X- ~
}+ a, \# E/ A. N# N' j5 }: s7 v% j( ^
/*================================================================*\- s8 c0 r/ T( S
FUNCTION: AccessDefault()
, c: D' @+ q6 _8 e" z' P\*================================================================*/
% v( d) \0 a' P% ^( nstatic uiCmdAccessState AccessDefault (uiCmdAccessMode access_mode)
: g6 [% H, Q) h% J9 O& g{
+ f7 @2 \1 i+ A0 O+ `9 }7 M    return (ACCESS_AVAILABLE);* b0 W' S4 |1 t1 D- t9 f- @
}
& I5 w% t$ d4 f9 ?int messagebox()/////////消息框
" |4 p: d3 L) Z/ n6 c{, I. v5 p' {7 g1 T! }( j+ P
    AfxMessageBox(_T("第一个程序!"));////弹出一个消息框8 H& j; X7 {+ ^1 I; g! I
    return(0);" e5 |' \6 L3 J
}
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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