您的位置:首页 > 其它

MFC学习第一天心得!

2011-09-22 19:47 260 查看
MFC学习过程1

#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);

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: