关于mfc深入浅出的一个例子Hello mfc
资源文件:
HELLO.rc
// Microsoft Visual C++ 生成的资源脚本。
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// 从 TEXTINCLUDE 2 资源生成。
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// 英语(美国)资源
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE 4, 2
#pragma code_page(936)
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // 英语(美国)资源
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// 从 TEXTINCLUDE 3 资源生成。
//
/////////////////////////////////////////////////////////////////////////////
#endif // 不是 APSTUDIO_INVOKED
JJHouRIcon ICON DISCARDABLE "JJHOUR.ICO"
AFX_IDI_STD_FRAME ICON DISCARDABLE "JJHOUR.ICO"
MainMenu MENU DISCARDABLE
{
POPUP "&Help"
{
MENUITEM "&ABOUT...",IDM_ABOUT
}
}
AboutBox DIALOG DISCARDABLE 34,22,147,55
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About Hello"
{
ICON "JJHouRIcon",IDC_STATIC,11,17,18,20
LTEXT "Hello MFC 4.0",IDC_STATIC,40,10,52,8
LTEXT "Copyright 1996",IDC_STATIC,40,25,100,8
LTEXT "J.J.Hour",IDC_STATIC,40,40,100,8
DEFPUSHBUTTON "OK",IDOK,105,7,32,14,WS_GROUP
}
resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by HELLO.rc
// 新对象的下一些默认值
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
#define IDM_ABOUT 100
STDAFX.h
#include <afxwin.h>
STDAFX.cpp
#include "stdafx.h"
HELLO.h
class CMyWinApp:public CWinApp
{
public:
BOOL InitInstance();
};
class CMyFrameWnd:public CFrameWnd
{
public:
CMyFrameWnd();
afx_msg void OnPaint();
afx_msg void OnAbout();
private:
DECARE_MESSAGE_MAP();
static VOID CALLBACK LineDDACallback(int,int,LPARAM);
};
HELLO.cpp
#include "Stdafx.h"
#include "Hello.h"
#include "Resource.h"
CMyWinApp theApp;
BOOL CMyWinApp::InitInstance()
{
m_pMainWnd=new CMyFrameWnd();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
CMyFrameWnd::CMyFrameWnd()
{
Create(NULL,"Hello MFC",WS_OVERLAPPEDWINDOW,rectDefault,NULL,"MainMenu");
}
BEGIN_MESSAGE_MAP(CMyFrameWnd,CFrameWnd)
ON_COMMAND(IDM_ABOUT,OnAbout)
ON_WM_PAINT()
END_MESSAGE_MAP()
void CMyFrameWnd::OnPaint()
{
CPaintDC dc(this);
CRect rect;
GetClientRect(rect);
dc.SetTextAlign(TA_BOTTOM|TA_CENTER);
::LineDDA(rect.right/2,0,rect.right/2,rect.bottom/2,(LINEDDAPROC)LineDDACallback,(LPARAM)(LPVOID)&dc);
}
VOID CALLBACK CMyFrameWnd::LineDDACallback(int x,int y,LPARAM lpdc)
{
static char szText[]="Hello,MFC";
((CDC*)lpdc)->TextOut(x,y,szText,sizeof(szText)-1);
for(int i=1;i<50000;i++);
}
void CMyFrameWnd::OnAbout()
{
CDialog about("AboutBox",this);
about.DoModal();
}
以上是全部代码,我照着书上打的.
编译提示我:
WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
e:\2006\vc\HelloWorld\HELLO.h(17) : warning C4183: “DECARE_MESSAGE_MAP”: 缺少返回类型;假定为返回“int”的成员函数
e:\2006\vc\HelloWorld\HELLO.cpp(20) : error C2509: “GetMessageMap” : 成员函数没有在“CMyFrameWnd”中声明
e:\2006\vc\HelloWorld\HELLO.h(10) : 参见“CMyFrameWnd”的声明
e:\2006\vc\HelloWorld\HELLO.cpp(20) : warning C4356: “CFrameWnd::messageMap” : 静态数据成员无法通过派生类初始化
e:\2006\vc\HelloWorld\HELLO.cpp(20) : warning C4356: “CFrameWnd::_messageEntries” : 静态数据成员无法通过派生类初始化
请各位帮忙..