找回密码
 注册
搜索
查看: 4894|回复: 0

[收藏]在VC6.0中使用MSLU编写WIN98/2K下的UNICODE程序

[复制链接]
发表于 2005-4-1 18:20:01 | 显示全部楼层 |阅读模式
  编写WIN98系统下使用的UNICODE程序,可以使用MSLU。
# z: P$ W. L8 k. |' {% _0 f4 S  g8 w1 W
一、使用MSLU的选项4 Q* X- _3 J  v$ M. D
) d) j6 s8 A; o. C9 b" K! A
二、调用unicows.dll失败的处理
# ~; E6 a& T# l& W: f4 z6 ?% }
( H# J6 w. h9 o, l三、无法在MSLU上正常工作的函数处理4 e' t; {. R9 _. b

! }8 P+ a2 N- q' E% k! N8 A四、对于ON_NOTIFY通知消息的处理。1 m- W3 I! ?4 }0 `
- }6 v* x3 l7 S/ u

7 g2 |. J1 V' ~& f' i3 t( E6 r/ D+ p% c8 h. S2 K
一、使用MSLU的选项
0 Q- ^# a, D3 n+ G  _9 B
( b6 b7 C: ?6 y0 q* Y5 g  mMFC的静态链接Release版本
' z* W$ b0 N# t
' G1 U' I, t) S' f2 ?C/C++选项:
2 V8 w" L: Z) T& o* e+ W% l* r, x/ [" ~+ i6 e) q$ z
去掉_MBCS添加_UNICODE,UNICODE
6 U9 n/ ]4 `9 Z% t. b. J8 p' M
Link选项:" Y, q! d, U6 G) }) f& M8 C

& y2 o! Q2 i, W' ~Output->Entry Point Symbol:
  E6 A5 v, ~. G, Z, c( N
" z; w. r# A  hwWinMainCRTStartup
2 W& z. I, n! x0 t( Z% Q' v# ?0 T& ^; B5 @
Object/Library modules:
, P; p4 I! _. r' x/ @$ J" x, k8 I! L3 M" V# }  s! b, J
unicows.lib kernel32.lib advapi32.lib user32.lib gdi32.lib shell32.lib comdlg32.lib version.lib mpr.lib rasapi32.lib winmm.lib winspool.lib vfw32.lib oleacc.lib oledlg.lib uafxcw.lib libcmt.lib
  B7 f  [" B$ d6 Y' d
' V. u2 [" @3 H: AMFC的静态链接调试版本:" e! L% S, u: _
5 i; w6 [1 |6 C- v- _8 b2 p* H3 T
unicows.lib version.lib mpr.lib rasapi32.lib winmm.lib vfw32.lib oleacc.lib oledlg.lib uafxcwd.lib libcmtd.lib * h4 ~& W. ^7 ^4 f7 z
6 H5 l/ \' W/ D
二、调用unicows.dll失败的处理
2 U- `1 a* E$ o6 W  ^4 q- I* m
+ X1 K" P$ g& _当WIN98下无法加载unicows.dll时注册以下函数进行通知。
4 ~) r2 C+ V- Y8 o8 D0 C% [% b( H9 H6 Q5 f
HMODULE LoadUnicowsProc(void)
6 K6 k0 A4 ]4 R4 m6 [{* `  M" m4 m4 k" \) }: N" f
HMODULE hMod = LoadLibraryA("Unicows.dll");
4 `& M; P1 o5 c$ N; c5 n5 x* vif (hMod == 0)
3 M1 j1 z5 U2 A3 w- F+ Q: |{/ B' _" V& E: ?
  MessageBoxA(0,"Unicows.dll Unicode wrapper not found !",
/ f  @! T. t4 g: j2 ~0 B   "MWP",MB_ICONSTOP|MB_OK);9 ^: N. L. F0 u2 o
  _exit(-1);
. g. `6 v- r0 K}1 e, c# |' u/ i# G( n# R
return (hMod);
$ a+ u3 R6 z7 c1 l" D}$ j# R* F  Q# g6 }
extern "C" FARPROC _PfnLoadUnicows = (FARPROC)&LoadUnicowsProc;; w7 H% Y6 k4 R7 r7 ~/ Z' M5 s3 b
  x) n' R6 s. x; k2 o- k9 V
三、无法在MSLU上正常工作的函数处理" |; j. b/ X  C- G

$ U# [6 V3 _2 K6 T6 W) _( I有些函数无法在MSLU环境下使用,对于这种情况需要自己进行转换。# Q2 f% E4 [6 v
; j# O# l0 P+ @" E- W- O8 O+ a
例如mmioOpen
9 d2 ~+ _/ W2 o+ u: r  F
# w2 r$ x* u+ ]+ [; y  C  M#ifdef _UNICODE7 |) }4 ]9 M# u' `! k! i
if (IsWin98())& Z: x$ R  Y# }; I9 A3 u3 k
{
7 g" A0 m4 j/ J# }% W+ c  USES_CONVERSION;
5 }, i, I9 i& ~# M1 x' L  if (!(m_hmmio = ::mmioOpenA(W2A(lpszFileName), NULL, MMIO_READ|MMIO_ALLOCBUF)))# g0 v- R* Y3 u7 U
  {) k) K( p2 a: D. \& v1 k
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);+ L8 O7 I) t( a8 K
  return FALSE;
1 ]% K4 j& w3 b$ F  }
( k9 Z1 R# _0 }+ @  a; e}
: u5 B+ c& J+ v- ~4 l% lelse
. u- X* I$ H( `4 F{: B2 y/ l& O  e% m2 N
  if (!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))
$ f; k! v' J6 \  {% Y' t4 Z  V# E  L. F1 y4 R
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);
7 \6 j( J) I% ^0 S6 l6 E1 S2 r   return FALSE;: o! ^- |/ |% _. c! {! M
  }
* I- m1 f+ V) a}9 G" w8 y0 E1 A1 m. ~; n1 v
#else
' K1 x+ t) J. i0 t- V+ {if(!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))
" ~' ?/ L/ u- r. Y+ G: H8 n{& v3 ?; m" c  S3 U/ p6 ~6 r
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);
; }) ?* \* J: }/ G: S* d& l  return FALSE;) O) A1 ?+ k5 U6 u+ U( P& j* Q
}! r6 a! D- s7 P1 X, ^$ G# ^/ _
#endif
$ @- y# w9 C  d- t3 X
6 q- ^$ V; p" N四、对于ON_NOTIFY通知消息的处理。
+ r+ w' R( F& k# M" L" X8 t' }  T# c; j  a4 B1 a! q5 P
对于ON_NOTITY的通知,因为有区分UNICODE非UNICODE版本,需要注意,如:
7 B) F$ y) a+ H* k) W' h" \( m6 N: q. b
ON_NOTIFY(TVN_ITEMEXPANDING, IDC_PATH_TREE, OnItemexpandingPathTree)
0 n+ B8 o# Z* f. V& Q8 N+ Z/ W) r5 _2 |9 a1 q! j5 U
改为
" E& }: s/ ~1 G& w' l1 G; ?3 r7 B: ^- }2 g! K: T) @
ON_NOTIFY(TVN_ITEMEXPANDINGA, IDC_PATH_TREE, OnItemexpandingPathTree)
9 V' w- w. L2 o- ~ON_NOTIFY(TVN_ITEMEXPANDINGW, IDC_PATH_TREE, OnItemexpandingPathTree)
) ^- m  }; ^5 R) Y# z- a" m# H) w6 o; l* d! |% c
这样可以在WIN98/2K下正常工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2026-5-4 16:53 , Processed in 0.017666 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表