可以用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;
}
温馨提示:内容为网友见解,仅供参考
用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,...