用SDK建立以下程序,
使用了MFC的类CFileDialog,
在Project的Settings设置了Use MFC in Static Library,
用MFC的stdafx.h换掉该程序的stdafx.h,
按下F7键无错,
按下F5出错!!#include "stdafx.h"int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
CFileDialog f(TRUE,"","",OFN_HIDEREADONLY,"任何文件(*.*)|*.*||");
f.DoModal();
return 0;
}

解决方案 »

  1.   

    sdk下面调用mfc没有这么简单吧?
      

  2.   

    使用像CString这样简单的MFC类还可以,但像使用CFileDialog这样用复杂关联的类就会产生一个莫名其妙的错误。
    简单类的调法:
    1、include <afxwin.h>//一些基本的MFC类都在这文件中定义,新类头文件请查MSDN
    2、在设置里选使用MFC库
    3、编译通过。
    建议:MFC是一个关联很强的类库,很难做到单纯使用某类,你只能在SDK和MFC中二选一。
      

  3.   

    加上下面这句再试试看
    AfxSetResourceHandle(hInstance);
    CFileDialog f(TRUE,"","",OFN_HIDEREADONLY,"任何文件(*.*)|*.*||");
      

  4.   

    用mfc要包含相应的头文件
    个人觉得mfc可以做到sdk做到也可
    DialoagBox+SendMessage可以代替的
      

  5.   

    OPENFILENAME ofn;
    char filename[MAX_PATH];
    memset(&ofn, 0, sizeof(ofn));
    filename[0] = 0;
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hWnd;
    ofn.lpstrFilter = "BitMap file\0*.bmp\0";
    ofn.lpstrFile = filename;
    ofn.nMaxFile = MAX_PATH;

    GetOpenFileName(&ofn)用这个和CFileDialog实现的功能差不多~
      

  6.   

    在SDK中使用MFC并非是不可能的事,但的确也不是件简单的活,基本上如果你对MFC和SDK的基本概念都有所了解的话,你是可以做到的.在这个问题中,楼主遇到的问题是很简单的.只要象akiko(弥弥)所说的那样设定了hInstance以后即可.当然其他的问题还是要"具体问题具体分析的".
      

  7.   

    CFileDialog这种就没有必要用MFC了,连用VB的人都会用API调他,就像eastred(~Vampire~) 那样,不过如果你想讨论一下怎么在SDK里使用MFC那又另当别论。