|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
5 E, k% s. ^, m- c
7 f# w; N7 W4 o6 Q( n! Y' X# E使用内部函数实现枚举类型宽度设置, O6 F5 c: F* }* S# v
, A. Z/ m& f) F
可以自由设置宽度了
7 T; P# u, }9 v7 E# h
8 J7 ]5 J/ h( F3 y2 S. ]8 r4 q- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
$ d! [$ c' G5 G. D5 Z/ T! O, j - {. g, t. z$ K% @# g5 v) E/ |
-
/ j3 ?1 b. E1 G" W/ Q. d( x - HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);" D6 W: r4 o. L: a' }
- HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);
) S1 U4 v8 d# {3 h3 ~" M1 h - typedef void* (*TagToPtr_fp_t)(tag_t);$ z9 U* } ^, B- L2 X" h) a6 C
- typedef void(*setWidth_fp_t)(void*, int);7 o0 l! n4 I3 _4 R5 N) A9 D" L: Z
1 O" X o7 E k% t6 h' \- TagToPtr_fp_t TagToPtr = NULL;" |0 [2 O8 Q7 L* w
- setWidth_fp_t setWidth = NULL;5 e& N; `( T8 t! n' b# A
- " s! }" `% T3 i" b0 f! _8 R
- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
$ W# B" G* F' D4 S! X - char* widthName = FUNCTIONNAME_SETENUMWIDTH;
$ ?3 f# s- |1 g) k# o8 r) O
0 U/ D7 H1 M8 p2 P0 o- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);0 N# W2 B6 x2 ^' J2 u2 }5 A8 q
- setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);
6 `" I2 A- T+ o& O" u
" _+ @; T" ?( i0 B6 Q: l$ ~, l# j0 p- if (TagToPtr != NULL && setWidth != NULL), e8 i2 ~/ c; X* G3 P# I2 |
- {
& }) {+ U/ N1 J: L - setWidth(TagToPtr(enumTag), widthValue);
5 L) u& s* t& E - }
; k& L0 ?; ]0 a( t2 _5 }* _2 @. D) P - FreeLibrary(uifw);9 e4 t6 u! H6 Q. z
- FreeLibrary(syss);' y! P9 S7 V# ^: V- g" R
- . j, U& E( F* E" a
- * W7 X+ I% [- c: v' c# B
- }
复制代码
( M$ f8 m& P9 u$ u# L
) I( e* Z+ E9 [ |
|