怎样使用MFC创建一个窗口类 如何进行MFC框架编写窗口程序

作者&投稿:亓尝 (若有异议请与网页底部的电邮联系)
创建一个完整窗口要经历的步骤:
1)设计一个窗口类;
2)注册窗口类;
3)创建窗口;
4)显示及更新窗口。

第一步:
windows 已经为用户定义了一个完整的窗口类,用户只需要将各个属性填满既可以。窗口类是一个 结构体,其定义如下:
typedef struct _WNDCLASS{
UINT style;//class style
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HANDLE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
}WNDCLASS;
第二步:
用RegisterClass(&wndclass)来定义的窗口注册。
第三步:创建窗口
1)定义一个句柄,然后用CreateWindow()来为句柄赋值。函数用法参看MSDN。创建窗口必须依据已经声明并且已经注册的窗口类型来创建。
HWND CreateWindow(
LPCTSTR lpClassName,//定义的窗口类名
LPCTSTR lpWindowName,//窗口的名字,将会在标题栏上显示出来的
DWORD dwStyle,//窗口的风格(窗口的外观模式和功能按钮等等)
int x,//窗口初始位置ws_usedefault
int y,//同上
int nWidth,//窗口的宽度,可以用ws_usedefault
int nHeight,//窗口高度,可以用ws_usedefault
HWND hWndParent,//父窗口的句柄,单一窗口则设置为空
HMENU hMenu,//菜单的句柄,如果没有菜单则将这个句柄设置为空
HINSTANCE hInstance,//由系统进行分配标识
LPVOID lpParam//一般设置为空
);
第四步:显示窗口
调用ShowWindow()函数来显示窗口。
ShowWindow(
HWND hWnd,//要显示的窗口的句柄
int nCmdShow//显示窗口的模式,如:最大化最小花显示
)
第五步:更新窗口
在显示窗口的函数调用完毕以后调用UpdateWindow()来对窗体进行更新
UpdateWindow(hwnd);//这个函数没有并不影响消息产生。
//消息循环
MSG msg;//定义了一个消息结构体变量
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
/*
GetMessage(
LPMSG lpMsg,
//消息结构提的指针,无需对这个消息结构提的内部成员初始化,
//这个只需将定义的结构体的地址传到这里
HWND hWnd,
//窗口句柄,指明要获得的是那个窗口的消息,如果要获取所有窗口的消息则
//定义为NULL
UINT wMsgFilterMin,
//用来指定要从消息队列里边取得的最小值,
UINT wMsgFilterMax
//用来指定要从消息队列里边取得的最大值,
///////////////////////////////////////////////////////////////////////
//这两个参数用来限制GETMESSAGE 在消息队列里边的取值范围,//
//以去处调一些确定不感兴趣的消息 //
//if要从消息队列中所有的消息中提取的话则两个参数均设定为 //
//零 //
///////////////////////////////////////////////////////////////////////
);//从调用程序线程消息队列中取消息
*/
有了创建窗口的整个流程以后,现在就开始定义窗口过程,用WindowProc()
LRESULT CALLBACK WindowProc(/*函数名字可以更改,但是参数不允许改变*/
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);//参数和消息结构提的前四个参数相同,事实上系统在调用窗口过程函数
//的时候自动将消息结构体的前四个参数传递到窗口过程

在向中的新建类, 基类选择CWnd类就可以了

关于opengl创建的窗口如何放在mfc的子窗口下~

使用MFC的子窗口作为句柄, 使用该窗口的DC来初始化OpenGL,这样, 你的OpenGL天生就会呆在这个窗口里.

按向导创建一个对话框程序或者单文档程序就可以了. 不用你写一行代码, 就可以生成一个窗口了.

