|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
9 o9 Y9 ~/ ]4 V6 P M
: ^/ g! ]) @# m+ ~% t+ p% @& C使用内部函数实现枚举类型宽度设置
7 {* y7 ^% h" L& Y% [3 F
! Q# M0 W1 T: g |& B6 F* E可以自由设置宽度了
9 g+ w$ e, A/ O5 j7 h. `4 J6 @6 R+ F6 r2 v6 O8 ~) ^
- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)% V- Y. u! _ W0 _- @5 D
- {
u) y% V3 _9 u3 t9 k. b. L -
7 Z. a, d, N% G& J9 ^% C - HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);
3 H) @7 B9 c$ D, d5 t9 b' I - HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);
( n/ f' A$ }+ U6 ]; _+ I4 g - typedef void* (*TagToPtr_fp_t)(tag_t);1 y2 { d" z* `% U$ {/ P
- typedef void(*setWidth_fp_t)(void*, int);
& c$ w4 B8 n" a5 T
9 _8 H$ r: c3 `1 w3 Y9 r9 Y- TagToPtr_fp_t TagToPtr = NULL;4 Z9 c% W: @8 H/ {2 G" F
- setWidth_fp_t setWidth = NULL;
& n; s0 m" v z' \0 l" }
5 t) p9 r k5 C# o6 H$ Q- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
8 c0 K1 v6 j+ u Y5 | q - char* widthName = FUNCTIONNAME_SETENUMWIDTH;
: [/ `, A1 a7 s0 \3 g. D9 I; [' p - * J4 Q* X* b! |2 R
- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);3 }( p1 Z# [* P3 l" `! h2 {: E
- setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);
4 H2 ~0 t1 ?2 ~9 L2 o
5 S# |- V6 \) K+ ]- a( V2 f- if (TagToPtr != NULL && setWidth != NULL)4 x( ~' c4 _& R! B- U
- {7 |9 T. u, n l6 s
- setWidth(TagToPtr(enumTag), widthValue);' i1 l% U; ~/ S# c) e6 U
- }6 r$ h9 A" `9 n0 Y2 M* A
- FreeLibrary(uifw);
4 i2 C; W% B7 O9 |8 p3 y; ? n, \ - FreeLibrary(syss);
7 F- K4 e3 Y! G- _$ |3 B z: e - 9 f. d* H9 N& k9 D u* J
- 0 ?. F. f6 H; |8 ?" f# n% }. N" d
- }
复制代码
" ~" I: z6 q) k! j. R
* ?; W: j8 J7 v5 q1 {: C |
|