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

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

[复制链接]
发表于 2005-4-1 18:20:01 | 显示全部楼层 |阅读模式
  编写WIN98系统下使用的UNICODE程序,可以使用MSLU。3 U: i- o% S5 `& f+ K
+ W0 O% j+ o. x' e1 V
一、使用MSLU的选项
% ]! Z# {0 O9 u# H
/ Y% i' x" o" `1 r8 J0 G0 t+ B6 |二、调用unicows.dll失败的处理
# @& E/ |! g1 _# L+ M% V- i9 ]2 W+ i, w% L' f- S
三、无法在MSLU上正常工作的函数处理5 b: s5 I+ k1 o/ l: {# U

* A& I; ^* M" h& v! e$ z四、对于ON_NOTIFY通知消息的处理。
% A) {( J* q: m0 E. s. r/ i2 L+ ?! O  ^! p6 J  Y
; V* W4 H& b. Y# O- S3 p5 k( d
$ Y/ v( J0 Z5 \6 ^9 E! C1 L3 [
一、使用MSLU的选项: O2 z3 Q/ |+ R- Q7 @5 j  X0 @
! x2 R# n% F$ Z, Z
MFC的静态链接Release版本
5 @, B) b5 k1 R
2 R* \& B4 v7 O# {* ]C/C++选项:
5 q9 L8 |2 \5 s, D
1 ^' t: M* T: B: K) E+ W去掉_MBCS添加_UNICODE,UNICODE
2 c0 D- o2 O& l8 i& x4 m/ H/ O' b  A# H3 N$ _/ U2 H
Link选项:
% h8 o; O- j" O4 W4 d. S& o1 A6 S+ v) s
Output->Entry Point Symbol:: r" N7 Q, S2 ?' {( I0 }, ~/ q# z: v

: F) e6 Y) R0 F$ U$ L0 \wWinMainCRTStartup
6 B; P. x7 e, ]+ M* ^* `# w5 [6 l5 G) J2 w- R1 _- b: C, D% i2 {
Object/Library modules:
4 z" h) a& f) G5 C. K  ~; O# E
$ c) J3 j( Z+ ^  s2 e3 tunicows.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 5 Q5 P, Z- O3 r

0 }& P7 X0 K& I+ l7 b3 mMFC的静态链接调试版本:# v: t+ N) b4 Q) O/ A6 `

) ~; a( f0 ?" X1 G( X. wunicows.lib version.lib mpr.lib rasapi32.lib winmm.lib vfw32.lib oleacc.lib oledlg.lib uafxcwd.lib libcmtd.lib . f. ^, t( {* D2 @: x. L( n

. W. ^2 S9 T: n: g) \9 i& A( S二、调用unicows.dll失败的处理
2 _' {) G, w- }0 W* L" v
& `( X- G% l( \当WIN98下无法加载unicows.dll时注册以下函数进行通知。
' p) Q/ [' m: ?  V% S
% ~5 @/ @) c( P0 n* ~HMODULE LoadUnicowsProc(void)6 m) S* ]7 O4 X( p3 a  [# i
{1 w* L# N! L+ e7 G# [* R* k' w$ Q1 q
HMODULE hMod = LoadLibraryA("Unicows.dll");9 Y$ @0 O! R2 Z
if (hMod == 0)
; v/ R  v, o5 p2 B+ O{8 D5 P0 m  e: u$ m. [
  MessageBoxA(0,"Unicows.dll Unicode wrapper not found !",
% f. i$ N6 V; a& s' Z: q   "MWP",MB_ICONSTOP|MB_OK);* _3 t. R) m0 \
  _exit(-1);
% a) j& i$ I4 D5 ^1 Y}& e" f* d; J1 Z
return (hMod);
% }" t: C& Z) u}
' n/ _: R7 z& I4 iextern "C" FARPROC _PfnLoadUnicows = (FARPROC)&LoadUnicowsProc;
) p" q  W3 T; }( B6 D( A1 J" V2 Z& ?8 F' x% _4 v7 O" c7 R# D
三、无法在MSLU上正常工作的函数处理
- k0 j: l2 p5 {- I
0 G' ~1 g' v. R( F* g" S有些函数无法在MSLU环境下使用,对于这种情况需要自己进行转换。& j! x) q' g! {
. r9 E4 g6 t7 b4 e
例如mmioOpen
$ A; Q% @- |: R+ k7 E
8 a: ?( |2 Z! y4 c3 Q6 y#ifdef _UNICODE; V9 |& m( u0 L  c, e2 k
if (IsWin98())6 I& A; D; l$ k( U
{
+ N6 X0 l  [4 d3 q* L  USES_CONVERSION;
0 q3 q; z* j% x8 m* m/ d  if (!(m_hmmio = ::mmioOpenA(W2A(lpszFileName), NULL, MMIO_READ|MMIO_ALLOCBUF)))! m/ k% t' E1 l
  {
5 U; w$ y4 L& R7 Y% f   AfxMessageBox(IDS_ERR_OPENWAVEFILE);
8 |5 _8 j* E7 M7 q* m% k4 x  k   return FALSE;
9 o5 Q% r' O7 B4 s9 I  }
* ~! V+ N( F5 @& H}1 G* F+ O: P- `
else ! v, _; e; X+ ~% B7 R5 t
{9 f8 i8 x- R9 B( ^$ P3 K, V) W
  if (!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))$ j7 x- a/ j; X% ^- h
  {
; \2 c3 V3 I1 x9 Q5 K   AfxMessageBox(IDS_ERR_OPENWAVEFILE);$ o& t0 z1 H6 ?& i7 ?& E+ D) r
  return FALSE;+ s" s, |1 _9 [( X+ S
  }
' {# @7 p3 M( s! q* _0 i}' c7 ]: K/ L. d/ E5 c5 x0 l
#else
- I7 K8 n. `8 I8 Lif(!(m_hmmio = mmioOpen((LPTSTR)lpszFileName, NULL, MMIO_READ|MMIO_ALLOCBUF)))& m4 C7 K5 R2 U+ e, _
{' A* j9 |. y: p
  AfxMessageBox(IDS_ERR_OPENWAVEFILE);' U9 e3 Q* Z1 J- e9 T
  return FALSE;# z! ?. D2 g! O" W3 J% _
}
! M" b3 i" ]6 }4 i#endif
! K1 s- |- q6 G& j3 \0 w0 r& ^" j# L* b: z0 m
四、对于ON_NOTIFY通知消息的处理。5 G5 \1 \8 z0 s; a3 b0 b
; Y) e5 J+ S( F3 D; O2 t+ Q
对于ON_NOTITY的通知,因为有区分UNICODE非UNICODE版本,需要注意,如:" p' _. A" d: ^" y0 n
" m- N. Y# g. i" r3 p  `
ON_NOTIFY(TVN_ITEMEXPANDING, IDC_PATH_TREE, OnItemexpandingPathTree)
' D0 U% r+ L) I7 ~3 `" J5 [5 i
改为
9 R$ ?3 L( v2 h- A
* o0 w: U  h% wON_NOTIFY(TVN_ITEMEXPANDINGA, IDC_PATH_TREE, OnItemexpandingPathTree)  P7 D5 k2 G+ _
ON_NOTIFY(TVN_ITEMEXPANDINGW, IDC_PATH_TREE, OnItemexpandingPathTree)
. O& |! z$ S* v( _$ V* L. M: \
# h- z3 M& F+ |这样可以在WIN98/2K下正常工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-13 08:22 , Processed in 0.016722 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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