基本窗口程序
1 基本窗口程序
1.1 问题
使用MFC类创建一个基本的窗口程序。
1.2 方案
1 基于Win32 Application创建项目,设置MFC的开发环境
1.1 在stdafx.h中,将<windows.h>修改为<afxwin.h>。
1.2 project->setting,设置使用MFC库。
2 删除原有的WinMain()函数。
3 添加CWinApp类的派生类CMyWinApp类;
添加CFrameWnd类的派生类CMyFrameWnd类。
使用CMyWinApp定义全局对象theApp。
4 重写CWinApp::InitInstance()函数,在函数中,完成窗口的创建。
1.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:添加应用程序类
添加CWinApp类的派生类CMyWinApp类。并声明初始化应用程序成员函数InitInstance。代码如下所示:
class CMyWinApp:public CWinApp
{
virtual BOOL InitInstance( );
};
步骤二:完成应用程序窗口的创建
编写InitInstance函数,完成应用程序窗口的创建。代码如下所示:
BOOL CMyWinApp::InitInstance( )
{
CMainFrame * pFrame = new CMainFrame;
pFrame->Create( NULL, “MFCWnd” );
m_pMainWnd = pFrame;
m_pMainWnd->UpdateWindow( );
return TRUE;
}
步骤三:设置主窗口
添加CFrameWnd类的派生类CMyFrameWnd类。并声明窗口的处理消息成员函数。代码如下所示:
class CMainFrame:public CFrameWnd
{
virtual LRESULT WindowProc( UINT message, WPARAM wParam, LPARAM lParam );
};
步骤四:主窗口消息处理
编写WindowProc窗口消息处理函数,设置主窗口属性。代码如下所示:
LRESULT CMainFrame::WindowProc( UINT message, WPARAM wParam, LPARAM lParam )
{
switch(message)
{
case WM_PAINT:
PAINTSTRUCT ps = { 0 };
HDC hDC = ::BeginPaint( m_hWnd, &ps );
TextOut( hDC, 100, 100, “Hello MFC”, 9 );
::EndPaint( m_hWnd, &ps );
break;
}
return CFrameWnd::WindowProc(message,wParam,lParam);
}
1.4 完整代码
本案例的完整代码如下所示:
//框架窗口类
class CMainFrame:public CFrameWnd
{
//窗口的处理消息
virtual LRESULT WindowProc( UINT message, WPARAM wParam, LPARAM lParam );
};
LRESULT CMainFrame::WindowProc( UINT message, WPARAM wParam, LPARAM lParam )
{
switch(message)
{
case WM_PAINT:
PAINTSTRUCT ps = { 0 };
HDC hDC = ::BeginPaint( m_hWnd, &ps );
TextOut( hDC, 100, 100, "Hello MFC", 9 );
::EndPaint( m_hWnd, &ps );
break;
}
return CFrameWnd::WindowProc(message,wParam,lParam);
}
class CMyWinApp:public CWinApp
{
//初始化应用程序
virtual BOOL InitInstance( );
};
BOOL CMyWinApp::InitInstance( )
{
//完成应用程序窗口的创建
//框架窗口对象
CMainFrame * pFrame = new CMainFrame;
//创建窗口
pFrame->Create( NULL, “MFCWnd” );
//将窗口赋值成应用程序的主窗口
m_pMainWnd = pFrame;
//显示窗口
m_pMainWnd->UpdateWindow( );
return TRUE;
}
CMyWinApp theApp;
运行结果:如图-1所示