|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
1 o$ Q4 t4 F3 `6 w( I8 e4 |
" Y. A8 J8 p( X$ K6 S: C' t使用内部函数实现枚举类型宽度设置0 O) p* u" V7 u% g
" f6 \7 @9 ^1 |0 v6 k
可以自由设置宽度了
! b/ q# y/ @) q: J* G# V2 s; G0 { A+ w2 J1 t2 |
- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
2 P P+ Y& X* C6 r - {+ t0 u) t+ h) A! u* w. x Y0 F
- 8 z- e; @3 u; H5 A/ N- f! L
- HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);
2 G6 l5 |! v z6 E3 J5 j - HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);7 c: t+ i7 P3 p5 E: m3 [9 F
- typedef void* (*TagToPtr_fp_t)(tag_t);
" J" E9 _2 k* b, i7 B" @ - typedef void(*setWidth_fp_t)(void*, int);
. W: R9 \% o; j7 W+ K& X6 w0 f o - " n0 L2 O6 ]5 ]" w7 \, J. F
- TagToPtr_fp_t TagToPtr = NULL;
0 I* l& {* | ^/ K; r9 ?1 { - setWidth_fp_t setWidth = NULL;
: x2 ^6 e r9 m6 o3 v& T% K - # m7 ]5 h. L( n
- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
+ I" X) h1 o9 Y r - char* widthName = FUNCTIONNAME_SETENUMWIDTH;/ u4 p% I1 p' G( I
- ! y% f+ ?: |6 i3 G
- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);
0 O9 c, P! K f - setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);2 d8 O" L, @4 t0 r5 L
- 4 Y6 L% s: q6 A0 S. ^% T; ^
- if (TagToPtr != NULL && setWidth != NULL)
% P& N1 D9 r- P. x - {
$ r" V2 {/ s. [# F+ d - setWidth(TagToPtr(enumTag), widthValue);1 c1 f: ] e8 C5 }
- }
/ X. s* G6 q/ q" E2 P* r) ~ - FreeLibrary(uifw);
$ u+ g$ ?' k4 k* v% O( y7 I5 C8 R - FreeLibrary(syss);( Q! |9 g' U' o/ r
- " c- o, S: }0 A% S2 r R
- 1 h' P6 z/ @2 d; g/ s0 X7 k K3 G
- }
复制代码 * i. W g l5 z# U0 l
3 g+ b$ L' U/ x, a9 i3 N, @
|
|