找回密码
 注册
查看: 5062|回复: 0

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

[复制链接]
发表于 2005-4-1 18:20:01 | 显示全部楼层 |阅读模式
  编写WIN98系统下使用的UNICODE程序,可以使用MSLU。/ z8 }8 p# D" A) S0 y+ |9 b

3 q5 w, `8 C. M# S2 T% M一、使用MSLU的选项
1 k# ]4 Q/ e) M8 E0 ?) {& E& y
6 U2 v7 \  w) n  c) W1 F7 L二、调用unicows.dll失败的处理
$ L6 a6 U: v; v; k% a2 M% e; v" |" d+ Q4 z
三、无法在MSLU上正常工作的函数处理
6 S) S% J7 _5 E2 W
+ o$ s+ a6 e4 x四、对于ON_NOTIFY通知消息的处理。, m+ Y/ L. K+ y" P3 |

% b$ _" }1 q1 I3 {4 w5 A1 C
; R) f) b; s7 X; q" s7 r$ B7 S, I' r8 K" Y
一、使用MSLU的选项. V+ X! @. _! \& [/ L; D' N
; R( V) @3 Z8 X" m( q
MFC的静态链接Release版本# K# v- w5 U/ J* u
) @1 P& c/ @7 W" U, {2 Q! F
C/C++选项:
, z# ]* j( g$ K; O; E: d! I- i1 `
去掉_MBCS添加_UNICODE,UNICODE
( {8 F' m7 T  b: Z
; u1 G7 T# d  W1 {. U" BLink选项:
4 [1 |; Q/ p+ g' e- R
0 J+ i1 P- _$ f4 ~! u' tOutput->Entry Point Symbol:3 g5 ?' {: b7 u  x' v

* |! t* T2 G6 s; K" r( i: N& H" RwWinMainCRTStartup1 a3 b7 M" h" o* w* H0 V
) @# Q- s2 j9 b0 N
Object/Library modules:
' E# N  A1 T3 p7 ~8 R8 z: a$ @5 o( ?2 i$ L" v8 R- k
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
; T, H* A" @3 F+ o# q
# ], P  r' ^8 E; xMFC的静态链接调试版本:8 x* ?( p* c( N  R
0 B. x2 r0 x" x' J4 t9 K/ [) A* `
unicows.lib version.lib mpr.lib rasapi32.lib winmm.lib vfw32.lib oleacc.lib oledlg.lib uafxcwd.lib libcmtd.lib
" l4 S$ v: E8 r1 H1 {( k! o& R2 {$ P* F5 T5 o
二、调用unicows.dll失败的处理
7 \- a# U6 T6 j1 m# ^
) c$ A7 ]' v2 u: `9 w' ^! }当WIN98下无法加载unicows.dll时注册以下函数进行通知。# u+ R) D; v, ?
9 _1 z8 S" P4 i+ u- Q+ m9 e7 R# z
HMODULE LoadUnicowsProc(void): r2 K( A2 B$ Q; y; _6 [
{
# n% V0 c. {% F! ~2 z  D* dHMODULE hMod = LoadLibraryA("Unicows.dll");
# J% P! t) E# a8 g+ ?if (hMod == 0)
8 u0 W& K+ q# g5 I{* O$ A+ C! {) V3 ~% l
  MessageBoxA(0,"Unicows.dll Unicode wrapper not found !",
3 B  W. t, J$ T2 I   "MWP",MB_ICONSTOP|MB_OK);
% [4 X1 e* V5 e  _exit(-1);
6 }+ L' n' O8 `) |}3 L: _* Q' J- g. T+ g$ t: {
return (hMod);( q1 z! d, p5 M3 p. j. W, ~/ p
}
$ t$ k0 @) l$ F, Aextern "C" FARPROC _PfnLoadUnicows = (FARPROC)&LoadUnicowsProc;
6 r0 `+ k% l) V; F: W
: v6 g. V. _1 O+ G: H# [& {三、无法在MSLU上正常工作的函数处理
$ L; f, J- \/ X: Y/ X4 o9 U& p! d9 T
有些函数无法在MSLU环境下使用,对于这种情况需要自己进行转换。# x# \5 N- y0 x. W
  s- C! a3 i9 Z% ^! ~
例如mmioOpen+ b/ y, R( H. k$ v. {" E* f$ f
1 {; Y( C! U. _5 M2 j
#ifdef _UNICODE
& F+ \' p8 w- A2 S* ~  Gif (IsWin98())3 `& c# T( H6 l
{
  i: [6 v' ?9 ~  USES_CONVERSION;5 M; n7 S" z: G4 G
  if (!(m_hmmio = ::mmioOpenA(W2A(lpszFileName), NULL, MMIO_READ|MMIO_ALLOCBUF)))$ L& b' `) b' P, l2 Y
  {0 x3 [4 U( f; T" T1 m  O; `
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);, [, v& X" B, \! I; `
  return FALSE;
" l8 w- j  |0 i& q  |# Q9 n7 y  }4 m- J- @; n! b3 o9 D3 s. X/ X
}
0 Y* @+ Q. V- ~. velse
- |& x( [2 b. E1 {9 M9 {{0 S& R2 s7 c+ `  E4 B5 k
  if (!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF))); h) ?9 V$ t* s! u
  {- ~: A! Y+ p$ Z8 x4 p' J! W" V
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);
4 \, n4 b6 v: k   return FALSE;
: K, s0 D& j, E  }7 a- ~' n/ M$ Y8 `1 s/ ~& ^0 U$ g
}
& ^9 \9 m3 K; C' r) t1 ^$ @#else
1 W9 l7 o$ ~4 ]- E9 u! e2 Oif(!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))
' G/ A$ g$ G! f  }/ e* a- t  O{! n4 c' v) L0 h
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);. T' r& p" t  i5 w2 n
  return FALSE;
: o3 S: Z6 |' ~}3 ?; z4 w! P" o: g1 _
#endif
+ P4 h; d0 |, A  j1 e
; `5 _" I+ S3 G+ x: E) [5 |7 @8 G四、对于ON_NOTIFY通知消息的处理。
; X+ Y( x' y; N( Y# s
% ]* g' e  a; {0 i$ Q9 j4 w1 x6 j! v对于ON_NOTITY的通知,因为有区分UNICODE非UNICODE版本,需要注意,如:
0 A4 O1 L9 e3 I7 w  @  f4 O) x' p) p" ~# ^! [6 z
ON_NOTIFY(TVN_ITEMEXPANDING, IDC_PATH_TREE, OnItemexpandingPathTree), ^- O2 {3 }, B* W1 a. [" y
! ?# e2 d% l9 O5 |4 p: ]0 A
改为
* l; f$ \- V3 G( @  A
9 i1 r7 N8 ~: i/ z* P# i# ~+ K' hON_NOTIFY(TVN_ITEMEXPANDINGA, IDC_PATH_TREE, OnItemexpandingPathTree). D7 E2 @9 I$ C, A) j9 W
ON_NOTIFY(TVN_ITEMEXPANDINGW, IDC_PATH_TREE, OnItemexpandingPathTree)
5 c; ]+ g" R' ^% v0 t+ E, x8 A5 N5 Z) P) @- w7 K& P& n
这样可以在WIN98/2K下正常工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-10-1 20:51 , Processed in 0.019169 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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