我想在控制台程序里面创建一个MFC窗口,非WIN32窗口
我这么做的:
1.  从CWnd 派生一个CMyWnd类;
2.  修改CMYWnd的PreCreateWindow设置窗口属性
3.  然后在控制台里面这样创建
   
 int main()
 {    CMyWnd wnd;
    wnd.CreateEx(NULL,NULL,_T("TEST"),WS_POPUP | WS_VISIBLE ,CRect(0,0,100,100),NULL,NULL,NULL);
    MSG msg 
    while(GetMessage(&msg,0,0,0))
    {
TranslateMessage(&msg);
DispatchMessage(&msg);
    }
   return 0;
 }    我想知道我上面的创建窗口方法对吗?如果不对,该怎么在控制台里面创建CWnd的窗口呢?

解决方案 »

  1.   

    class CMyWnd : public CFrameWnd
    {
    public:
    CMyWnd()
    { }
    };CWinApp theApp;int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
    {
    AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0);

    CMyWnd* wnd = new CMyWnd;
        wnd->CreateEx(NULL, NULL, _T("TEST"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, CRect(0,0,100,100), NULL,NULL,NULL);
        MSG msg;
    while(GetMessage(&msg,0,0,0))        
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    } return 0;
    }
      

  2.   

    赞一个,试问为什么不能直接使用CWnd创建窗口对象?我试了,可是遇到了调试验证错误!
    还有我对你的代码说明一下,以供初学者参考:
    1)Using MFC in a shared Dll
    对于vc6.0:
    Project -> Settings->General,在Microsoft Foundation Classes,选择Using MFC in a shared Dll。
    对于vs2008
    Project ->Property Pages -> Configuration Properties -> General -> Project Defaults ->Use of MFC, 选择Use MFC in a Shared DLL.
    2)添加文件头,#include <afxwin.h>
    3)由于CMyWnd是在堆上创建的,时后要delete。