我想在控制台程序里面创建一个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. 从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的窗口呢?
{
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;
}
还有我对你的代码说明一下,以供初学者参考:
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。