|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
& ?2 h f; M2 y* f3 i* K: w
; J: p* ?7 b4 M- U使用内部函数实现枚举类型宽度设置1 Y) d% k: D9 |
; K @' G/ o" v- Z# N6 q可以自由设置宽度了
6 y, K/ \3 y5 M) G& c k5 z/ z4 t3 I0 u* A! r
- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
- N5 N' u$ O& a1 a - {
" M) P/ { d! q1 S% W* y) a - # J0 T! i& E Y f
- HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);/ K( d0 S! X r- ~' r
- HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);
/ H2 S2 k1 x$ ` - typedef void* (*TagToPtr_fp_t)(tag_t);
% R4 X: Y/ r8 n3 X. L1 h1 e8 ~ - typedef void(*setWidth_fp_t)(void*, int);. g+ I7 O D- ]" j1 U4 k7 r" E: a
/ ]; `+ C/ K ^+ S- TagToPtr_fp_t TagToPtr = NULL;
& o& M2 s: A) K' _; F& c - setWidth_fp_t setWidth = NULL;
B; f* F1 R7 l6 J
* B% f1 u6 l( ^+ [# c1 s- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";0 g" E. p% `. B; Y
- char* widthName = FUNCTIONNAME_SETENUMWIDTH;* L; b5 @: v: q4 @$ E
- , F: \5 K) Y0 _6 T, x0 {5 q
- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);7 |8 g+ a! y' e" V6 v* ]6 I
- setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);, j& n# a8 R7 ^6 e) g& X# R
- & N3 e! K+ Z, T/ ]0 v
- if (TagToPtr != NULL && setWidth != NULL)
! N7 q; |: ~2 T" V) M* x: a+ ] - {# {# e! \% G* ^+ K; r- Q1 R8 }
- setWidth(TagToPtr(enumTag), widthValue);
' H3 X! A( e+ H/ s; X) K2 T6 G - } G$ b% M7 p+ p4 N) n9 u( F0 _
- FreeLibrary(uifw);( C- _2 b4 Z& ~2 i8 |0 J6 B" o# A# K
- FreeLibrary(syss);
& R9 ~6 J- l O4 ? - 6 ?9 e& z& u5 l0 Y t
/ j7 E3 a0 d6 U' k' K/ M" T- }
复制代码
: i+ h( W* Y5 |; L5 Z5 h1 @9 _& V- \1 n
|
|