WNDCLASS和WNDCLASSEX】的更多相关文章

typedef struct { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON hIconSm; } WNDCLASSEX, *PWNDCLA…
一.窗口类结构体简介 窗口类结构体包含了窗口的各种参数信息.比如:窗口的图标.菜单栏.背景颜色.窗口的消息处理等等. 窗口类结构体有两个:WNDCLASS(早期版本) 和 WNDCLASSEX(新版本).至于为什么有 WNDCLASSEX 还要保留老版本的 WNDCLASS?主要是为了兼容以前使用老版本开发的 Win32 程序才保留的. 二.窗口类结构体的成员变量 这里暂时只介绍新版本的 WNDCLASSEX,也更推荐使用新版本的. typedef struct tagWNDCLASSEXW {…
1. 子类化 理论:子类化是这样一种技术,它允许一个应用程序截获发往另一个窗口的消息.一个应用程序通过截获属于另一个窗口的消息,从而实现增加.监视或者修改那个窗口的缺省行为.子类化是用来改变或者扩展一个已存在的窗口的行为.而不用重新开发的有效途径.想要获得那些预定义控件窗口类(按钮控件.编辑控件.列表控件.下拉列表控件.静态控件和滚动条控件)的功能而又要修改它们的某些行为的一个便利的方法就是对它们进行子类化.例如,对于一个在对话框中的多行编辑框来说,当用户按下Enter键时,对话框会关闭.通过对…
在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWindowLong,CallWindowProc,FindWindowEx 超类化:GetClassInfoEx,RegisterClassEx,UnRegisterClass 以上函数在代码中的使用见<C++ 中超类化和子类化> VC中基于SDK编程的窗口子类化 VC中基于SDK编程的窗口子类化的…
超类化和子类化没有具体的代码,其实是一种编程技巧,在MFC和WTL中可以有不同的实现方法. 窗口子类化: 原理就是改变一个已创建窗口类的窗口过程函数.通过截获已创建窗口的消息,从而实现监视或修改已创建窗口类的行为属性.可以用来改变或者扩展一个已存在的窗口的行为,而不用重新开发.比如要获得那些预定义控件窗口类(按钮控件.编辑控件.列表控件.下 拉列表控件.静态控件和滚动条控件)的功能而又要修改它们的某些行为. 子类化的优点主要体现在以下两个方面:首先,它不需要创建新的窗口类,不需要了解一个窗口的窗…
windows窗口编程(通常意义上的win32)有几个比较核心的概念:入口函数WinMain.窗口类Window Class.窗口过程.消息处理机制.通用控件.本文主要介绍窗口类的相关概念,包括: 窗口类的类型: 窗口类的注册及使用: 窗口类的构成. 窗口类是基于进程的,每个应用程序在创建窗口之前必须注册窗口类(或者使用操作系统定义的窗口类),使用完成之后需要销毁(反注册). 介绍窗口类的主要目的在于明确windows窗口编程的相关概念,掌握windows内部对于GUI处理的机制.如果你在用mf…
//-------------------------------------------[头文件及引用]----------------------------------------------------// #include <Windows.h> #include <time.h> #include <stdlib.h> #include <vector> #include <map> #include <string> #…
上次,我们一起写了一个Windows窗口程序,这个窗口程序虽然非常简单,但是,代码仍然很多,相信,一定会有很多初学者看见这些代码而感到头疼.不用怕,现在,我们就一起来分析一下这些代码,相信通过我们共同的努力,一定可以克服这些难题. 首先,我们要做的第一件事情就是包含windows.h头文件,这个不再解释了,因为,我们前面已经解释过. 之后,我们定义了一个WinMain函数和一个窗口处理函数MainWndProc. 相信,很多人读到窗口处理函数,就一定会发晕,不知道它是一个什么东东,如果大家想要明…
Windows在表单.控制.对话框基本上形成.Windows类是Windows形式的类型,可处理叙述性说明. 在Windows提前有很多定义Windows类别,但它可以很容易地创建自己的Windows类别.对于每个应用程序,至少你需要创建一个Windows类别.同Windows类为模版,生成窗体,处理消息. 有两种数据结构可用于保存Windows类消息:WNDCLASS和WNDCLASSEX.WNDCLASS.是一种较早的数据结构.已不再使用.如今使用新的扩展版本号WNDCLASSEX. WND…
Windows运行机理这系列文章都是来至于<零基础学Qt4编程>——吴迪,个人觉得写得很好,所以进行了搬运和个人加工 Windows 窗口在创建之前,其属性必须设定好,所谓属性包括类的名字.图标.光标及窗口过程处理函数等属性.为了设定这些属性,Windows 要求注册窗口类,一经注册,就可以创建更多的同类窗口,无需再次注册.窗口类仅仅定义了窗口的特征,所有创建窗口的对象都用窗口类来创建窗口.程序必须在产生窗口前先利用API 函数RegisterClass 设定属性,这一个过程就是注册窗口类.窗…
窗口类 WNDCLASS 总结 总结为下面的几个问题: . 什么是窗口类 . 窗口类的三种类型 . 窗口类各字段含义 . 窗口类的注册和注销 . 如何使用窗口类,子类化.超类化是什么 下面分别描述: . 什么是窗口类? 窗口类定义了一系列属性,系统使用这些属性作为模板来创建出一个或多个 window (窗口). 每个窗口类都关联了一个窗口过程函数(window procedure), 由窗口类创建出的所有窗口(window), 都共享同一个窗口过程函数. 在进程中创建窗口之前必须先注册窗口类(R…
一.创建一个应用程序窗口 代码如下: // 头文件 #include <windows.h> // 全局变量 WCHAR g_lpszClassName[] = L"CLASSNAME"; WCHAR g_lpszWindowName[] = L"哈喽,新的征程"; // 函数声明 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // 应用程序主函数 INT APIENTRY WinMain(H…
第三章 ATL的窗口类 CWindowImpl.CWindow.CWinTraits,ATL窗口类的奥秘尽在此三者之中.在本章里,李马将为你详细解说它们的使用方法.另外,本章的内容也可以算是本书的核心部分--如果你要进行ATL的GUI程序设计的话,就必须将ATL的窗口类设计理念了然于心. 窗口的组成 把ATL的窗口类撇开不谈先.我在上一章中提到:窗口类并非任何一种OOP语言中的类--它所包括的并不是通称的属性和方法(在C++中称作成员变量和成员函数),而是属性和响应.现在是解释这句话的时候了.…
窗口类WNDCLASSEX名词解析 typedef struct tagWNDCLASSEX{ UINT cbsize; UINT style; WNDPROC lpfnWNDProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON…
Windows 的窗口总是基于窗口类来创建的,窗口类同时确定了处理窗口消息的窗口过程(回调函数). 在创建应用程序窗口之前,必须调用 RegisterClass 函数来注册窗口类.该函数只需要一个参数,即指向 WNDCLASS 窗口类的指针.因为 WNDCLASS 类包含了窗口所拥有的基本属性. 结构原型: typedef struct tagWNDCLASSW { UINT        style; WNDPROC     lpfnWndProc; int         cbClsExtr…
//初始化 //初始化包括窗口类的定义.注册.创建窗口实例和显示窗口四部分 { HWND hwnd; MSG Msg; WNDCLASS wndclass; char lpszClassName[]="窗口";//窗口类名 char lpszTitle[]="徐新坡"; //窗口标题名 //窗口类定义 //窗口类定义了窗口的形式与功能 窗口类定义通过给窗口类数据结构WNDCLASS赋值完成 //该数据结构中包含窗口类的各种属性 wndclass.style =; /…
所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之文件处理函数 API之打印函数 API之文本和字体函数 API之菜单函数 API之位图.图标和光栅运算函数 API之绘图函数 API之设备场景函数 API之硬件与系统函数 API之进程和线程函数 API之控件与消息函数 1. API之网络函数 WNetAddConnection 创建同一个网络资源的…
前面我们所举的例子中都是单文档界面框架,也就是说这个窗口里面的客户区就是一个文档界面,可以编写程序在里面输入或者绘制文本和图形输出,但是不能有出现多个文档的情况.比如下面的UltraEdit就是一个典型的多文档界面,他可以同时编辑多个文档,每个文档还可以最大化,最小化等等,我们今天就来看看多文档的基本框架是怎么实现的. 多文档界面的框架创建需要几下几步. 主框架窗口创建 主框架窗的创建跟普通的窗口没有什么区别,就是自己注册一个类并用该类创建一个重叠窗口,这个可以用CreateWindow/Cre…
第3章窗口与消息 3.1 Windows_编程模型 (1)窗口程序的运行过程   ①设计窗口   ②注册窗口类(RegisterClassEx).在注册之前,要先填写RegisterClassEx的参数WNDCLASSEX结构.   ③建立窗口(CreateWindowEx).   ④显示窗口(ShowWindows).   ⑤刷新窗口客户区(UpdateWindow).   ⑥进入无限的消息获取和处理的循环.首先获取消息(GetMessage),如果有消息到达,则将消息分派到回调函数处理(Di…
先上代码: systemclass.h #pragma once #include"graphicsclass.h" const bool FULLSCREEN = true; class systemclass { public: systemclass(); ~systemclass(); bool Initialize(); void Run(); void Shutdown(); private: graphicsclass *m_graphics; HWND m_hwnd;…
Kernel.cs using System; using System.Runtime.InteropServices; using System.Text; using HANDLE = System.IntPtr; using HWND = System.IntPtr; namespace Win32 { public struct OVERLAPPED { public int Internal; public int InternalHigh; public int offset; p…
Visual C++它大概可以分成三个主要的部分: 3. Platform SDK.这才是Visual C++和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它.大致说来,Platform SDK是以Microsoft C/C++编译器为核心(不是Visual C++,看清楚了),配合MASM,辅以其他一些工具和文档资料.上面说到Developer Studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的…
16.4.1自定义的 DIBSTRUCT结构体 字段 含义 PBYTE *ppRow ①指向位图视觉上最上面的一行像素.(不管是自下而上,还是自上而下) ②放在第一个字段,为的是后面定义宏时可方便访问到 int iSignature =“Dib ”,是这个结构体的标志 HBITMAP hBitmap 存储了由CreateDIBSection返回的位图句柄(注意,实质是DIB,但兼有DDB的特点,可直接BitBlt) BYTE *pBits 指向像素阵列的指针,其指针值在CreateDIBSect…
第15章 设备相关位图_15.3 DIB和DDB的结合 15.3.1 从DIB创建DDB (1)hBitmap =CreateDIBitmap(…)——注意这名称会误导,实际上创建的是DDB 参数 说明 hdc 设备环境句柄,可以为NULL. pInfoHdr 指向DIB信息头的指针,即BITMAPINFOHEADER fInit 0或CBM_INIT.CBM_INIT指定用后面3个参数来初始化DDB中的像素位 pBits DIB像素位的指针 pInfo DIB信息指针,即BITMAPINFO(…
15.2.1 探究DIB (1)DIB文件的结构 整个文件 紧凑DIB(整个文件除文件头) 文件头(File Header) 信息头(Information Header) 信息头(Information Header) 颜色表(Color Table) 颜色表(Color Table) 像素位(Pixel Bits) 像素位(Pixel Bits) 注意:①紧凑DIB在内存中是连续的,即整个DIB存在单个内存块中 ②DIB载入内存时,像素位与信息头可以分别存在两个内存块,即内存不连续. (2)…
15.1 DIB文件格式(一种文件格式,扩展名为BMP) 15.1.1 OS/2风格的DIB 文件格式 字段 说明 文件头 (BITMAPFILEHEADER) 1.共14个字节 2.缩写建议用bmfh WORD  bfType 文件签名,表示位图文件,以0x4D42,即字母“BM”打头 DWORD bfSize 整个文件的大小(含文件头的大小).单位:字节 WORD  bfReserved1 以下这两个字段必须为0.鼠标指针文件,格式类似于DIB但这两个字段表示了“热点”的位置. WORD  …
14.4.10 非矩形的位图图像 (1)“掩码”位图——单色位图,要显示的像素对应的掩码置1,不显示置0(2)光栅操作(点这里,见此文分析) (3)MaskBlt函数 ①MaskBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc,hbmMask, xMask, yMask, dwRop): ②前景和背景:在由hbmMask指定的掩码中,数值1表示在那个位置应使用dwRop指定的前景光栅操作码.数值0表示应使用dwR…
14.4.7 在位图上绘图 (1)在内存设备环境中绘图(与真实DC不同的是,内存DC的显示表面是个位图) (2)GetTextExtentPoint32函数:用于确定文本字符串的像素大小.(此大小就是与视频显示兼容的位图的尺寸). 参数 说明 hdc 设备环境句柄 lpString 文本字符串,如szText cbString 文本字符串中字符的个数.如lstrlen(szText) lpSize 指向一个结构体,用来存放结果 (3)当显示器的颜色深度和大小改变时,windows会自动改变内存设…
14.4.1 创建DDB (1)创建 HBITMAP= CreateBitmap(cx,cy,cPlanes,cBitsPixel,lpBits); 参数 说明 cx,cy 指定位图宽度和高度,单位为像素. cPlanes 颜色平面数目.标准的VGA显卡具有4个连续的颜色平面,每个平面取一个对应位,把它们组合起来就是一个像素.但这样被创建出来的位图被限制为标准的16位. cxBits 每个像素点颜色的位数 lpBits 指向颜色数据数组指针.每行的字节数必须是偶数个字节(不足时以0填充).如果该…
::WSAAsyncSelect(sListen, hWnd, WM_SOCKET, FD_ACCEPT|FD_CLOSE); 自定义 WM_SOCKET消息 #include "../common/initsock.h" #include <stdio.h> #define WM_SOCKET WM_USER + 101 // 自定义消息 CInitSock theSock; LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg…