|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
, ?: B4 U: U* V$ J# l) i! o4 r: Q
r7 q/ @* b! R% Q
使用内部函数实现枚举类型宽度设置
# N5 m, w* ~. ~0 {' t/ \2 i/ n1 | _! w+ N; a/ _9 t
可以自由设置宽度了 9 h% j2 G: Z/ ?1 ]" w
( q$ Q q) k' p# o; Z: S$ s0 F# j
- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
0 c! q; s) \, ?0 h$ o6 P3 v, { - {: }% J F6 v6 p% F0 i' z" g4 A
-
* t" {! G9 \: U - HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);
: K) q5 `. S+ ^) S9 y N - HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);1 w* r' V# H& L
- typedef void* (*TagToPtr_fp_t)(tag_t);" X" x/ I' c: E0 c \6 @* e9 i+ V
- typedef void(*setWidth_fp_t)(void*, int);
9 a$ p+ S, S$ y# K6 o - , L) v3 W" C; A
- TagToPtr_fp_t TagToPtr = NULL;5 h( u' g. q2 {. P$ v
- setWidth_fp_t setWidth = NULL;
4 X6 S9 o9 ~+ P2 _ - 4 [- s, L2 q+ z/ ~2 A
- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
4 n- r5 w6 r( C8 X - char* widthName = FUNCTIONNAME_SETENUMWIDTH;1 W4 `0 V: _( A% `
- # m% J! d$ {$ U5 r7 }
- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);& e2 d0 S. C8 N' K
- setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);1 J) G* b9 [- z" H! N
7 B& a1 z( r$ e& C% b& K- if (TagToPtr != NULL && setWidth != NULL)1 _1 N0 f/ w) c6 G ~' B
- {% R/ E. d* U0 m& W `% f
- setWidth(TagToPtr(enumTag), widthValue);! l5 B1 ]6 ]( R8 h
- }
! a; V+ Z2 B, m" h; x _ - FreeLibrary(uifw);6 e6 C& G" e- G6 l8 B7 g
- FreeLibrary(syss);1 e6 l$ W4 V" s: q9 S% g9 {
J5 G& `+ r0 l' ]2 Q# T+ U- j- 5 d u( l4 }$ Y3 ?& y
- }
复制代码 0 n4 U# i m/ b6 E/ X0 G2 V5 d
b) W5 W$ {8 K- e y
|
|