第一天学习mfc写的学习心得,内容对错请大家指点!谢谢!

时间:2022-09-04 16:48:27

#include “stdafx.h” //这是win32编程必不可少的环境参数。必须要添加的,16位的程序就不需要。
#include “windows.h”//这是所有windows程序编写必须的头文件
Int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevstance,
LPTSTR nCmdLine,
int nCmdShow)
//程序的入口函数,lptstr的类型定义在typedef lpwstr ptstr,lptstr; 与(char*)等价指向字符串//的指针LP代表长指针,那是为了与此16位操作系统兼容而已,32位下,其实与p一样,//代表是个指针,str代表的是字符串的意思

//WINAPI与CALLBACK一样类型属于__stdcall压栈顺序(后进先出法,从右至左传入参数)//而几乎所有用到的windowsAPI函数都是_stdcall类型的!C/c++默认的是_cdecl.

//_stdcall与_cdecl的区别就是清栈,_stdcall是系统清理,_cdecl是调用者清理。
//CALLBACK和WINAPI还有一个意思,回调函数,用户无法调用这个函数,只有操作系统才//有权力调用这个函数.
//WinMain()里面的参数全部是系统返回的.
//HINSTNACE hInstance 他的声明是DECLARE_HANDLE(HINSTANCE); 应用程序当前实例句柄
//这里要着重讲一下DECLARE_HANDLE()这个宏他在windef.h里面的定义是如下的:
//DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
//##意思是连接两个子串.打个比方,可能会看得懂点.
//DECLARE_HANDLE(HINSTANCE)
//最后会变成struct HINSTANCE_{int unused;};,struct HINSTANCE_ *HINSTANCE;看到这,大
//家应该搞明白hwnd,hinstance等等句柄啊,实例的内部处理原理了吧,只是我搞不懂,微
//软为什么搞得这么复杂,可能是为了封装吧!因为照这个样子,hwnd与hinstance在内部是
//一样的,甚至可以通过强制转换让编译器认可.
//HINSTANCE hPrevstance 父窗口,win32程序一律为null
//LPSTR nCmdLine  命令行参数
//int nCmdShow 显示
{
   //windows下首先要设计窗口类,然后注册窗口类,创建窗口,最后是显示窗口
WNDCLASS wc;//WNDCLASS 是窗口类,wc是类的对象
••• ••• ••• ••• //这里是设计窗口类的参数,比如窗口的大小,光标的样式!背景颜色等等。
RegisterClass(&wc);//这里是注册窗口.
HWND hwnd;//他的声明是DECLARE_HANDLE(HWND),窗口建立完成后返回的句柄.
hwnd=CreateWindow(••••••)//这里的过程就是创建窗口的过程
If(!hwnd)
{
   MessageBox(NULL,”窗口创建过程错误”,”出错”,MB_OK);
   Return 0;
}
ShowWindow(hwnd,nCmdShow)
UpdateWindows(hwnd);
}


这是我花了一天的学习心得,进度有点慢,不知道有没有错的地方,望大家指点,谢谢!

17 个解决方案

#1


一样才开始学习..楼主你这个就是windows的程序设计啊...

话说为什么没有消息循环和消息处理 - -

#2


明天才着重看消息循环和消息处理!今天只是随便看了两眼。我是打算先用winapi,然后再慢慢试着用自己的方法学会类似mfc来封装api(有点吹牛皮,见谅,呵呵)

#3


好好学习!!

#4


恩  基础的东西  楼主加油

#5


其实创建的时候选择一个简单的 hello windows 程序..我觉得那个代码写的就蛮好的.可以学学

#6


一起学习

#7


不错 不错

#8


如果刚学建议你找《Win32程序员参考手册》微软出的,清华出版,很久以前的书了,一套5册,很好的书,现在可能只能找到电子版本的了。

#9


谢谢!我找找这本书看看!

#10


刚下了你说的书,一共有五卷,真的是经典的书啊!!!太经典了!

#11


我也刚学,我看的是孙鑫的教学视频。  不过你上述的心得,我看视频就没有得出来。你看的什么书?

#12


建议你别看孙鑫的那个教程,上手很快!看他讲的原理,对没有mfc基础的人根本就像看天书一样!到了后面,确实编几个他教的程序很容易,其实过几天你再编,你就会发现,结果一窍不通!当然这是我的个人建议!

#13


这不是mfc

#14


楼主你这个是win32吧 不过你的方法很好值得借鉴啊

#15




 lz精神可嘉

#16


精神上支持下。

引用楼主 liangfei1983 的回复:
#include “stdafx.h” //这是win32编程必不可少的环境参数。必须要添加的,16位的程序就不需要。

不是的,这只是预编译指定的头文件,目的是加快编译速度。
改变工程某些设置,不用也可以。
初学阶段,建议暂不用深入。

#17


精神可嘉啊

#1


一样才开始学习..楼主你这个就是windows的程序设计啊...

话说为什么没有消息循环和消息处理 - -

#2


明天才着重看消息循环和消息处理!今天只是随便看了两眼。我是打算先用winapi,然后再慢慢试着用自己的方法学会类似mfc来封装api(有点吹牛皮,见谅,呵呵)

#3


好好学习!!

#4


恩  基础的东西  楼主加油

#5


其实创建的时候选择一个简单的 hello windows 程序..我觉得那个代码写的就蛮好的.可以学学

#6


一起学习

#7


不错 不错

#8


如果刚学建议你找《Win32程序员参考手册》微软出的,清华出版,很久以前的书了,一套5册,很好的书,现在可能只能找到电子版本的了。

#9


谢谢!我找找这本书看看!

#10


刚下了你说的书,一共有五卷,真的是经典的书啊!!!太经典了!

#11


我也刚学,我看的是孙鑫的教学视频。  不过你上述的心得,我看视频就没有得出来。你看的什么书?

#12


建议你别看孙鑫的那个教程,上手很快!看他讲的原理,对没有mfc基础的人根本就像看天书一样!到了后面,确实编几个他教的程序很容易,其实过几天你再编,你就会发现,结果一窍不通!当然这是我的个人建议!

#13


这不是mfc

#14


楼主你这个是win32吧 不过你的方法很好值得借鉴啊

#15




 lz精神可嘉

#16


精神上支持下。

引用楼主 liangfei1983 的回复:
#include “stdafx.h” //这是win32编程必不可少的环境参数。必须要添加的,16位的程序就不需要。

不是的,这只是预编译指定的头文件,目的是加快编译速度。
改变工程某些设置,不用也可以。
初学阶段,建议暂不用深入。

#17


精神可嘉啊