|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
, v2 e, F. o) a! y; e4 m1 L7 t: P9 C1 z7 U4 K
使用内部函数实现枚举类型宽度设置+ j3 c6 I; M! \+ H
9 g' R: B$ E6 H( e" U" h可以自由设置宽度了 i$ B5 b; @' j9 P" m( z. m
# r, O' G, _3 z0 C3 g
- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
8 M7 e4 v; }4 T8 ` - {3 @" F6 P; `5 B# h8 z, \
-
. f, {/ f \) s - HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);
; J: f; e2 f$ {+ L" C* }( l- V - HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);& o8 ~! Y5 X5 \+ C# D' z1 g( j
- typedef void* (*TagToPtr_fp_t)(tag_t);
) C7 B* z4 L1 |$ U' a* h - typedef void(*setWidth_fp_t)(void*, int);1 a2 s+ z, x& L
: R6 w& o2 V. Z4 F2 J( o- TagToPtr_fp_t TagToPtr = NULL;
. C. v1 t6 n B$ D& V( O - setWidth_fp_t setWidth = NULL;/ s( U9 H& i, A
- 6 n) [7 B" A; E/ J! ]7 W
- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";1 W- v! U$ l9 e, g. `1 Y* M: s
- char* widthName = FUNCTIONNAME_SETENUMWIDTH; t8 V3 e+ w4 V+ ^
- % x/ W8 H- X" Q& L2 o
- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);+ g7 o8 ~. F' }5 G6 _/ O
- setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);
0 Y: R& _( ~" P! {" o4 I6 `6 H" o - " a. M& {0 P% L% w4 e8 G
- if (TagToPtr != NULL && setWidth != NULL), ?7 R; q+ q3 B: L2 e
- {
+ M ?2 j5 V7 v% Q) L3 j - setWidth(TagToPtr(enumTag), widthValue);
( u) {& n" R& f% M; z - }
% c) M4 O2 \$ { - FreeLibrary(uifw);
3 c9 f( p, c/ ~; F9 T - FreeLibrary(syss);
+ |3 f- m' B* G - + k* F1 X4 J& y& e$ m8 N
' z3 U% L. Z j' J% x$ K( T- }
复制代码 , f% x3 I* a' @9 M4 z
/ e& ?% S) g, ~' t4 N
|
|