|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
3 f# m6 f# c8 V% D+ Q, I
% S4 U! _; r/ M; ?" m4 r* y使用内部函数实现枚举类型宽度设置- K0 n- t- t7 T
^9 |# U- f2 \& R9 X
可以自由设置宽度了 ( C8 u& K( c0 K8 |# U: H8 J
* N x& F7 a/ s, m5 t
- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
* O3 \1 O1 O+ @: W - {
& [$ z+ U. [6 L( j6 P - % i: B3 @2 z. @) a
- HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);
4 O3 x( w* m- j: F0 ]% L" b - HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);' J+ c: _& l s% h7 }2 F6 O+ K
- typedef void* (*TagToPtr_fp_t)(tag_t);/ I* Y8 `5 r! C8 s9 x) ~0 q
- typedef void(*setWidth_fp_t)(void*, int);1 w% f' j3 f- M& z( d# x
- S4 B$ {+ X$ u9 d4 C# S5 h- TagToPtr_fp_t TagToPtr = NULL;
( t6 s9 ^$ U6 j- {- w! N8 G - setWidth_fp_t setWidth = NULL;
! T, t4 o ~% b) N; `& e7 V - 2 |5 _$ u% J% A4 T5 w
- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
' v2 e ]! H3 y: o; Q* R" F - char* widthName = FUNCTIONNAME_SETENUMWIDTH;
* S, o! P, p! P" k& ?' f5 O& U
+ x# ]/ l" s8 g/ ^8 C6 M) A6 k! C- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);8 u& t* v& }- V0 [- ~
- setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);+ r, Y0 _- O& x0 c. f0 I
- ' Q% c4 B6 k) K% F8 ]4 \
- if (TagToPtr != NULL && setWidth != NULL)+ t/ s0 z( q) |7 F5 R
- {
# v* s0 D- @- O - setWidth(TagToPtr(enumTag), widthValue);2 [: S8 F a+ Y- y" b: R/ z
- }
/ G' w5 M$ m+ m- I8 k- V- j+ E - FreeLibrary(uifw);* U# }4 B4 {( Q3 O( R7 c% c5 ]
- FreeLibrary(syss); e, O( B7 y$ }3 K' s
3 |' p6 i* u- j# ^% y. p
+ P5 a( A- q* ~' |* Z% k- }
复制代码
& z# C2 d5 _" `& W0 `
i8 h4 B7 o( s. j |
|