|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
3 h' Q% `, Z5 @; U- W8 M5 v
" Z2 X: k- z) I) ^/ ?8 q
使用内部函数实现枚举类型宽度设置
0 X6 x w9 Y" n( @
; F* O- W4 m3 Q/ r& V! |可以自由设置宽度了
, I: u) X" J/ \5 {; G* g" B& j* w
- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)0 I3 }3 p" h* f( c+ T
- {
) m; r& b. c/ F1 h - , e3 }6 T x, @# I) @/ s; M
- HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);2 K, P( }+ L# |: q+ e
- HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);
: q2 W$ K+ v( s! M" t, Q - typedef void* (*TagToPtr_fp_t)(tag_t);3 I7 }' e# w3 [$ K# C1 [2 r8 w
- typedef void(*setWidth_fp_t)(void*, int);
& b F0 f- ^8 H6 Y6 A* u
5 P2 P6 d8 y& F- I2 t- TagToPtr_fp_t TagToPtr = NULL;* M8 O5 G. T/ N* L$ ]
- setWidth_fp_t setWidth = NULL;
7 |: y& N- i, t$ \
! ]. h' z a! c# d/ x3 B- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";1 ? ? h6 z$ M+ N
- char* widthName = FUNCTIONNAME_SETENUMWIDTH;$ h% E* A' F% N2 |9 w" p* ^- Z" A
- / r$ s, Z* U4 k$ P# j
- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);" o, A6 \+ x8 w! Q2 h
- setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);" ~! {9 T8 R: K
- / |& b4 I) s( a% M
- if (TagToPtr != NULL && setWidth != NULL)
' J% B4 }8 y2 R+ z - {
+ }4 `3 T6 D, D0 U- k: h - setWidth(TagToPtr(enumTag), widthValue);; o$ C' H, I7 c$ D! C4 ~. M, }' p+ q
- }
+ _& H0 e9 ?7 Y) Z6 Q - FreeLibrary(uifw);
0 T/ n- I6 B$ |8 B q q - FreeLibrary(syss);1 b$ P2 Y1 R, I4 ]2 V- t- w, N% O3 p: b
- l o6 Q+ H# _+ P( s
- , ^0 N" e& b( W$ M: s3 ^7 l7 p2 Z
- }
复制代码
+ z- p1 f, S: H' _( c+ |) T
4 ?4 y# e* F* |5 U9 e |
|