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

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

[复制链接]
发表于 2005-4-1 18:20:01 | 显示全部楼层 |阅读模式
  编写WIN98系统下使用的UNICODE程序,可以使用MSLU。4 G" ]5 N; x  M, ?  x* n
1 {$ E1 s5 ]1 ~; g
一、使用MSLU的选项
# d! C/ l: w2 ~& `9 @4 c& h. S! q. c) j% j$ E
二、调用unicows.dll失败的处理5 {1 [: h  g/ r3 ]  w# n8 J/ K0 B
( n; q- ?9 ^+ i# i+ s  \8 e
三、无法在MSLU上正常工作的函数处理5 b) c8 Q0 ?4 w0 x- j
4 L5 s* G: j+ {) A- J
四、对于ON_NOTIFY通知消息的处理。
4 C" v, l# j- E4 E  _- R* b2 w, U  F1 X3 d

0 z. @0 \9 }! \0 s% @* N* Y# P! }, a2 W
一、使用MSLU的选项
. I0 R' {2 ?- Z1 y( ~& t7 A
# [4 @4 I; ~+ x3 t6 H% l0 ^8 bMFC的静态链接Release版本. x) j- A2 w' v3 k
3 u1 q3 s# N. ]' |
C/C++选项:
# f2 i( w0 V2 P: y7 u( [
7 E" M( m) ~8 P去掉_MBCS添加_UNICODE,UNICODE
+ x& i  G; B$ ~! z; K
/ e, o, e" g8 i9 V8 e- W+ BLink选项:
9 ]  Z# z5 Q% e, w* y% R' _3 b" n6 X1 o' X) p5 M6 W1 U! {/ z# w
Output->Entry Point Symbol:
3 m; x4 T! ?% C0 y6 ~+ j0 R7 ~( f" h' j9 }
wWinMainCRTStartup
) k- @, g) @% Q0 c$ P& o& ^; b* A4 J  R
Object/Library modules:& a' l* l) W7 u# U6 t; ^3 O

! l! P" m4 V- n" S" F! U& Wunicows.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 + f3 O+ ?7 A8 m, }
4 |9 H" v+ r0 ^$ z8 O
MFC的静态链接调试版本:. i" K/ u! J  i

5 x5 W) N3 m9 G# m( bunicows.lib version.lib mpr.lib rasapi32.lib winmm.lib vfw32.lib oleacc.lib oledlg.lib uafxcwd.lib libcmtd.lib
! t! k3 d% Q. t! M
, b8 q9 e2 c2 T' ]& n二、调用unicows.dll失败的处理
" N; {. z, n/ y9 e$ t+ P. s; z: j6 k# ^" f
当WIN98下无法加载unicows.dll时注册以下函数进行通知。5 d2 Q; J& ?4 p! q6 i. L
# w& E8 t4 _- `% ?
HMODULE LoadUnicowsProc(void)
2 [: I; X8 n4 p2 ]{8 S5 C5 a& c" {# j6 B$ t
HMODULE hMod = LoadLibraryA("Unicows.dll");1 _2 U9 F* B( w6 s/ Y( I
if (hMod == 0). C. c2 [4 a2 A/ \3 ?
{
+ o  b. p1 _/ g- I0 M6 F  MessageBoxA(0,"Unicows.dll Unicode wrapper not found !",
4 i1 ^: \7 x9 ]7 [! s   "MWP",MB_ICONSTOP|MB_OK);' e8 v# f- d9 T" {/ h) P
  _exit(-1);5 O  D# g4 e0 D. r9 ~* V
}! M) k( l) R- G9 {3 e# C
return (hMod);
" O% F3 {) \3 M1 f, e}
" U9 l. \4 k  X% S' f. F/ Eextern "C" FARPROC _PfnLoadUnicows = (FARPROC)&LoadUnicowsProc;# i$ e. z. i$ i# c0 l
" c% w# O4 D- Q0 y/ J2 Q  L
三、无法在MSLU上正常工作的函数处理  v7 Q( X5 D4 p$ c4 Y. j8 l2 F

6 X2 `$ F0 j6 y% d% e2 K有些函数无法在MSLU环境下使用,对于这种情况需要自己进行转换。% x7 b* v- {% P$ i; h4 E  s# Y$ x8 K6 K4 z
3 X, U- y* ?" c/ w' u! x$ d
例如mmioOpen
6 l+ f% A3 G, f0 `+ I) p3 H. q+ U; \* w' p2 X1 A2 f
#ifdef _UNICODE
, b: b, \: u0 \, ^: d0 _; Lif (IsWin98())" F* z2 Z6 \7 f$ h$ N1 S- z
{/ r0 A" x. P' i2 e
  USES_CONVERSION;
- }3 Q+ ^; G! z  O9 E6 p  if (!(m_hmmio = ::mmioOpenA(W2A(lpszFileName), NULL, MMIO_READ|MMIO_ALLOCBUF)))
( m. k8 Z9 N3 ]# B# F4 C  {
0 ]- E" m3 \: P   AfxMessageBox(IDS_ERR_OPENWAVEFILE);) w7 m& y4 u. `' U
  return FALSE;/ V: H1 q0 H- a2 \/ p7 H
  }
) L, P9 e* B" @}+ g% x# A/ B3 k1 Y+ d6 {
else
& x3 \* x) l/ A! s{
/ x2 m" q# ^# g$ x. y: w" P  if (!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))" L7 D" b* d( @, b# y
  {: U% w/ T) F# ]; s/ I
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);( D* ?4 }* `. ]7 u
  return FALSE;1 Z2 c) m* q8 o- u' o( e0 D
  }; M- O  L  l* r
}. w% X$ L& m  ]& U" p. d8 y) i
#else
4 l$ A) v& S+ q* _! I" {* {if(!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))
9 e& @" T. g7 D+ I{
; z( f0 M- F0 I5 A! q; R  AfxMessageBox(IDS_ERR_OPENWAVEFILE);. o( p! q: T/ j6 ?4 g) P4 f2 t5 U
  return FALSE;
/ K2 q5 A% U3 a+ I& s% ^% w7 }}1 {! M1 W1 G7 @: X- A9 `7 @
#endif
2 M% ?4 U4 y% N0 v, J
7 @6 M  ]: S) @, y四、对于ON_NOTIFY通知消息的处理。5 I! P* m6 K( a, B0 ]9 o8 x% G

  J4 W( T/ ]% U4 X对于ON_NOTITY的通知,因为有区分UNICODE非UNICODE版本,需要注意,如:+ [1 J1 x. U' }1 h& t* Y( {0 j
' \5 ~( s, U" g/ E: Q* g
ON_NOTIFY(TVN_ITEMEXPANDING, IDC_PATH_TREE, OnItemexpandingPathTree)
# O# \# K& K$ M% d! W- S2 Y0 G4 w
& \, K2 c, V: d1 |改为/ ~; G) |- M' g
( o& H: M6 Q) e, G
ON_NOTIFY(TVN_ITEMEXPANDINGA, IDC_PATH_TREE, OnItemexpandingPathTree)
  o( |# J& D6 N2 ION_NOTIFY(TVN_ITEMEXPANDINGW, IDC_PATH_TREE, OnItemexpandingPathTree)
8 m8 w/ J! u3 A; G2 u
! |5 @/ W) |# n2 f. G' S1 g这样可以在WIN98/2K下正常工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 06:58 , Processed in 0.019437 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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