|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
/ m5 i4 \# O! m0 A. i* z
* ^! U; F' H. y, P* c使用内部函数实现枚举类型宽度设置! o3 T/ ?$ x6 Q( S& {( R: F% J
' ~ ]* y; f7 O% R* [
可以自由设置宽度了 ! m0 ]- _! o. |! P3 C* h1 K+ T
5 i2 [& f+ Q1 q4 r
- void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)
# H' K8 C+ o5 V p9 y2 r/ |1 q - {
8 f4 ?+ e$ t8 y: @5 |; {+ z - 2 o- q4 I8 W# K( b
- HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);
, s( c7 o4 Z5 Z$ f* u6 ?4 h+ a2 R - HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);
* T4 Y7 c2 S; g2 G% x# t# N9 c - typedef void* (*TagToPtr_fp_t)(tag_t);* H% D! ]& \& y. s @+ H
- typedef void(*setWidth_fp_t)(void*, int);
0 u0 p; P" H# B. X w! j" H j
, r& P' ], I$ N- _- TagToPtr_fp_t TagToPtr = NULL;1 Y0 K; o; ~9 U0 C% \, o* o" A
- setWidth_fp_t setWidth = NULL;
2 M" F2 `4 \& J' }: k - 4 ^ g' H- F1 @4 t
- char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";
0 |1 v. u* H3 V7 _/ p - char* widthName = FUNCTIONNAME_SETENUMWIDTH;
- M7 t$ J( H" ]8 {; G3 u - ; { C6 ]4 s: \# w3 V7 J2 [0 ?0 U5 P- u' ?
- TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);
/ ~% Q2 ?' R+ o6 j, y6 Y - setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);4 B, t9 E/ E9 R( b
6 A9 _5 y8 a7 j! ~( T' @3 k; w1 X- if (TagToPtr != NULL && setWidth != NULL)0 j* r' \( |" Y, q* x
- {
5 t$ a& z0 m2 M6 V* [- U8 m& R - setWidth(TagToPtr(enumTag), widthValue);. y2 ^2 x6 K1 H3 t$ e
- }1 o3 p1 Q: o8 n o. i
- FreeLibrary(uifw);
h4 w8 `6 L7 \% F8 x3 P - FreeLibrary(syss);
' G' W6 }' j8 U: ^) Z4 k; x7 ] - 1 H t. z J! V: Z$ z% H+ \
- 6 b+ g. e; t4 E1 s! j2 C
- }
复制代码
: v7 V: B a& u8 Q: O" J( R- G# V0 n% c0 Y
|
|