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

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

[复制链接]
发表于 2005-4-1 18:20:01 | 显示全部楼层 |阅读模式
  编写WIN98系统下使用的UNICODE程序,可以使用MSLU。8 ?1 O# O3 ^  F9 W3 V) Z# c% [

& E% n. e) a" s* J. b一、使用MSLU的选项) u" Z% H$ S' K* |

! |% ^* d9 V5 Z二、调用unicows.dll失败的处理
5 d/ c4 }" b6 ^- Y2 Q: n9 d: n. ]% C; Z8 M
三、无法在MSLU上正常工作的函数处理
$ M# H# t$ N' i! M( o# b; Z% x8 F  E
四、对于ON_NOTIFY通知消息的处理。; l2 x3 W2 Z$ I
; w- B2 x4 \0 t6 k( C* H( P
9 ?; A2 {' q( q$ c) [
- T; A5 @9 @6 t6 E" f% z
一、使用MSLU的选项; P2 W6 Q6 N' Z6 v; ]9 ^

$ i3 y; t% i2 }# k( M) GMFC的静态链接Release版本+ d- g2 c8 h6 |/ w" p

& E, I8 O3 _* A( qC/C++选项:
( F% s2 o; `) K/ O, S, |
: l- z" a* h- B1 m; }% X9 G+ D去掉_MBCS添加_UNICODE,UNICODE
0 L- G% E4 L" b  m; U: e+ c/ N5 N& T  W+ E$ y
Link选项:
& O7 a7 u$ I% l7 j% ]& l# g' f2 S
* a( [" S2 ~. J: b+ F% mOutput->Entry Point Symbol:
" d! m" d5 g2 E) S8 g" M* ~. d
3 C$ ]0 l: m0 v. y) i& BwWinMainCRTStartup) C" j9 |! }$ h/ }% {9 N
1 }- i$ X. z; x& \& ?
Object/Library modules:9 {. P1 @& t" {1 q% j4 `7 ~5 [
( h) r7 E+ r1 Y# p4 w0 x0 d4 x  O
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 0 P3 Y/ Q3 w% h( V; p) h3 I! G( ]* B  y

) G$ i/ o1 E9 O. c& W" o& R5 j& O! }MFC的静态链接调试版本:9 L. N' R. i2 {

8 I7 Q( [* |! Z& \! y5 uunicows.lib version.lib mpr.lib rasapi32.lib winmm.lib vfw32.lib oleacc.lib oledlg.lib uafxcwd.lib libcmtd.lib
9 C! m' y. T- N  t0 b$ c. o7 t$ [! _' j3 {- b! l1 {
二、调用unicows.dll失败的处理1 m- T2 O2 N$ ~
, r% _# Q3 w# R' V4 X3 |
当WIN98下无法加载unicows.dll时注册以下函数进行通知。
4 [" O- Z' Y! S- g, V
) @6 @; s6 |. W4 e0 b7 E5 Y# \; }5 UHMODULE LoadUnicowsProc(void), W, Q- X/ w8 A
{
/ R! |& f* g+ a. b1 WHMODULE hMod = LoadLibraryA("Unicows.dll");* F) z5 O$ |- \4 v, ^% {  o
if (hMod == 0)  U/ `. s/ }* S
{
; y! D: \/ K  E/ K' V4 N  MessageBoxA(0,"Unicows.dll Unicode wrapper not found !",6 u2 t3 Y$ @$ Z0 t/ {
  "MWP",MB_ICONSTOP|MB_OK);. \! |+ m$ y# y
  _exit(-1);; Z+ q$ y+ h8 j! w* N$ f; `. `
}3 L4 v3 q5 J6 {; M# P# w. G
return (hMod);. a6 A' |0 a' O3 T; ~
}4 M5 _' N+ u* d3 H* l3 h8 l9 O8 T; s
extern "C" FARPROC _PfnLoadUnicows = (FARPROC)&LoadUnicowsProc;. e! F1 {& q8 Y* @1 e2 p
& h) z6 s. @8 F1 i# e# F
三、无法在MSLU上正常工作的函数处理' ~$ w; p! }8 t% {/ p
5 Y" v7 f8 S- Z' Z: I  K
有些函数无法在MSLU环境下使用,对于这种情况需要自己进行转换。
% `/ A2 P; f$ l3 a& D# O  A5 @9 j. ~) n
例如mmioOpen
* Q) ^6 J' d0 A! r9 u5 \) ]& a( y0 W% T* `
#ifdef _UNICODE
6 d. D# A) p9 a2 i7 _if (IsWin98())
7 n2 _; G) w# R% |{
1 r% W" T$ W2 d4 H8 T  USES_CONVERSION;
5 R+ M; Q5 m* V0 G  if (!(m_hmmio = ::mmioOpenA(W2A(lpszFileName), NULL, MMIO_READ|MMIO_ALLOCBUF)))
0 u$ S7 o8 u& Z! z  {  Q- }7 f. _" \0 e, k
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);6 d/ n2 e6 O" y. l
  return FALSE;
+ J/ @. u' u- z+ l  }
; t4 _6 e4 L" Z1 L7 B}* @- o0 Q- X0 \0 Z
else / W9 r6 J: q( p$ ?  G5 s3 V6 g
{. Z, @' M6 K, _3 @; [2 x! [
  if (!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))
( B9 `/ i: T, c9 u4 l  {7 A2 x& O1 i, M# B. `
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);3 i+ D# I* x/ f
  return FALSE;8 T% a0 p/ S+ p  e
  }
; \" x, A( ^' o! Q# a) z}( `6 X7 _1 Q8 `( K' T' O
#else9 ~- m7 z$ E: ]
if(!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))* @9 Q5 }) I& ]" h, Q
{) g9 F2 H; L1 \' K& y5 J9 O
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);
. y+ j3 Y' `8 R  return FALSE;
4 H2 A1 ?+ }3 {; f& J}( T( s! [! F, W/ X9 n
#endif
& K1 |; _) E, I- D2 O- n5 q
) d+ |$ F7 G7 z* m& K. r8 ^, e/ z. f四、对于ON_NOTIFY通知消息的处理。' @* R, }' I4 k

) s5 k5 n# m3 t4 J0 }5 O0 w$ v对于ON_NOTITY的通知,因为有区分UNICODE非UNICODE版本,需要注意,如:# B/ H, {3 U9 F; @$ M. j& h

& V3 G  a& w4 n8 p% o6 FON_NOTIFY(TVN_ITEMEXPANDING, IDC_PATH_TREE, OnItemexpandingPathTree)
1 }: g/ w1 L& C1 o& l( ?  b5 M$ c/ J  Z- ~, Q4 ]8 l" X' G
改为) L' ]/ K$ U: a7 w) r) S+ _

! J+ K1 [  P* a. ^/ G5 nON_NOTIFY(TVN_ITEMEXPANDINGA, IDC_PATH_TREE, OnItemexpandingPathTree)  b2 V% x- Y& X9 M
ON_NOTIFY(TVN_ITEMEXPANDINGW, IDC_PATH_TREE, OnItemexpandingPathTree)
- z0 U) {" D; j8 ~7 v9 K- }' s5 }, k1 q+ T
这样可以在WIN98/2K下正常工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 12:17 , Processed in 0.017957 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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