|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
; i, F$ `5 P% ?% d. w
& |2 n6 h& v7 q' ~4 ]5 `8 y使用内部函数实现枚举类型宽度设置2 ?( P F2 s9 \/ S! s8 y
: v' ^% h, u; {) J a8 ^可以自由设置宽度了 5 e( N2 P# f. ] c# }
% ]! q/ T9 P1 K4 {" H. H7 v- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
) J# N% G2 F" w7 i! h" q, f - {+ x; I* \0 j& s# [6 q7 z1 ]+ ?
-
4 I0 r/ f) z, c; s+ N+ i/ h - HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);3 }4 M* W$ h+ Q5 F7 B" L% P
- HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB); z/ I+ N0 K7 q0 L+ f
- typedef void* (*TagToPtr_fp_t)(tag_t);3 ]' e: ?" U( \6 h- o5 ~/ L3 \
- typedef void(*setWidth_fp_t)(void*, int);- G; ^& I# _; r8 o* c6 t. G! C/ }
: p) Z2 p! T$ \& _& x- TagToPtr_fp_t TagToPtr = NULL;
- y& B$ H% E+ P7 O - setWidth_fp_t setWidth = NULL;; b# v! w# h" O( Z0 A& c
. e+ B) o' N" ?4 |( S- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
, a8 E0 I$ [, [" g1 k% F - char* widthName = FUNCTIONNAME_SETENUMWIDTH;$ ^5 g j( F! m" \
- % E' o: U" o2 ?, |: U
- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);
0 e$ W% P) P$ G( S+ H0 A" G+ w" V* ~ - setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);2 h w# T i5 A& Z
# J9 [' c) C* C( t- if (TagToPtr != NULL && setWidth != NULL)9 J) K# k8 C. P0 a
- {: N! k# z- M6 i. o# O2 T
- setWidth(TagToPtr(enumTag), widthValue);
, g9 [9 D$ N' m/ L+ p9 g" ]% N+ W - }
* p, K; X, j% i; g$ X6 e: E, H - FreeLibrary(uifw);$ n* |- E( M0 t+ i% q% |2 _+ X
- FreeLibrary(syss);6 w2 [& M+ l: Y
5 j8 h& d; \/ Z/ J- {. F* R- , k$ ~$ x( W$ A. B
- }
复制代码 , S. k" E- A$ T8 V, m/ g, Q: i% l1 P7 }
8 N( f2 r$ o! `" H' c
|
|