MFC Windows程序设计-概述

1.常用全局函数
AfxAbort:无条件终止
AfxMessageBox
AfxGetApp
AfxGetAppName
AfxGetMainWnd
AfxGetInstanceHandle
AfxRegisterWndClass:为MFC应用程序注册自定义WNDCLASS类。

2.CWinApp常用虚函数
InitInstance
ExitInstance
OnIdle
PreTranslateMessage

3.
virtual BOOL CWnd::Create(
LPCTSTR lpszClassName,// 为NULL,采用默认窗口类
LPCTSTR lpszWindowName,// 标题
DWORD dwStyle, // 样式
Const RECT& rect,// 初始位置
CWnd* pParentWnd,// 父窗口,NULL则桌面窗口为父窗口
UINT nID,// 子窗口ID
CCreateContext* pContext = NULL
);

virtual BOOL CreateEx(
DWORD dwExStyle, // 扩展样式
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle,
const RECT& rect,
UINT nID,
LPVOID lpParam = NULL// CWnd::OnCreate的lpCreateParams
);

virtual BOOL CreateEx
(
DWORD dwExStyle,
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle,
int x, int y, int nWidth, int nHeight,
HWND hWndParent,
HMENU nIDorHMenu, // 对于子窗口为子窗口ID。非子窗口,窗口菜单ID
LPVOID lpParam = NULL// CWnd::OnCreate的lpCreateParams
);

4.文字输出的基本属性:
字体,文本颜色,背景颜色是设备环境的属性。可由CDC的对应成员函数如SelectObject,SetTextColor,SetBkColor等控制。

5.消息映射
从CCmdTarget派生的任何类都可包含消息映射。
MFC为100多种,从WM_ACTIVE到WM_WININICHANGE的Windows消息提供了宏。
处理MFC没提供消息映射宏的消息时,用ON_MESSAGE.
每一个消息映射宏,对应的函数类型是特定的。

ON_COMMAND:将菜单和其他UI事件映射到类成员函数。
ON_UPDATE_COMMAND_UI:

6.消息映射工作方式
DECLARE_MESSAGE_MAP()
对应
private:
static const AFX_MSGMAP_ENTRY _messageEntries[];
protected:
static const AFX_MSGMAP messageMap;
virtual const AFX_MSGMAP* GetMessageMap() const;

BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd)
ON_WM_PAINT()
END_MESSAEG_MAP()
对应
const AFX_MSGMAP * CMainWindow::GetMessageMap() const
{
return &CMainWindow::messageMap;
}
const AFX_MSGMAP CMainWindow::messageMap =
{
&CFrameWnd::messageMap;
&CMainWindow::_messageEntries[0];
};

const AFX_MSGMAP_ENTRY CMainWindow::_messageEntries[] =
{
{WM_PAINT, 0, 0, 0, AfxSig_vv, (AFX_PMSG)(AFX_PMSGW)(void (CWnd::*) (void))OnPaint},
{0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0}
};


消息分派:
1.框架调 CMainWindow::WindowProc
2.CMainWindow::WindowProc调用CMainWindow::OnWndMsg

CMainWindow::OnWndMsg处理流程:
在CMainWindow的_messageEntries中寻找匹配
找不到,继续在CMainWindow的基类中寻找匹配

对基类处理类似。

7.字符集
1.ANSI版本: “Hello”
2.Unicode版本:L”Hello”
3._T(“Hello”):根据是否定义类预处理符号 _UNICODE分别对应到1或2

使应用程序不关心字符集:
1.字符声明用TCHAR
2.指向字符串指针为 TCHAR*/LPTSTR/LPCTSTR
3.对C运行时间库中字符串函数的调用替换为Windows头文件TChar.h中的对应宏。

8.
CalcWindowRect// 传入参数为指向 客户区矩形指针,处理后,指针指向 窗口矩形。
SetWindowPos // 接收的是窗口位置尺寸

你可能感兴趣的:(Ui-Window-Mfc)