2017.9.25 MFC<1

Windows程序的内部运行原理

学习了MFC的一些理论性知识和实际的操作应用!

以下是理论知识:

char:是ANSI字符的数据类型

wchar_t:是Unicode字符的数据类型

TCHAR:同时支持两种字符串

LPSTR:即 char *,指向以'/0'结尾的8位(单字节)ANSI字符数组指针

LPWSTR:即wchar_t *,指向'/0'结尾的16位(双字节)Unicode字符数组指针?

LPCSTR:即const char *

LPCWSTR:即const wchar_t *?

LPTSTR:LPSTR与LPWSTR两者二选一,取决于是否宏定义了UNICODE或ANSI

LPCTSTR:?LPCSTR与LPCWSTR两者二选一,取决于是否宏定义了UNICODE或ANSI,如下是从MFC库中拷来的:

Windows程序设计是一种事件驱动的程序设计方法。主要是基于消息的。当用户需要完成某种功能时,会调用操作系统的某种支持,操作系统将用户的需要包装成某种消息,并投递到消息队列当中。然后利用应用程序从消息队列中取走消息并进行响应

消息循环的处理过程

MSG  msg;

While (GetMessage(&msg,NULL, 0,0))

{  TranslateMessage(&msg);

DispatchMessage(&msg);

}

(1) GetMessage()函数不断侦察应用程序的消息队列,若队列为空,则该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它复制到msg结构变量中,同时该函数返回TRUE。

(2) 得到消息msg后,TranslateMessage()把来自键盘的命令翻译成WM_XXX消息命令形式。

(3) DispatchMessage()函数通知Windows把每个消息分发给相应的窗口函数。应用程序并不直接调用窗口函数,而由Windows根据消息去调用窗口函数,因此,窗口函数经常被称为回调函数。

Windows32应用程序开发过程

1创建应用程序

2编写WinMain 函数

窗口的创建

(1)设计一个窗口类

(2)注册窗口类

(3)创建窗口实例

(4)显示及更新窗口

应用程序的消息循环处理

MSG  msg;

While (GetMessage(&msg,NULL, 0,0))

{  TranslateMessage(&msg);

DispatchMessage(&msg);

}

定义窗口类的结构

typedef struct _WNDCLASS { �UINT style;            //窗口类的风格

�WNDPROC lpfnWndProc; //窗口处理函数

�int cbClsExtra;      //窗口类附加数据大小

�int cbWndExtra;    //窗口附加数据大小

�HANDLE hInstance; //当前应用程序的实例句柄

�HICON hIcon;      //窗口图标

HCURSOR hCursor;          //窗口的鼠标

�HBRUSH hbrBackground; //窗口的背景画刷

�LPCTSTR lpszMenuName; //菜单

�LPCTSTR lpszClassName; //窗口类名称

} WNDCLASS;

(2)窗口类的注册

一个窗口,在创建之前需要先向操作系统进行注册,这类似现实生活中我们开公司,要先向工商局进行注册一样。

?我们通过RegisterClassEx()这个API将窗口类在操作系统中进行注册,并通过其返回值判断是否注册成功。

窗口注册

if ( !RegisterClass(&wndclass) )

{

//消息对话框

MessageBox(NULL, _T(“注册窗口类失败!”), _T(“错误信息”), MB_ICONERROR);

return 0;

}

(3)窗口的创建API

HWND?hWnd?=?CreateWindow(

_T(“MyWindowClass”),       //窗口类名称

_T(“Window API编程”),                  //窗口名称,窗口标题

WS_OVERLAPPEDWINDOW,      //窗口类型

CW_USEDEFAULT, ? //窗口的左上角X坐边

CW_USEDEFAULT,? //窗口的左上角X坐边

CW_USEDEFAULT, ?//窗口的宽度

CW_USEDEFAULT,? //窗口的高度

NULL,? //父窗口句柄

NULL, //窗口菜单句柄

hInstance, //应用程序的实例句柄

NULL  //创建的参数,一般为NULL

);

(4)窗口的显示与更新

窗口的显示与更新

ShowWindow(hwnd,SW_SHOW);

UpdateWindow(hwnd);

MFC中CString字符串类

1.CString 类对象的初始化:

CString str;

CString str1(_T(“HelloWorld "));

CString str2 = _T(“HelloWorld");

2.取字符串长度成员函数:GetLength();

CString str(_T("abc"));  int len = str.GetLength(); //len == 3

3.字符串的连接:+、+=

CString str(_T("abc"));

str = _T("de") + str + _T("kp"); //str == deabckp

TCHAR szBuf[] = _T("789");

str += szBuf; //str == deabckp123789

4.去除空格成员函数: Trim();

CString str (_T(“    HelloWorld    "));      str1.Trim();

5.字符串的比较:==、!=

CString str1(_T("abc"));    CString str2 = _T("aBc");

if (str1 == str2)

MessageBox(_T("str1 等于 str2"));

else

MessageBox(_T("str1 不等于 str2"));

6. CString 对象类型的转换:

格式化字符串:Format 方法,实现从 int、long 等数值类型、TCHAR、TCHAR * 等类型向 CString 类型的转换;

int num = 6;      CString str;      str.Format(_T("%d"), num);

CString 类型向 int 等数值类型

CString str1(_T("123"));      int num = _ttoi(str1);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,557评论 1 118
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,346评论 0 35
  • 史上最全的iOS面试题及答案 迷途的羔羊--专为路痴量身打造的品牌。史上最精准的定位。想迷路都难!闪电更新中......
    南虞阅读 1,500评论 0 8
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,004评论 0 12
  • 文/宁夏初开 妈妈 是世上最温柔的花儿 在狂风暴雨中 流着泪微笑 透过她的泪珠 映着孩子的叛逆与不羁 写满青春的日...
    宁夏初开阅读 311评论 13 18