|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
9 E+ H$ B4 W$ n# K' i+ u8 D
4 [# n! }! p, H S4 A使用内部函数实现枚举类型宽度设置2 n! x+ [* O+ b; r
6 T" N# H$ K& E/ C D可以自由设置宽度了
" W, T0 T# \% S. I8 Y) O# n) h( m) P
- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
/ q& V$ S/ Q1 y+ F( r* {6 [ - {4 r' Y3 `2 l! g7 F
-
/ p6 T0 `6 [1 P! I+ c3 ~. m$ B7 ` - HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);. w" [: f4 k @1 b2 a
- HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);6 V/ m% [& I% ]/ G
- typedef void* (*TagToPtr_fp_t)(tag_t);
1 ^7 s& u( T: c7 F) L, z - typedef void(*setWidth_fp_t)(void*, int);
G2 w- Q# B/ V1 z! O/ E; O$ {* t - 4 A% i1 Y8 u* H4 u) n) j
- TagToPtr_fp_t TagToPtr = NULL;' S3 F8 [, Z+ M8 x$ [# f
- setWidth_fp_t setWidth = NULL;, r" G1 @4 z" U5 b B- c
- ) i' f3 z. j% _" K' D0 d/ k
- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
# t: q7 f' |, P: o' } - char* widthName = FUNCTIONNAME_SETENUMWIDTH;
5 ?2 z8 O f. o2 r: ~ - 8 C! E5 \/ Z. [: \/ }, ], k
- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);
& v* P: r" v$ e8 p$ ?6 B - setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);
7 c: z% `" p9 I - 2 m& Q$ Z* d6 Q6 @3 k9 @9 ]! g6 U' X
- if (TagToPtr != NULL && setWidth != NULL)4 N% M5 ]' [. B* ~/ P1 G
- {# A4 W0 T0 ]# {: v
- setWidth(TagToPtr(enumTag), widthValue);
2 E! |& h4 R% E, L6 M - }3 z7 u. ]- G! O# ^. V! B1 R
- FreeLibrary(uifw);; O. u- _/ \5 ~ K( ?6 h
- FreeLibrary(syss);) j* O4 f/ d/ o: I' j% Z" N
4 g( D" H4 r/ ?" F( v! Q- : i3 o: M' l" {- y4 a
- }
复制代码
' b& C* d! v& M+ ^) d, M6 q5 h$ z' b% b% v+ t$ K
|
|