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

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

[复制链接]
发表于 2005-4-1 18:20:01 | 显示全部楼层 |阅读模式
  编写WIN98系统下使用的UNICODE程序,可以使用MSLU。
/ \$ U! p* ^1 R) B" L  j3 p6 u, ~+ f/ R0 f7 [3 `; J
一、使用MSLU的选项. S, H) W8 j  `  p; X- c
' }( S; X- k% `, d* P& A) h& b$ W
二、调用unicows.dll失败的处理/ G/ B/ R, K! y; V* s9 v; E

( B; i: X# T3 G  C/ m三、无法在MSLU上正常工作的函数处理
$ B  M) v3 _" ~& G& e. R6 ~4 p$ j
四、对于ON_NOTIFY通知消息的处理。
2 R' ]0 X2 g# K+ {! h% e7 @5 X2 V/ k9 I, u) D

3 r* j) ^' E  R- E. R) J: W0 |$ _7 q+ C8 B  N2 E* h! Z
一、使用MSLU的选项, Y* W( w3 D! c9 a! A

9 |- ]; K( X' ]MFC的静态链接Release版本, z, s4 L# @9 i+ M4 ]
; s' [8 L* n2 J. V  R1 j) u1 m
C/C++选项:* K5 g) Y) S/ T
- x4 G2 U8 m  t2 ~
去掉_MBCS添加_UNICODE,UNICODE# m) c& y; K/ ?* J+ D6 b" k

7 m" W8 @/ B. V) P3 G5 ?  k& X& ~Link选项:1 f4 V# E! i# l& F
) q/ t* }4 I' ]- z4 E* x
Output->Entry Point Symbol:  u$ I/ V6 B/ l/ |: z+ G% P+ Z+ v
7 ?' ~0 R' e) s& e: y
wWinMainCRTStartup: |+ J1 j! A' J7 f: `; @
' ?! E' T- Q, p+ r8 H
Object/Library modules:: w6 a2 z( W# \$ D. z

3 X7 ]/ p3 F: vunicows.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
) V: j, A2 h: M- i) g9 @5 \* ^3 ]
: h) H6 B- H! `; E2 [* v: E2 M* PMFC的静态链接调试版本:, h6 h; J  z0 k1 S( B! `" t$ O$ U) r. @

! [1 b) H9 y; x  Wunicows.lib version.lib mpr.lib rasapi32.lib winmm.lib vfw32.lib oleacc.lib oledlg.lib uafxcwd.lib libcmtd.lib " @4 ]5 ^! M* ~% t
# M' C3 X1 o4 T9 B5 @
二、调用unicows.dll失败的处理
' Y3 H0 a( v4 h. [
/ Y( ?: K( C3 y0 _6 {0 v4 A% F当WIN98下无法加载unicows.dll时注册以下函数进行通知。
1 B5 l/ `! N9 w: Y- m; a8 m! _$ F
HMODULE LoadUnicowsProc(void)0 w, L1 V% D$ A' z. H6 a/ e
{
& U6 v* o3 ^; V) kHMODULE hMod = LoadLibraryA("Unicows.dll");
. {, d6 Y' G; Uif (hMod == 0)1 m. ^+ _' U+ t
{! c0 n( J+ G& m
  MessageBoxA(0,"Unicows.dll Unicode wrapper not found !",( F6 \$ J  Y  l
  "MWP",MB_ICONSTOP|MB_OK);! K/ n% ]' W& K1 D" d; C( ^
  _exit(-1);: x* J* S" v/ c* @9 ~" b# K7 \
}, l: S* R4 n( Z: a) t
return (hMod);5 T6 y$ v7 ~) j1 C: _
}1 Y/ _/ E, {% Z/ W0 g
extern "C" FARPROC _PfnLoadUnicows = (FARPROC)&LoadUnicowsProc;# H9 A5 V: `) V# v* {& m4 K

: X$ h/ i$ z5 Q# Z5 G. W% @三、无法在MSLU上正常工作的函数处理
1 f8 {5 Z0 Y. Q/ \" [$ _) G% M1 T. r; t5 E: ?# l
有些函数无法在MSLU环境下使用,对于这种情况需要自己进行转换。- U) V* D3 P& U' }% a( E( v5 Z- N% j" g

( t8 \2 A0 n3 [  \例如mmioOpen
% {2 b  Q+ ]+ w% j" F
& @1 H1 W/ r5 n3 a$ t, l#ifdef _UNICODE
) f6 _3 i& Z: c. I# P: z& lif (IsWin98())
$ |7 C, _8 Q1 w  }8 d8 r{  }5 D, v  F: ^3 T) [
  USES_CONVERSION;
2 D' c. @5 f  \% m3 ~4 S  if (!(m_hmmio = ::mmioOpenA(W2A(lpszFileName), NULL, MMIO_READ|MMIO_ALLOCBUF))): ~( T  r+ |) L* R
  {0 K  N& L/ z* L, M
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);7 a+ C( m4 V$ \; L2 Y0 H7 D6 A2 M
  return FALSE;5 k3 ^: X& t+ G& A
  }- U2 R9 r+ ~$ \, ~, L* i* H
}
- ?: i3 e# @' u+ c% ^else
9 a- ]' {; E2 t  q, R{
2 d# s' ~; E# Z( V% k  if (!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))0 m; ~5 y; \( o, b' D" e- I8 }3 e! q
  {
; d; K$ Z/ A6 }3 S6 g- a   AfxMessageBox(IDS_ERR_OPENWAVEFILE);
$ Z1 h0 y1 v% _3 S   return FALSE;
: {4 q) E8 j: t  x  }
4 c' J# J8 F; v1 X! }}( c/ n  V" S) I4 T. |
#else4 K$ G+ B4 X% p, U9 l) Q+ D/ h
if(!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))) i& g. v, V+ C5 P% ~; u
{" g: i& Q. h2 L: k/ `/ O
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);6 w# Q% q$ m6 k1 Y3 a* U
  return FALSE;) m" }) N9 }: a1 d9 Y
}
8 q  p4 {9 q8 m3 ]7 k+ ~5 H+ K- q#endif
. t5 r- m7 `8 ]
8 Q( x/ _" K9 `% a四、对于ON_NOTIFY通知消息的处理。' {0 O) l3 y  l2 b0 r5 c
' |0 E& J" d, Q
对于ON_NOTITY的通知,因为有区分UNICODE非UNICODE版本,需要注意,如:' k! H2 L. d2 L( g

5 B) L9 {: b$ r' [. L9 G! \ON_NOTIFY(TVN_ITEMEXPANDING, IDC_PATH_TREE, OnItemexpandingPathTree)
6 [3 U/ ~- U  v0 ]* @1 l
) l0 {2 u/ z  Q, E改为3 J: t8 f( F( H2 _" m5 t" s, O
# k( d# H" R7 J1 E! e$ t
ON_NOTIFY(TVN_ITEMEXPANDINGA, IDC_PATH_TREE, OnItemexpandingPathTree)
- ~8 e' W/ ^3 o' mON_NOTIFY(TVN_ITEMEXPANDINGW, IDC_PATH_TREE, OnItemexpandingPathTree)$ c; G1 i. H/ k; ]( v

+ S3 m5 b4 f0 w这样可以在WIN98/2K下正常工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-14 21:50 , Processed in 0.019527 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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