创建Windows窗口的问题

创建Windows窗口的问题,第1张

UpdateWindow函数通过发送一个WM_PAINT消息来更新指定窗口的客户区。函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗口过程,如果更新区域为空,则不发送消息。

只不过是更新你创建的窗口,ShowWindow(hwnd,SW_NORMAL);//创建的窗口显示出来后,你又紧接着更新窗口,这时你的窗口完全没什么变化,更不更新都一样的。所以用不用效果也一样。

从WINDOWS系统的窗口机制上来说需要至少三步:

1、注册窗口类

2、利用CreateWindow/CreateWindowEx() API 创建窗口

3、实现窗口类中的定义的消息事件的回调函数。

如果是创建已经注册好的窗口(比如系统提供的一些窗口类型,编辑框、树形列表等)无须注册窗口类,直接通过CreateWindowEx() 进行创建,也无须处理窗口的事件消息。 如果需要自己处理这些消息,那么就是所谓的子类化或超类化的技术概念了。

如果是实现对话框,则比较简单。 对话框是一个特殊的窗口类型,需要现在资源中定义一个对话框模板,然后通过DialogBoxParam/DialogBoxIndirectParam()等API直接创建就可以了。

从实现上来说:

1、SDK 编程, 那么需要按需求手动编码,依据需要处理这几个步骤

2、基于ATL框架, 直接创建一个基于CWindowImpl<> 模板类,继承实现一个类实例来处理消息链。 然后在需要的地方直接创建一个类实例,调用类实例的Create() 方法就成。

3、基于MFC框架,直接创建一个基于CWnd/CDialog类,继承实现类实例,来处理消息链。原理同ATL类似,无非是实现方式不大一样。

基于ATL/MFC框架都可以通过VS的向导进行创建,原理是一样的,无非就是省却大部分手动敲码的过程。

windows下通过调用API来创建窗口:

#include<windowsh>

int main()

{

MessageBox(NULL,"Hello World!","C图形程序",MB_OK);

return 0;

}

linux下通过调用图形库来创建窗口。

楼主如果是学C的话,先不要急于搞这些东西,把基础打扎实才是最重要的,GUI可以后学。基础扎实了,这些只是很简单的东西。

#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")

以上代码加入你的头文件stdafxh或其他头文件中就不会有控制台窗口了。

原理:VC 控制台应用程序入口点为cmd窗口后才进入main函数。而上面的指令是告诉编译器程序的入口点为main函数。

出现这种问题的原因可能就是Microsoft NET Framework 40版本过低导致,解决方法如下。

1、首先百度搜:net framework 20 或net20,如下图所示。

2、下载net framework 20到桌面,打开压缩包,双击安装程序。

3、然后在打开的安装页面中,点击下一步。

4、接着在打开的页面中,同意条款,点击安装。

5、最后等待安装完成,此时,可以重新点击安装软件就可以运行了。

while(true)

{

if(PeekMessage(&msg,hwnd1,0,0,PM_REMOVE) || PeekMessage(&msg,hwnd2,0,0,PM_REMOVE))

{

if(msgmessage == WM_QUIT)

break;

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

消息循环没结束,再一个你的消息循环有问题呀:

if(PeekMessage(&msg,hwnd1,0,0,PM_REMOVE) || PeekMessage(&msg,hwnd2,0,0,PM_REMOVE)) 返回false的时候就会一直循环下去

将里面的 DOWORD dwStyle设置为WS_MAXIMIZE即可,其实它还可以用好多,比如WS_BORDER,WS_MINIMIZE,WS_OVERLAPPEDWINDOW,WS_OVERLAPPED,WS_POPUP,WS_VSCROLL,WS_TILEDWINDOW等等之类的。

以上就是关于创建Windows窗口的问题全部的内容,包括:创建Windows窗口的问题、VC++ win32 application里如何建一个子窗口、C语言如何创建窗口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10116064.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存