|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
8 G0 g; r" H4 x/ P
5 C0 k; J* }+ n/ s7 V* v使用内部函数实现枚举类型宽度设置
+ P% X/ g3 D# y: D$ m
) s- J: |* q" c3 s: S: @可以自由设置宽度了
0 y# K. Z+ {1 i: B
- F/ B8 \9 L: c- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
1 P+ S4 I9 l: O$ _% p$ ]" G/ S - {
$ _; K2 a' S2 U4 z -
+ E3 s: D/ ]( D0 a: Z0 T" W: d8 W$ v - HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);
) h" n X# K% | - HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);
; f5 V" q7 [) I7 J+ I$ O. q7 u - typedef void* (*TagToPtr_fp_t)(tag_t);
' i$ @6 x; m* l7 v3 w, p3 k7 L - typedef void(*setWidth_fp_t)(void*, int);0 {7 {, b5 }; a3 c/ s1 D: \
( Y3 G1 M$ e: {/ l' `, q- TagToPtr_fp_t TagToPtr = NULL;0 Q( G2 e% s% G
- setWidth_fp_t setWidth = NULL;
* m4 C3 F8 Q6 O. ? - * N, O0 O; K6 S; r- K; U) ]
- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
. a! Z. l5 V/ F. N - char* widthName = FUNCTIONNAME_SETENUMWIDTH;+ s- E9 S: c Y6 }' d
- , Q5 t0 W5 n# S! d
- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);
8 |* Z4 S4 H$ m! e) F - setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);
* n+ t4 O$ H# c8 _ d/ f0 \ - ! m" }5 X; B$ x# N
- if (TagToPtr != NULL && setWidth != NULL)
# P3 m( @% {3 k - {
) n+ |2 W# z- E* ^ - setWidth(TagToPtr(enumTag), widthValue);
5 V% c1 }6 @( W4 B! T% N6 M - }" A: X8 s% y2 k; y/ |* g/ Q
- FreeLibrary(uifw);
( s7 ]0 G4 j {# P+ R+ Q. K - FreeLibrary(syss);
j; ], V+ `1 ^* g# p4 @$ l2 o
6 H3 U( |5 N$ ~$ C- . p2 S2 o m; y9 E4 A: y" }1 s
- }
复制代码 3 ]" E1 d$ d5 |1 q
8 b6 } q u' C6 O |
|