怎样使用MFC创建一个窗口类
答:1)定义一个句柄,然后用CreateWindow()来为句柄赋值。函数用法参看MSDN。创建窗口必须依据已经声明并且已经注册的窗口类型来创建。HWND CreateWindow(LPCTSTR lpClassName,//定义的窗口类名 LPCTSTR lpWindowName,//窗口的名字,将会在标题栏上显示出来的 DWORD dwStyle,//窗口的风格(窗口的外观模式...

MFC中,怎么来创建新的窗体并显示出来?
答:要想创建窗体视图类应该在向导第二步选择 多文档 应用程序序,其他步骤按默认。在工程中插入一个“对话框”资源,进入Class Wizard时它会提示让我们创建一个与刚插入的对对话框资源相关的类。在弹出的类向导中选择基类为 CFormView就可以了.要想在多文档中显示这个视类还的加一个框架类,和添加一些代码。

MFC如何创建一个子窗口?
答:第一步:添加资源 Insert->Resource,然后选中Dialog,然后点击New,如下图。第二步:为该新资源添加类。切换到ResourceView,双击刚才添加的对话框,然后在弹出的提示框里选择“Create a new class”,然后点击OK,你会看到如下对话框 为这个类命名,只修改name一栏,我这里把它命名为CMyFristDlg,其他...

MFC是如何创建窗口的?
答:CreateNewDocument创建文档对象,使用运行时的模板类信息,向当前文档列表加入新文档,框架和视图被CreateNewFrame创建 创建对象后,CFrameWnd::LoadFrame调用,传入模板构造器中指定的资源ID,LoadFrame装入每一个资源(菜单、工具栏、图标、加速键表、字符串),将他们附着在框架窗口中,如果任何一种装载失败,...

MFC中用Cwnd类创建一个最简单的窗口
答:{ public:virtual BOOL InitInstance();~COurApp();};//窗口类 class COurWnd: public CWnd { public:COurWnd(){ //构造函数 // Create(0,L"我们的MFC程序!");CreateEx(0,AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,LoadCursor (NULL, IDC_ARROW),(HBRUSH) GetStockObject (WHITE_BRUSH...

MFC如何在父窗口的指定位置创建子窗口,及bo
答:1、我们新建一个基于对话框的项目,项目名字为test。2、在资源视图中添加两个对话框IDD_ENQIURENOTE_NEWDLG_INFO、IDD_ENQIURENOTE_NEWDLG_ENQIURE,并设计好对话框的界面。在资源视图的子窗口通过右键,选择属性,把子窗口的style设置为child。而picture控件的border属性默认是典型的对话框形式,如果想...

用MFC怎么创建一个全屏窗口
答:1) 在CMainFrame类中,增加如下三个成员变量。Class CMainFrame : public CFrameWnd { private: //自己添加的三个成员变量 WINDOWPLACEMENT m_OldWndPlacement; //用来保存原窗口位置 BOOL m_bFullScreen; //全屏显示标志 Crect m_FullScreenRect; //表示全屏显示时的窗口位置 protected: CM...

怎么用MFC做一个最简单的窗口
答:入门极好 贴里面的"HELLO WORLD" MFC程序示例给你 //hello.cpp include <afxwin.h> // 说明应用程序类 class CHelloApp : public CWinApp { public:virtual BOOL InitInstance();};// 建立应用程序类的实例 CHelloApp HelloApp;// 说明主窗口类 class CHelloWindow : public CFrameWnd { CStatic...

Visual Studio2013怎么创建MFC窗体
答:对于使用新版vs2013的朋友们来说这方面的资料着实少,下面介绍下最基本的用vs2013创建一个熟知的标准MFC窗体。方法/步骤 启动程序后,选择“文件>新建”菜单。如图所示依次展开左边“已安装>模版>其他语言>Visual C++>MFC”,确认好文件保存路径和项目名后,就可以点击确定了。点击确定后,会弹出MFC的程序...

MFC怎么注册RegisterClass创建WNDCLASS
答:RegisterClassEx(&wc);这种方式比较麻烦。方式二:用MFC的全局函数AfxRegisterWndClass注册WNDCLASS,不需要定义所有字段,只需要关注其4个参数值。函数原型:LPCTSTR AfxRegisterWndClass(UINT nClassStyle,HCURSOR hCursor=0,HBRUSH hbrBackground=0,HICON hIcon=0);第一个参数指定类样式,定义窗口的某种...