char s[280];
  ::GetWindowText(hWnd,s,sizeof(s));
  cation.Format("HWND: %lX\tCaption: %s",hWnd,s);
MessageBox(cation);
::GetCurrentDirectory(sizeof(s),s);
cation.Format("tCaption: %s",s);
MessageBox(cation);

解决方案 »

  1.   

    将m_PrjPath.GetBuffer(MAX_PATH)改为m_PrjPath.GetBufferSetLength(MAX_PATH) 
      

  2.   

    谢谢,稍后给分。
    但不知哪位能否解释一下::GetCurrentDirectory(MAX_PATH, m_PrjPath.GetBuffer(MAX_PATH)); 的结果为什么不对吗?就是说为什么不能分配到新的内存空间。
    我习惯了Delphi中的String,所以对CString的奇怪和字符串连接后的莫名其妙性觉得他真的很复杂,虽然不过是个字符串操作而已。
      

  3.   

    CString m_PrjPath = _T(""); 
    ::GetCurrentDirectory(MAX_PATH, m_PrjPath.GetBuffer(MAX_PATH)); 
    ... 
    m_PrjPath.ReleaseBuffer(); 这样是可以得到结果的啊。事实上,_T("")是为了表示宽字节(Unicode用).你的问题可能是其他原因导致错误。而_T("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")这样是完全没有必要的。是否自己定义了MAX_PATH??(很可能MAX_PATH == 0)
      

  4.   

    谢谢!
    用ddong(冬冬)的说的函数,是解决了分配空间的问题。
    但是新的问题又来了,与我开始给他多分配空间的结果一样,下面汉操作:
       AfxMessageBox("<" + ProgCrntPath + "\\>");
    只能显示“< C:\VC\MyProg”然后就不了了之,这就是我常碰到的字符串的连接不一定能得到预想的结果,为什么?
    解答后,问题我再多加分。
      

  5.   

    Up一下,明天看看结果,有没有人常用CSring
      

  6.   

    不可能是空吧?
    我也试了一下,可以得到结果的。
    问题肯定不在这里。或者你MAX_PATH不够长,或者你用其他的指针改变了它的内容。
      

  7.   

    给分了! 不要笑我。我的VC水平确实不怎样,但有几人能够真正理解和应用了MFC中的原理。这些都是最基本的呀。这个问题我在Delphi中一个函数就可以搞定还不出错。VC我调试了快一天了,可是CString + CString 结果就是不对呢???!!调试跟踪,两个字符串都没问题,可是结果就是不对!!!!!!!
        我真的快没办法了, "AAAA" + "BBBBB"的的确确结果是"AAAA",为什么?为什么??为什么???
        谁知道CString + CString 是怎么工作的??包括内存的释放与分配,结果指针。用它写程序真的比汇编还烦。 :(
        如果还不行,没有办法,我只好用Delphi把程序重写一遍,那样都比我在这里调试VC来的快!!
        以前,我为了得到 String1 + String2 的值,一定要这么写 String3 = String1 + String2;
        这样就能得到正确结果吗??不一定能,有时候结果是对的,有时候却是错的,我不知为什么,如何解决,本人用了世界上最最愚蠢的方法,先把String3清空,那么结果就是对的,至少我还没碰到错误。所以就成了:
    String3 = "";
    String3 = String1 + String2;平时:我只要写做:String1 := String1 + String2; 就可以了,但我在VC中重来都不敢这么去尝试,我的结论是:
        如果你想让自己早死几年,用VC吧!年纪轻轻来个时髦的“过劳死”;不死也要进精神病医院。
      

  8.   

    If you use the pointer returned by GetBuffer to change the string contents, you must call ReleaseBuffer before using any other CString methods. 在GetBuffer()的下一句就ReleaseBuffer()。正常的使用CString,和Delphi中差不多。
      

  9.   

    谢谢 anywn_cwh(我有个问题) ,的确是你所说的那样,我试图在GetBuffer后就使用CString的方法,然后ReleaseBuffer(),所以,对相关的CString操作时,结果总也不对,根据你的指点,程序立马Pass,为这个问题,我头疼了一天,高手一句话,解决了!
      VC还是要好好学的,只是任务一急,我就没有时间考究这些问题,所以,就使用Delphi。
    用VC,要学的东西真的很多!!!