|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
- a" w( P0 V/ j* S
2 G6 g3 a% g9 K5 z) T+ E: s
使用内部函数实现枚举类型宽度设置8 c+ a3 Q8 U/ G1 n$ f4 w' [ K
. |5 E% Y0 Q0 c; _8 z
可以自由设置宽度了 0 W# D9 B c) z5 R0 N0 ]1 C
: d- E) n2 L" A( J- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)3 ?% ~6 y1 t/ m. p1 U' Z1 a) o% M
- {
; i; Z) ?. g7 t+ I- T - . u! ?: W' K3 ^2 B
- HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);$ F- G5 A* ~! Q: z9 x
- HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);
) l5 K! ^1 @% d. Z- F* w4 Z - typedef void* (*TagToPtr_fp_t)(tag_t);
2 v$ }' d. _2 _, P - typedef void(*setWidth_fp_t)(void*, int);9 G7 R) A; H# L" Q; c
- ( D2 V! X3 K/ X# {: r4 q
- TagToPtr_fp_t TagToPtr = NULL;; `2 a7 e9 a% B4 k" }' g! u
- setWidth_fp_t setWidth = NULL;
8 M! `% X3 a- b/ G
! D+ U' a* O& D- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
( G. m, I- H# |/ v: J; W* A1 M - char* widthName = FUNCTIONNAME_SETENUMWIDTH;
3 c8 B( W$ }: O, I) z
# ?2 ?" g5 k! K0 Q- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);( i( |' n$ T" _+ x) b
- setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);
) ]7 @8 W# w+ h3 n" j6 p, Q3 V
]' u0 u2 i! ^9 ~5 o9 N; o5 U- if (TagToPtr != NULL && setWidth != NULL): n& w3 D. y; ~7 p' H" W1 l/ n
- {
6 F2 n1 A) o+ W - setWidth(TagToPtr(enumTag), widthValue);
' m8 \" J" ?4 ~" ]. b3 v2 E7 O - }
) w) x& Y3 b" H" G9 S - FreeLibrary(uifw);4 C( c/ ?/ ~- P0 X/ |' K3 {
- FreeLibrary(syss);
) C9 p7 }. O5 o, C/ b# f9 ] - , t0 b V/ J' R" P
- 3 @$ @2 ]% y8 v5 {6 h2 Z
- }
复制代码 , K5 @& @ ]8 O4 d: k2 y
& J4 L- e. M; q9 C, ~; O/ e |
|