手动创建mfc工程(留存方便复制)
案例一、
#include <afxwin.h>
class CMyWnd : public CWnd
{
//DECLARE_DYNCREATE(CMyWnd)
public:
CMyWnd(){}
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
};
BOOL CMyWnd::PreCreateWindow(CREATESTRUCT& cs)
{
WNDCLASS wc;
BOOL bRet = ::GetClassInfo(cs.hInstance, cs.lpszClass, &wc);
if(bRet)
{
return TRUE;
}
wc.style =CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = wc.cbWndExtra = 0;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc.hInstance = cs.hInstance;
wc.lpfnWndProc = AfxWndProc;
wc.lpszClassName = cs.lpszClass;
wc.lpszMenuName = NULL;
bRet = ::RegisterClass(&wc);
if(!bRet)
{
return FALSE;
}
return TRUE;
}
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance()
{
m_pMainWnd = new CMyWnd();
m_pMainWnd->CreateEx(0,_T("JXD"),_T("测试窗口程序"),WS_OVERLAPPEDWINDOW,
CRect(0,0,800,600),nullptr,0,this);
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow ();
return TRUE;
}
};
CMyApp theApp;
案例二、
.h
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance ();
};
class CMainWindow : public CFrameWnd
{
public:
CMainWindow ();
protected:
afx_msg void OnPaint ();
DECLARE_MESSAGE_MAP ()
};
.cpp
#include <afxwin.h>
#include "cwd.h"
CMyApp myApp;
/////////////////////////////////////////////////////////////////////////
// CMyApp member functions
BOOL CMyApp::InitInstance ()
{
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow (m_nCmdShow);
m_pMainWnd->UpdateWindow ();
return TRUE;
}
/////////////////////////////////////////////////////////////////////////
// CMainWindow message map and member functions
BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
ON_WM_PAINT ()
END_MESSAGE_MAP ()
CMainWindow::CMainWindow ()
{
Create (NULL, _T ("The Test Application"));
}
void CMainWindow::OnPaint ()
{
CPaintDC dc (this);
CRect rect;
GetClientRect (&rect);
dc.DrawText (_T ("Test MFC"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}