(一)建立,注册窗口类 (转)

win32-注册窗口类、创建窗口 阅读详情

源自http://blog.itchina8.com/article.php?uid--tid-91.html

(1)建立窗口类

WinMain()是程序的入口,它相当于一个中介人的角色,把应用程序(指小窗口)介绍给windows.首要的一步是登记应用程序的窗口类.

窗口种类是定义窗口属性的模板,这些属性包括窗口式样,鼠标形状,菜单等等,窗口种类也指定处理该类中所有窗口消息的窗口函数.只有先建立窗口种类,才能根据窗口种类来创建Windows应用程序的一个或多个窗口.创建窗口时,还可以指定窗口独有的附加特性.窗口种类简称窗口类,窗口类不能重名.在建立窗口类后,必须向Windows登记.

建立窗口类就是用WNDCLASS结构定义一个结构变量,在这个程序中就是指 WNDCLASS wc ;然后用自己设计的窗口属性的信息填充结构变量wc的域.

要WinMain登记窗口类,首先要填写一个WNDCLASS结构,其定义如下所示:

   typedef struct _WNDCLASSA

   {

     UINT style ;         //窗口类风格

     WNDPROC lpfnWndProc ;    //指向窗口过程函数的指针

     int cbClsExtra ;       //窗口类附加数据

     int cbWndExtra ;       //窗口附加数据

     HINSTANCE hInstance ;    //拥有窗口类的实例句柄

     HICON hIcon ;        //最小窗口图标

     HCURSOR hCursor ;      //窗口内使用的光标

     HBRUSH hbrBackground ;   //用来着色窗口背景的刷子

     LPCSTR lpszMenuName ;    //指向菜单资源名的指针

     LPCSTR lpszClassName ;   // 指向窗口类名的指针

   }

在VC6.0里面,把光标定位在WNDCLASS上,按F1,即可启动MSDN,在MSDN里你可看到这个结构原形.在下节讲解这些参数在本程序中的具体用法.

(2)注册窗口类(就是给WNDCLASS类型的结构体变量赋值)
(1)第一个参数:成员style控制窗口的某些重要特性,在WINDOWS.H中定义了一些前缀为CS的常量,在程序中可组合使用这些常量.也可把sytle设为0.本程序中为wc.style = CS_HREDRAW | CS_VREDRAW,它表示当窗口的纵横坐标发生变化时要重画整个窗口。你看:无论你怎样拉动窗口的大小,那行字都会停留在窗口的正中部,而假如把这个参数设为0的话,当改动窗口的大小时,那行字则不一定处于中部了。

(2)第二个参数:lpfnWndProc包括一个指向该窗口类的消息处理函数的指针,此函数称为窗口过程函数。它将接收Windows发送给窗口的消息,并执行相应的任务。其原型为:

long FAR PASCAL WndProc(HWND ,unsigned,WORD,LONG);并且必须在模快定义中回调它。WndProc是一个回调函数(见第五节),如果暂时无法理解这个模糊的概念意味着什么,可先放过,等到讲消息循环时再详谈。

(3)第三,四个参数:cbWndExtra域指定用本窗口类建立的所有窗口结构分配的额外字节数。当有两个以上的窗口属于同一窗口类时,如果想将不同的数据和每个窗口分别相对应。则使用该域很有用。这般来讲,你只要把它们设为0就行了,不必过多考虑。

(4)第五个参数:hInstance域标识应用程序的实例hInstance,当然,实例名是可以改变的。wc.hInstance = hInstance ;这一成员可使Windows连接到正确的程序。

(5)第六个参数:成员hIcon被设置成应用程序所使用图标的句柄,图标是将应用程序最小化时出现在任务栏里的的图标,用以表示程序仍驻留在内存中。Windows提供了一些默认图标,我们也可定义自己的图标,VC里面专有一个制作图标的工具。

(6)第七个参数: hCursor域定义该窗口产生的光标形状。LoadCursor可返回固有光标句柄或者应用程序定义的光标句柄。IDC_ARROW表示箭头光标.

(7)第八个参数:wc.hbrBackground域决定Windows用于着色窗口背景的刷子颜色,函数GetStockObject返回窗口的颜色,本程序中返回的是白色,你也可以把它改变为红色等其他颜色.试试看

(8)第九个参数:lpszMenuName用来指定菜单名,本程序中没有定义菜单,所以为NULL。

(9)第十个参数:lpszClassName指定了本窗口的类名。

当对WNDCLASS结构域一一赋值后,就可注册窗口类了,在创建窗口之前,是必须要注册窗口类的,注册窗口类用的API函数是RegisterClass,注册失败的话,就会出现一个对话框如程序所示,函数RegisterClass返回0值,也只能返回0值,因为注册不成功,程序已经不能再进行下去了。

