+ -
当前位置:首页 → 问答吧 → MFC 应用程序乱码

MFC 应用程序乱码

时间:2011-12-25

来源:互联网

大家好:0 _5 G) F( ^( l* Z2 r' U- N. o
$ o* j9 p, R3 G  w" T+ U. w
        最近接触了MFC, 请教一个问题,
3 ~5 X/ p3 ^5 O        我用实例代码,代码实现的功能是:MFC  SDI应用程序,实现鼠标移动,获取鼠标的坐标信息并显示在状态栏上 , I( K% O* ]6 Y" U
       我自己把代码敲在VS2005上编译,最后生成的应用程序能够正常运行,但状态栏上的鼠标坐标信息是乱码。
+ L" l1 r& ~* f" A. u3 V     自己找了很久也没有找到原因, 请问这是什么原因。
8 y8 x) [5 a1 N- S; H6 J; v" ]* ]! ^, e2 g# ^8 ]1 W' T. j
   我把消息处理函数代码贴上,,希望大家帮帮忙。  谢谢!!!!!!!
% k5 Y' ?0 M+ X) l& {9 L' J& T, V3 x5 B
9 X' Y, A( O. G, S' P5 ovoid Ctest15View::OnMouseMove(UINT nFlags, CPoint point)+ ?: S) C0 ~1 q$ O/ D: @6 P9 `9 ]
{( }& K8 u" y6 X& w, v! v
// TODO: Add your message handler code here and/or call default
. P$ b+ X+ p& [' v5 F! x char p[ 20 ];
6 q7 x# {# f; t CStatusBar* pStatus = (CStatusBar*)AfxGetMainWnd( )->GetDescendantWindow( AFX_IDW_STATUS_BAR );  t: Y, G. C& h
sprintf( &p[0],"x = %d y = %d",point.x,point.y);
* ^! @) P5 a3 u: {! E pStatus->SetPaneText(pStatus->CommandToIndex(IDS_INDICATOR_MOUSEPOS),(LPCTSTR)&p[0]);. a5 Q4 @- x0 j+ d& s# h$ V
CView::OnMouseMove(nFlags, point);
$ v& v- _  H2 A6 x+ Z}; L# N4 \+ V) X4 C
  H, F! F+ W" `& X: Y3 v
代码中的红字是我自己加上去的,  这个代码原作者应该是在VC6.0上编译的

作者: huaqiang98   发布时间: 2011-12-25

字符集是Unicode吧?" U1 Q  Q9 g+ W. S/ G0 @
第四行char改为TCHAR+ t6 u9 @) [9 Z
第六行sprintf改为_tcsprintf! K9 H' O$ w( Y2 f) i- t; c
第七行(LPCTSTR)&p[0]改为p

作者: wdx04   发布时间: 2011-12-25

谢谢你的回复,,5 M1 q& _  B; f9 J/ p% `3 _

! U9 P5 r3 A/ C5 L  R       这个方法不对。' k# K, M0 Q, g$ R! ?

' `+ C8 ^7 w9 g) `字符集是Unicode
8 C/ J7 V! A; Q9 h; l5 U- z6 g( I. b! B3 o
编译时报错,,找不到_tcsprintf

作者: huaqiang98   发布时间: 2011-12-25

我重新建项目编译代码  就可以了
$ G: }1 c$ i1 @4 F+ E' w. O' z* A$ ]* f  h% @( S
我这次选的非Unicode字符集,,看来还是这两者的问题,,但如果采用Unicode字符集如何改代码

作者: huaqiang98   发布时间: 2011-12-25