C++必须使用MFC来创建窗口?

新手刚学,在看教程中发现视频教程中使用MFC来创建窗口,我想问下C++必须使用MFC来创建窗口吗,C++自身不能创建窗口吗,如果能怎么办才能使用C++不使用MFC创建窗口。。
还是因为MFC创建窗口比C++速度快??省事????

可以用API创建窗口的。MFC只是做了一定的封装,大大方便使用了而已。如下是DEV-C++里一个sample,用的API。
#include <windows.h>

/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)

{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */

/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);

/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;

/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);

/* Make the window visible on the screen */
ShowWindow (hwnd, nFunsterStil);

/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}

/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}

/* This function is called by the Windows function DispatchMessage() */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-08
C++自身能创建窗口,需要调用Windows API创建窗口
MFC,是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎
所以用MFC创建窗口比C++速度快,省事
第2个回答  2011-06-08
C++下自定义窗口比较复杂,初学者如果有兴趣也可以学学的。
第3个回答  2011-06-08
可以用API 来创建窗口的。
第4个回答  2011-06-08
图形界面还是java比较好用,直接拖动就可以实现编程了。C++的话,不了解。

用C++做windows桌面应用程序一定要用MFC吗?
用API 也可以。如果要用复杂的图形界面,用许多“控制”(按钮,滑块,Edit, 树,色彩选择)那么用MFC比较方便,可以节省自己很大的工作量。MFC函数很多,用到哪,可以查到哪,不用的不去管它。东西太多,不要学了再用,而是边用边学,用哪学哪,不用的不学。C++是C语言的继承,它既可以进行C语言...

MFC只能用C++语言来写吗?MFC与C++是什么关系?
MFC: Microsoft Foundation Class,称为微软基础类库,与VC++捆绑在一起,主要用于商业开发,可以在一定程度上提高开发效率。而C++和C语言一样,是一门语言,C++可以用于多个开发平台,比如Borland C++ ,VC++ ,甚至可以在TC上编写程序,C++和C语言一样,是一门语言。

用C++做windows桌面应用程序一定要用MFC吗?
用API 也可以。用别的软件包也可以。如果要用复杂的图形界面,用许多“控制”(按钮,滑块,Edit, 树,色彩选择)那么用MFC比较方便,可以节省自己很大的工作量。控制台应用程序设计概念 与 视窗程序设计概念不同。老观念搁置起来,接收新概念。入门难一点,入门后就如鱼得水了。MFC函数很多,用到哪,...

1.在用VC++6.0创建窗口时,我的步骤是这样的(跟着孙鑫教程里学的)。1...
RegisterClass(&wnd);\/\/注册 hWnd = CreateWindow("XP","窗口",WS_OVERLAPPEDWINDOW,100,100,500,500,NULL,NULL,hInstance,NULL);\/\/创建窗口,参考MSDN ShowWindow(hWnd,SW_SHOWNORMAL);\/\/显示 UpdateWindow(hWnd);\/\/更新窗口 while(GetMessage(&msg,NULL,0,0)){\/\/消息循环 TranslateMessage(&msg);...

关于MFC创建window窗口的问题
· 将背景刷子设为NULL,因此窗口将不会擦去它的背景。 · 将图标设为标准的波浪标志的Windows徽标。 hCursor 指定了一个鼠标光标资源句柄,将被用于该窗口类所创建的每个窗口。如果你使用缺省值0,你将得到标准的IDC_ARROW光标。 hbrBackground 指定了一个刷子资源句柄,将被用于该窗口类所创建的每个...

c++编程,windows编程与mfc编程
如果你现在想学windows API 编程的话,用VC也是合适的,创建工程的时候选择Win32 App,并且不使用MFC。Windows API编程肯定需要使用一种编程语言的,选择C或者C++都是不错的选择,只要在程序里不使用MFC,而是直接调用Windows 提供的最基本的API,都可以叫做Window API编程的。至于选择开发环境,VC还是相当不...

c++不用vc 6.0中mfc能不能写出图形界面程序
完全可以不用。MFC仅仅是对 Windows API 的一次面向C++语言的封装,可用可不用。只不过那样是自找麻烦罢了。我就举个不用MFC编写图形用户界面的例子,就是所谓 Windows SDK 编程。以下代码不含丝毫MFC,在Visual C++ 6.0测试通过,能够出现一个正规的Windows窗口。include <tchar.h>#include <windows....

mfc语言究竟是神马玩意儿T_T
MFC程序的初始化过程 建立一个MFC窗口很容易,只用两步:一是从CWinApp派生一个应用程序类(这里是MyApp),,然后建立应用程序对象(theApp),就可以产生一个自己需要的窗口(即需要什么样就在InitInstance()里创建就行了)[2] 。运行时类型识别(RTTI)运行时类型识别(RTTI)即是程序执行过程中知道某...

模式对话框的相关区别
而非模式对话框则是利用CreateWindow来创建的。在MFC或是WTL中,模式对话框一般是使用DoModal,而非模式对话框的创建则是使用Create。一、使用中的区别模式对话框创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作。而非模式对话框则无需这样,它不强制要求用户立即反应,...

怎样用C++编写窗体应用程序
很简单啊,windows 就加个 windows.h 其他平台的就加他们的 api 函数 头文件。再找他们的帮助文档。其他平台我就没碰过,不过windows 创建窗口 要创建窗口类型。不是c++拿着那个类 注册窗口类型。创建窗口,显示窗口,更新窗口。每个都是函数实现。要简单就直接用mfc ,控制台程序好像能使用mfc,...

相似回答