查看: 1266|回复: 0

[资料分享] 使用内部函数实现枚举类型宽度设置

[复制链接]

6

主题

4

回帖

60

积分

管理员

积分
60
发表于 2023-3-6 12:00:22 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

×

% P& W8 c' j9 D# b+ a: f( `7 {
, ^/ Q1 G2 T" f# P' I2 h) [使用内部函数实现枚举类型宽度设置
8 p5 }% V' r: ^& Z) e) A4 C3 Q, h/ g6 \* Q
可以自由设置宽度了
3 w+ Z8 j; R/ e  W* R7 H) D$ N& e
4 f, _1 s( e1 Y$ E
  1. void Utilities_InternalFunctionCast::setEnumBlockWidth(tag_t enumTag, int widthValue)( n/ i4 b2 o0 D6 N  k$ b/ t
  2. {
    . w& ]' H( E' C, j9 n7 O, n
  3.        
    " k* \2 e6 C7 L" k8 H# O
  4.         HMODULE uifw = LoadLibrary(INTERNAL_UIFWLIB);
    - |; L' b+ Z% l3 B; n8 v
  5.         HMODULE syss = LoadLibrary(INTERNAL_SYSSLIB);- Z2 n2 |& P4 e1 v
  6.         typedef void* (*TagToPtr_fp_t)(tag_t);( j) T' r5 g9 c' m0 O& e& D
  7.         typedef void(*setWidth_fp_t)(void*, int);
    $ N9 U) t2 F0 o" d  y
  8. ! m' J7 m: y- {! t4 h
  9.         TagToPtr_fp_t TagToPtr = NULL;
    0 Q; }2 _1 U: ~$ {) i
  10.         setWidth_fp_t setWidth = NULL;' N$ V2 ?2 x; j+ d! F! G

  11. , I* Z" S8 r1 a3 w: ]) ]
  12.         char* ptrName = "?TAG_ask_pointer_of_tag@@YAPEAXI@Z";: v, z) t3 i- g; @
  13.         char* widthName = FUNCTIONNAME_SETENUMWIDTH;' v# s( H$ ~( _5 K' {. z4 Z

  14. 6 W8 J. V( K  c$ F. x; R- G
  15.         TagToPtr = (TagToPtr_fp_t)GetProcAddress(syss, ptrName);+ p: r( N3 J( H+ W9 e- O4 v+ w
  16.         setWidth = (setWidth_fp_t)GetProcAddress(uifw, widthName);
    3 A4 a9 C& ^: s* Z! k

  17. 7 r! B0 J) N; n) _, l: J: m6 }+ A4 C
  18.         if (TagToPtr != NULL && setWidth != NULL)
    ; o1 j! s+ A! f) _& f6 U( c" @
  19.         {" A5 _1 A# t( V1 T
  20.                 setWidth(TagToPtr(enumTag), widthValue);3 x0 w) [& u: @3 w/ l& P
  21.         }
    . Q# a# R( E; L1 v! C) y) x
  22.         FreeLibrary(uifw);2 B7 {! d0 [' c. o
  23.         FreeLibrary(syss);, F7 G" C' [; \9 |* ^9 c

  24. / P2 `% ^& m6 g5 n6 l

  25. % a! q; k7 N# h+ ~) j2 x2 h
  26. }
复制代码
: o6 A0 J% X  H; {1 F

0 ]# v7 L1 J) @$ F9 ]
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部