在使用GetOpenFileName()的时候,OPENFILENAME::lpstrFile将用来作为选取文件的路径的缓冲区,所以应该设置的较大,通常为TCHAR strFile[256];
调用GetOpenFileName的时候如果想要初始化FileName输入框则应该指定strFile的内容,这怎么实现呢?strcmp()后不知道为什么就会出现错误。
明早结贴,现在下班。

解决方案 »

  1.   

    char* sname = (char*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 4096 );
    *sname = '\0';//memcpy就可以啊,再在最后加个\0 OPENFILENAME ofn;
    memset(&ofn, 0, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = m_hWnd;
    ofn.lpstrFilter = "任意类型\0*.*\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFile = sname;
    ofn.nMaxFile = 4096;
    ofn.lpstrTitle = "选择文件";
    ofn.Flags = OFN_CREATEPROMPT|OFN_ENABLESIZING|OFN_HIDEREADONLY;
    if(::GetOpenFileName(&ofn))
    {
    ... }
    HeapFree(GetProcessHeap(), 0, sname );
      

  2.   

    CString str="adsfafds";
    char test[9];
    memset(test, 0, 9);
    strcpy(test, str);
    MessageBox(test, MB_OK);