在本程序中注册窗口类如下:

if (!RegisterClass (&wc)) {

       MessageBox (NULL, TEXT ("This program requires Windows NT!"),

               szAppName,MB_ICONERROR) ;

       return 0 ;

             } 


 

注册窗口类 registerclass window把窗口以不同的类别进行设计,通过不同的类别来管理不同的资源,体现模块化管理的思想。以mfc为例Button类别有ccheckbox,cbutton,radiobutton等 ,Static类别有cstatic、staticgroup等。   一个应用程序在创建某个类型的窗口前,必须首先注册该“窗口类”(Windows Class)。注意,这里不是C++类的类。Register Wi 阅读详情

相关推荐

PyQt5学生成绩信息系统(一):登录注册窗口(包含窗口跳转、连接数据库等)

用Qtdesign设计的窗口界面:记录分享学习Qt设计师的文章及简介

前进加油 1万+

Windows程序设计04:注册窗口类以及创建窗口

  在上一篇博文《Windows程序设计03:创建窗口类》(http://www.cnblogs.com/menlsh/archive/2013/01/26/2878162.html)中,我们提到创建一个应用程序窗口需要五个步骤,并实现了第一个步骤:创建窗口类。   在本篇博文中,将继续介绍第二步和第三步的实现方法,调用RegisterClass函数注册窗口类和调用CreateWindow函数创...

weixin_34151004的博客 396

MFC中注册WNDCLASS样式并建立窗口

2010年4月10日记:如果程序主窗口不是由CframeWnd派生而来,而是由CWnd派生而来,那么在创建窗口的时候,必须注册自己的WNDCLASS,因为CWnd::CreateEX不接受NULL WNDCLASS名称。这种情况下,注册WNDCLASS样式半建立窗口有两种方式。方式一,定义一个WNDCLASS结构实例,并对每个字段进行初始化,然后调用::RegisterClass或者M

moon的专栏 6296

Windows编程02_注册窗口类,窗口创建,消息基础,常见消息,消息循环的原理

注册窗口类,窗口创建,消息基础,常见消息,消息循环的原理

weixin_41865866的博客 776

QT登录窗口转主窗口

软件登录界面与主窗口切换主要目标软件登陆界面 在网上不是很好找到登录界面转主窗口的,决定自己写一个,研究了一下main函数,发现主要问题是处理好main函数中a.exec()。 主要目标 设计登录窗口 注册账号 设置 成功登录跳转 登录失败跳转 找回密码 自动登录 软件登陆界面 ...

weixin_44888859的博客 1901

claude使用教程

提供了三种模型:claude,codex, gemini,三种模型都共用同一个apikey, 有开发需求使用claude效果较好,知识问答等场景gemini效果会更好些,本文只提供了claude的安装方式,剩下两种按需按照以下参考链接安装下即可,安装有问题参考文档:https://www.aicodemirror.com/dashboard/official-installation/macos-linux (不需要挂梯子,自己手机号注册就好)

lichao19871216的博客 3469

Windows编程基础,第一个Windows程序,注册窗口,创建窗口

Win32编程,指的是用Window提供的API(Application Programming Interface)为Window编写应用程序。Windows编程,大家也通常称为win32编程,或win32 SDK编程,其含义是针对32位Windows操作系统。 在这一章节中,我们会带大家认识Windows应用程序,编写第一个Windows程序,带大家学习注册窗口和创建窗口。

WdIg-2023的博客 1726

Windows下快速搭建MSYS2开发环境(含GCC与MinGW配置)

本文详细介绍了在Windows系统下快速搭建MSYS2开发环境的完整流程。通过使用pacman包管理器,可以便捷地安装GCC编译器与MinGW-w64工具链,并配置系统环境变量。文章还涵盖了从基础安装、系统更新到编译开源项目的实战指南,帮助开发者高效构建原生Windows程序,显著提升C/C++开发效率。

weixin_29213827的博客 538

注册窗口类

(1)建立窗口类WinMain()是程序的入口,它相当于一个中介人的角色,把应用程序(指小窗口)介绍给windows.首要的一步是登记应用程序的窗口类.窗口种类是定义窗口属性的模板,这些属性包括窗口式样,鼠标形状,菜单等等,窗口种类也指定处理该类中所有窗口消息的窗口函数.只有先建立窗口种类,才能根据窗口种类来创建Windows应用程序的一个或多个窗口.创建窗口时,还可以指定窗口独有的附加特

wjzhang_1983的专栏 1835

【ubuntu】如何搭建AFTR+B4环境

为何要使用ipv6 目前ipv4地址已经不够用了,而IPv6采用128位地址长度,几乎可以不受限制地提供地址。而且ipv6具有更高的安全性。 主流的ipv6方案 1.双栈方案 :所有设备同时支持IPv4/IPv6协议栈,核心理念在于其传送网同时支持IPv4和IPv6 2.DS-Lite方案 :IPv4‐in‐IPv6 隧道和 NAT 这两个基本技术,同时支持IPV4与IPV6,对于ipv4用户,可以通过ipv6隧道与ipv4业务平台实现通信;针对ipv6用户,可直接通过ipv6网络通信。 3.6RD方案 :

weixin_43863426的博客 2722

Palabos User Guide中文解读 | 第一章 | 介绍

译者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,能不能完成全本翻译再说,而且文中我也会标记我不确定的地方,以传达意思为主,翻译不当的地方还请各位读者帮忙指正。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of...

Yulan Fang's notes. 6977

C++Windows编程之注册窗口类

我们用Visual Studio创建一个win32项目上会自动生成一个注册窗口类。如下: // // 函数: MyRegisterClass() // // 目的: 注册窗口类。 // ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex

4513

Openai gym environment for multi-agent games

用于多智能体游戏的 OpenAI Gym 环境

suiusoar 1193

MFC注册窗口类

MFC带有注册("register")字样的函数不少呀!主要有下面几个: AfxDeferRegisterClass BOOL AFXAPI AfxEndDeferRegisterClass(LONG fToRegister) LPCTSTR AFXAPI AfxRegisterWndClass(UINT nClassStyle,HCURSOR hCursor, HBRUSH hbrBackgr

TMS_LI的专栏 3740

机器人中的数值优化(一)—— 数学优化、凸集合与凸函数

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例。

慕羽★的博客 2521

8位2路选择器设计

8位2路选择器设计

好好学习,天天向上 4287

Win32编程四:窗口类的注册

窗口类   窗口类包含了窗口的各种参数信息的数据结构。每个窗口都具有窗口类,基于窗口类创建窗口。每个窗口类都具有一个名称,使用前必须注册到系统。 窗口类的分类   -系统窗口类   系统已经定义好的窗口类,所有应用程序都可以直接使用   -应用程序全局窗口类   由用户自己定义,当前应用程序的所有模块都可以使用容易产生冗余   -应用程序局部窗口类   由用户自己定义,当前应用程...

子建莫敌 789

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是基于StarNet的YOLOv11轻量化改进方法研究。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 5985

win32程序 注册窗口类

win32程序里面一个很重要的概念就是 “窗口类” , 注意此处的“类” 是和C++语法里面的“类”是完全不同的东西。 主要包括消息处理函数、窗口类类型、以及其他的窗口类属性。 Registering a window class associates a window procedure, class styles, and other class attributes with a

白马啸西风 1120

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

2.1 注册窗口类

它定义了窗口的基本结构和功能,包括以下几个方面:1.窗口的基本属性:2.窗口的外观:3.窗口的交互行为:4.窗口的事件处理:系统已经定义好的窗口类,所有应用程序都可以直接使用。由用户自己定义,当前应用程序所有模块都可以使用。由用户自己定义,当前应用程序中本模块可以使用,不需要注册,直接使用窗口类即可。系统以及注册好了 例如: 按钮 - BUTTON 编辑框 - EDIT新建一个WinSys项目,修改字符编码为”多字节字符集“,子系统设置为"窗口" 然后将之前的WinBase项目的内容copy过来 这就是直

安全小白,希望我的文章对你有所帮助。 893

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

4.注册窗口类和创建窗口

1.注册窗口类函数   (1)RegisterClass/RegisterClassEx     ATOM RegisterClass(CONST WNDCLASS *lpWndClass);     ATOM RegisterClassEx(CONST WNDCLASSEX *lpwcx);     注册成功后,返回一个非0数字标识,失败返回0。   (2)窗口类的风格  ...

diandao9056的博客 507

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

总结一、VC窗口的建立

// 涉及到的函数/结构(部分),不清楚用法的,直接查msdn int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // com

jiangxt211的专栏 556

MFC注册窗口类以及FindWindow按窗口类名查询

呵呵,最近在研究SendMessage函数,其中需要用到m_hWnd,之后延伸着又尝试获得窗口的句柄,于是遇到了FindWindow函数,原型如下: HWND FindWindow (  LPCSTR lpClassName,    //输入窗口的类名,其实需要是注册过的类名才行,否则是要报错或者查找失败的。  LPCSTR lpWindowName, //输入窗口的名称,就是窗口上面蓝色

Erick08的专栏 3582
上一篇: unlocker 一个文件解锁的好工具
下一篇: HashTable(转)
OnorOffcloud
博客等级 码龄24年 4粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值