内容概述
mfc实现一个空窗口:
1、头文件#include<afxwin.h>
2、应用程序类MyApp继承CWinApp,有且仅有一个应用程序对象
3、入口函数(应用程序类的成员函数)InitInstance()
1)创建窗口
2)窗口显示和更新,保存主窗口指针mfc的事件处理:消息映射机制
1、在.h中声明 声明宏 DECLARE_MESSAGE_MAP()
2、在.cpp中分界宏
1)BEGIN_MESSAGE_MAP(当前窗口类,窗口类父类)
2)END_MESSAGE_MAP()
鼠标消息 键盘消息 绘图消息window字符集
ANSI(多字节) 1个字符对应 1个字节
中文 韩文... 宽字节 1个字符对应多个字节 unicode UTF-8 3个字节 gbk 2个字节
mfc.h
#pragma once
#include <afxwin.h> //MFC需要包含的头文件
class MyApp : public CWinApp //应用程序类
{
public:
//MFC程序入口
virtual BOOL InitInstance();
};
//窗口框架类
class MyFrame :public CFrameWnd
{
public:
MyFrame();
//使用消息映射机制 必须引用声明宏
DECLARE_MESSAGE_MAP()
afx_msg void OnLButtonDown(UINT, CPoint);//鼠标左键按下声明
afx_msg void OnChar(UINT, UINT, UINT); //键盘函数声明
afx_msg void OnPaint();//绘图实现
};
mfc.cpp
#include "mfc.h"
MyApp app;//应用程序的对象,有且仅有一个
BOOL MyApp::InitInstance() //入口函数
{
//创建窗口
MyFrame *frame = new MyFrame;
//显示和更新
frame->ShowWindow(SW_SHOWNORMAL);
frame->UpdateWindow();
m_pMainWnd = frame;//保存指向应用程序主窗口的指针
return true;//返回正常初始化
}
//消息映射的分界宏
BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd)
ON_WM_LBUTTONDOWN() //鼠标左键按下
ON_WM_CHAR() //键盘宏
ON_WM_PAINT()
END_MESSAGE_MAP()
void MyFrame::OnLButtonDown(UINT, CPoint point)
{
TCHAR buf[1024];
wsprintf(buf,TEXT("X = %d,y = %d"),point.x,point.y);
MessageBox(buf);
CString str;
//格式化字符串
str.Format(TEXT(":::x = %d,y = %d"),point.x,point.y);
MessageBox(str);
}
void MyFrame::OnChar(UINT key, UINT, UINT)
{
/*TCHAR buff[1024];
wsprintf(buff,TEXT("按下了%c"),key);
MessageBox(buff);*/
CString str;
str.Format(TEXT("按下了%c"),key);
MessageBox(str);
}
void MyFrame::OnPaint()
{
CPaintDC dc(this);//画到当前窗口中
//画文字
dc.TextOutW(100,100,TEXT("朱德建"));
//画椭圆
dc.Ellipse(10, 10, 100, 100);
//多字节转宽字节
MessageBox(L("aaa"));
//统计宽字节字符串程度
const wchar_t *p = L"BBB";
int n = wcslen(p);
//类型相互转换
//string -- char* .c_str()
//CString -- char*
//char* --> CString
const char* p2 = "aa";
CString str = CString(p2);
//CString -->char*
CString str2 = TEXT("abc");
CStringA tmp;
tmp = str2;
char* pp = tmp.GetBuffer();
}
//窗口框架的默认构造函数
MyFrame::MyFrame()
{
Create(NULL,TEXT("mfc window"));
}