|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
9 j- R6 F2 K" ^9 q. _
. X, u6 U- W4 H3 X使用内部函数实现枚举类型宽度设置
& g0 } _9 W! A* r. u+ _$ D. E; l
可以自由设置宽度了
+ ~7 m" A/ C" {+ r. E% F
3 W7 S( t7 h% ^+ q* @2 s: M- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
* F+ e9 y A( O9 P5 Z, U - {
2 e8 A! K, B# N; r J2 L - % v2 |9 \3 Q+ a. T
- HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);$ r( W) S5 M' a: d
- HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);
! T% m# w9 Q1 f7 }; q/ A6 w - typedef void* (*TagToPtr_fp_t)(tag_t);4 _# Y4 }! ~7 J6 Z3 M, |
- typedef void(*setWidth_fp_t)(void*, int);
* @9 T" M' b: q) \# e$ U6 W4 M3 C8 K
( H5 {% D1 D' p/ @ t {7 Z" g- TagToPtr_fp_t TagToPtr = NULL;
: [3 k6 s. H& C# W - setWidth_fp_t setWidth = NULL;# D! p) @4 O4 o8 H
- 5 G8 _- f+ P3 U) E: ]8 x0 g z
- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";! A+ F; o4 p- k9 y
- char* widthName = FUNCTIONNAME_SETENUMWIDTH;) e/ _# q6 L. M
7 g+ j& W& b$ P' J+ @- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);
, W$ r4 s7 Y/ F) C& ^2 w - setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);
% Q- D7 b6 Q) o! ^ - ( r( X- @9 c. a/ V. Y* o
- if (TagToPtr != NULL && setWidth != NULL)
* v0 N# e6 T4 s+ Y6 Q9 F/ _ - {
/ Q8 z+ v1 V5 B6 {" E4 a - setWidth(TagToPtr(enumTag), widthValue);
8 Z& X; E H& A0 ~9 a - }
' ` r* Z. m. \" Z) b6 E& T7 C - FreeLibrary(uifw);
. u5 t9 E9 \, L7 n* w - FreeLibrary(syss);' ]2 h+ N- s. l0 [5 b
+ ^' {# P. F. ^8 V- . \* `1 s R9 I4 T
- }
复制代码
( Z- d5 H" v* s0 ?" i& A( h+ ]" s- E$ I0 \
|
|