|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
2 b: O% p0 Z& `- G, e1 f7 P' `- F- ?( y* K* m3 I" j
使用内部函数实现枚举类型宽度设置8 Z/ z" Z6 y E2 I8 P+ s. g
" u9 y8 c' f" y! j# M
可以自由设置宽度了 1 K. Y/ \+ _8 [3 b5 C
. d' [+ v1 e* e; w; m
- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)8 W! ?* V0 I) J/ b Q% R) i. V$ M
- {/ W4 p3 s' ?3 ~. l7 v; j, K8 r% N
-
6 C/ L5 x1 P$ }( n3 E - HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);" O/ j2 m- c: ~3 L
- HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);5 Z; ^, r' Z+ s J ~8 E
- typedef void* (*TagToPtr_fp_t)(tag_t);1 x; s) W3 C! Q) K) i
- typedef void(*setWidth_fp_t)(void*, int);$ Y( y" J$ G: U* M
; T$ p9 p2 o4 h- TagToPtr_fp_t TagToPtr = NULL;: }( t" ?6 g$ n% w9 M
- setWidth_fp_t setWidth = NULL;
% p! F3 f# ]' h: q* p" E4 ? - # x6 D- N( G, c9 `
- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
7 p ?5 c: q8 ?( D1 D& V - char* widthName = FUNCTIONNAME_SETENUMWIDTH;; J/ @; q2 \2 b) e' G
6 k0 n p* n6 A! Z2 R8 w# S" A- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);' q# H3 w5 H! o, M9 F& Z I' \
- setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);6 a5 B* u1 A6 [$ e
- ; d3 V! m2 z1 C$ g6 L( r; d! e
- if (TagToPtr != NULL && setWidth != NULL)
. t8 c u: p) S e0 \+ w - {0 O9 \% R: i9 K6 s) E
- setWidth(TagToPtr(enumTag), widthValue);7 T) b' G; K0 I# w# b# ]
- }5 z2 b. I* I/ y
- FreeLibrary(uifw); m1 g/ O1 D. _! q
- FreeLibrary(syss);
5 ~, M- B% E- y0 |, G - 8 Q# c$ C, y2 }% r; y7 w
% O1 X) B4 G( u- }
复制代码 ! P, L F- |! U. c
2 ?. \& U! X0 H; W* i& I
|
|