Windows API 编程
FF的CC
人生看淡,不服就干
展开
-
窗口子类别化
将GWL_WNDPROC标识符作为参数来呼叫GetWindowLong,就可以得到这个窗口消息处理程序的地址。另外,可以呼叫SetWindowLong给该滚动条设定一个新的窗口消息处理程序,这个技术叫做「窗口子类别化」,非常有用。它能让你给现存的窗口消息处理程序设定「挂勾」,以便在自己的程序中处理一些消息,同时将其它所有消息传递给旧的窗口消息处理程序。DUI就使用到了这个技术...原创 2020-12-08 23:31:16 · 147 阅读 · 0 评论 -
Windows鼠标消息
Windows鼠标消息一共有21种用户显示区的消息: 键 按下 释放 按下(双键) 左 WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK 中 WM_MBUTTONDOWN WM_MBUTTONUP WM_MBUTTOND原创 2020-12-03 22:23:57 · 610 阅读 · 0 评论 -
字符消息
字符消息的产生在消息循环中while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; }当右WM_KEYDOWN或WM_SYSKEYDOWN消息产生并处理时,消息循环中,TranslateMessage会将按键消息翻译转化称字符消息WM_CHAR。如果消息为WM_KEYDOWN或者W原创 2020-11-26 23:26:19 · 214 阅读 · 1 评论 -
按键消息的处理
按键消息分为4种,WM_KEYDOWN,WM_SYSKEYDOWN,WM_KEYUP,WM_SYSKEYUPwparam代表虚拟键;lparam代表一些其他混合的信息。消息处理时,如下:case WM_KEYDOWN: switch (wParam) { case VK_HOME: SendMessage (hwnd, WM_VSCROLL, SB_TOP, 0) ; b原创 2020-11-26 23:10:07 · 481 阅读 · 0 评论 -
Windows按键消息
应用程序从Windows接收的关于键盘事件的消息可以分为按键消息和字符消息两类按键消息当按下一个键时,Windows把WM_KEYDOWN或者WM_SYSKEYDOWN消息放入有输入焦点的窗口的消息队列;当释放一个键时,Windows把WM_KEYUP或者WM_SYSKEYUP消息放入消息队列中。系统按键与非系统按键WM_SYSKEYDOWN和WM_SYSKEYUP中的「SYS」代表「系统」,它表示该按键对Windows比对Windows应用程序更加重要。WM_SYSKEYDOWN和原创 2020-11-26 00:08:37 · 1134 阅读 · 0 评论 -
键盘输入焦点与键盘消息的产生流动
键盘输入以消息的形式传递给程序的窗口消息处理程序关于输入焦点所有的程序共享一个键盘,一个程序的所有窗口共享一个键盘当键盘按下时,只有一个窗口消息处理函数接收到键盘消息,键盘消息包含指定的窗口句柄接收到键盘消息的窗口就是当前获取输入焦点的窗口。输入焦点的概念与活动窗口的概念很相近。有输入焦点的窗口是活动窗口或活动窗口的衍生窗口如果活动窗口有子窗口,那么有输入焦点的窗口既可以是活动窗口也可以是其子窗口。最常见的子窗口有类似以下控件:出现在对话框中的下压按钮、单选钮、复选框、滚动条、编辑.原创 2020-11-24 22:58:10 · 378 阅读 · 1 评论 -
Windows获取设备上下文的方式
如果在处理一个消息时取得了设备内容句柄HDC,应该在退出窗口函数之前释放它(或者删除它)。1. 在处理WM_PAINT消息时,使用BeginPaint和EndPaint呼叫hdc = BeginPaint (hwnd, &ps) ; //其它行程序 EndPaint (hwnd, &ps) ;变量ps是型态为PAINTSTRUCT的结构,该结构的hdc字段是BeginPaint传回的设备内容句柄。PAINTSTRUCT结构又包含一个名为rcPain原创 2020-11-23 23:49:08 · 487 阅读 · 0 评论 -
WindowsGDI概览
Windows NT中的图形主要由GDI32.DLL动态链接库输出的函数来处理。GDI32.DLL动态链接库呼叫显示器和打印机的驱动程序中的例程,来实现绘图的。GDI的主要目的之一是支持与设备无关的图形。使用GDI的统一接口进行绘图,GDI内部调用不同显示设备的驱动程序进行绘制。图形输出设备分为两大类:位映像设备和向量设备。当前显示器打印机都是位映像设备,GDI函数分为几类:取得(或者建立)和释放(或者清除)设备内容的函数 GetDC和RealseDC GetDC和Rea..原创 2020-11-22 21:29:50 · 251 阅读 · 0 评论 -
WIndows队列化消息与非队列化消息
Windows给窗口发送消息,这意味着Windows主动呼叫窗口消息处理程序。Windows程序也有一个消息循环,它呼叫啊GetMessage从消息队列中取出消息,并且呼叫DisPatchMessage将消息发送给消息处理程序。那么应用程序是依次等待消息,然后将消息送到某个地方去,或者直接从给程序外面接收消息吗?消息能够被分为队列化消息与非队列化消息。队列化消息是由Windows放入到程序消息队列中的。在应用程序的消息循环中,重新传回并分配给窗口消息处理程序。也就是说,队列化的消息被发送到原创 2020-11-08 15:12:18 · 129 阅读 · 0 评论 -
对话框
对话框的一般形式时包含多种子窗口控件的弹出式窗口。这些控件的大小与位置在程序的资源叙述文件的对话框模板中指定。当程序呼叫一句模板建立的对话框时,Windows负责建立弹出式对话框窗口和子窗口控件,并提供处理对话框消息(包括所有的键盘和鼠标输入)的窗口消息处理程序。有时候称呼完成这些功能的Windows内部程序代码为“对话框管理器”。windows的内部对话框窗口消息处理函数所处理的许多消息...原创 2020-01-07 20:48:01 · 218 阅读 · 0 评论 -
Static&edit&list
静态类别在CreateWindow函数中指定窗口类别为「static」,就可以建立静态文字的子窗口控件。这些子窗口非常「文静」。它既不接收鼠标或键盘输入,也不向父窗口发送WM_COMMAND消息。当在静态子窗口上移动或者按下鼠标时,这个子窗口将拦截WM_NCHITTEST消息并将HTTRANSPARENT的值传回给Windows,这将使Windows向其下层窗口,通常是它的父窗口,发送相同...原创 2020-01-07 07:40:55 · 272 阅读 · 0 评论 -
Button&CheckBox&RadioBox
按钮按钮是一个矩形,包括了CreateWindow呼叫中窗口文字参数所指定的文字。该矩形占用了CreateWindow中的全部高度与宽度,而文字在举行的中心。按钮控件主要用来触发一个立即响应的动作,而不保留任何形式的开关指示。按钮控件有两种窗口样式,分别为BS_PUSHBUTTON和BS_DEFPUSHBUTTON。DEF代表默认。当鼠标光标在按钮中时,按下鼠标,将使按钮用三维阴影重画...原创 2020-01-07 07:22:25 · 263 阅读 · 0 评论 -
Windows按钮
struct{ int iStyle ; TCHAR * szText ;}button[] ={ BS_PUSHBUTTON, TEXT ("PUSHBUTTON"), BS_DEFPUSHBUTTON, TEXT ("DEFPUSHBUTTON"), BS_CHECKBOX, TEXT ("CHECK...原创 2020-01-06 22:33:04 · 130 阅读 · 0 评论 -
子窗口控件
windows子窗口可以向父窗口发送消息。通过调用GetParent函数,子窗口可以获取父窗口的窗口句柄。hwndParent = GetParent (hwnd) ;其中hwnd是子窗口的窗口句柄。子窗口可以向父窗口发送消息,通过SendMessageSendMessage (hwndParent, message, wParam, lParam) ;参数message是整型...原创 2020-01-03 08:03:28 · 212 阅读 · 0 评论 -
windows定时器
Microsoft Windows定时器是一种输入设备,它周期性地在每经过一个指定的时间间隔后就通知应用程序一次。您的程序将时间间隔告诉Windows,例如「每10秒钟通知我一声」,然后Windows给您的程序发送周期性发生的WM_TIMER消息以表示时间到了。初看之下,Windows定时器似乎不如键盘和鼠标设备重要,而且对许多应用程序来说确实如此。但是,定时器比您可能认为的要重要得多,它不只...原创 2019-12-24 22:28:30 · 1921 阅读 · 1 评论 -
鼠标消息
可以用GetSystemMetrics函数来确认鼠标是否存在:fMouse = GetSystemMetrics (SM_MOUSEPRESENT) ;如果已经安装了鼠标,fMouse将传回TRUE(非0);如果没有安装,则传回0。要确定所安装鼠标其上按键的个数,可使用cButtons = GetSystemMetrics (SM_CMOUSEBUTTONS) ;如果没...原创 2019-12-24 21:21:28 · 695 阅读 · 0 评论 -
字符消息
以下的程序代码:while(GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; }这是WinMain中典型的消息循环。GetMessage函数用队列中的下一个消息填入msg结构的字段。D...原创 2019-12-23 22:47:32 · 252 阅读 · 0 评论 -
使用键盘消息
如果程序能够获得每个按键的信息,这当然很理想,但是大多数Windows程序忽略了几乎所有的按键,而只处理部分的按键消息。WM_SYSKEYDOWN和WM_SYSKEYUP消息是由Windows系统函数使用的,您不必为此费心,就算你要处理WM_KEYDOWN消息,通常也可以忽略WM_KEYUP消息。Windows程序通常为不产生字符的按键使用WM_KEYDOWN消息。虽然您可能认为借助按键消息和...原创 2019-12-22 17:44:33 · 241 阅读 · 0 评论 -
windows 键盘消息
键盘输入以消息的形式传递给程序的窗口消息处理程序。Windows用八种不同的消息来传递不同的键盘事件。这好像太多了,但是(就像我们所看到的一样)程序可以忽略其中至少一半的消息而不会有任何问题。并且,在大多数情况下,这些消息中包含的键盘信息会多于程序所需要的。处理键盘的部分工作就是识别出哪些消息是重要的,哪些是不重要的。谁获得了焦点与所有的个人计算机硬件一样,键盘必须由在Windows下...原创 2019-12-22 17:28:39 · 696 阅读 · 0 评论 -
GDI 映射方式
GDI 映像方式到目前为止,所有的程序都是相对于显示区域的左上角,以图素为单位绘图的。这是内定情况,但不是唯一选择。事实上,「映像方式」是一种几乎影响任何显示区域绘图的设备内容属性。另外有四种设备内容属性-窗口原点、视端口原点、窗口范围和视端口范围-与映像方式密切相关。大多数GDI绘图函数需要坐标值或大小。例如,下面是TextOut函数:TextOut (hdc, x, y, psT...原创 2019-12-22 13:37:34 · 211 阅读 · 0 评论 -
画刷填充区域
Windows中七个用来画带边缘的填入图形的函数 函数 图形 Rectangle 直角矩形 Ellipse 椭圆 RoundRect 圆角矩形 Chord 椭圆周上的弧,两端以弦连接 ...原创 2019-12-20 22:28:56 · 515 阅读 · 0 评论 -
使用画笔 Stock Pens
Windows使用设备内容中目前选中的「画笔」来画线。画笔决定线的色彩、宽度和画笔样式,画笔样式可以是实线、点划线或者虚线,内定设备内容中画笔为BLACK_PEN。不管映像方式是什么,这种画笔都画出一个图素宽的黑色实线来。BLACK_PEN是Windows提供的三种现有画笔之一,其它两种是WHITE_PEN和NULL_PEN,NULL_PEN什么都不画。Windows程序以句柄来使用画笔。 W...原创 2019-12-20 21:59:37 · 230 阅读 · 0 评论 -
Windows绘制点与线
我们谈论过Windows图形设备接口将图形输出设备的设备驱动程序与计算机连在一起的方式。在理论上,只要提供SetPixel和GetPixel函数,就可以使用图形设备驱动程序绘制一切东西了。其余的一切都可以使用GDI模块中实作的更高阶的例程来处理。例如,画线时,只需GDI呼叫SetPixel数次,并适当地调整x和y坐标。在实际情况中,也的确可以仅使用SetPixel和GetPixel函数进行您需...原创 2019-12-20 07:56:51 · 871 阅读 · 0 评论 -
深入了解GDI
图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形。正如您所认为的那样,GDI是Windows非常重要的部分。不只您为Windows编写的应用系统在显示视觉信息时使用GDI,就连Windows本身也使用GDI来显示使用者接口对象,诸如菜单、滚动条、图标和鼠标光标。GDI原理Windows 98和Micro...原创 2019-12-19 22:46:06 · 596 阅读 · 0 评论 -
滚动条
滚动条是图形使用者接口中最好的功能之一,它很容易使用,而且提供了很好的视觉回馈效果。您可以使用滚动条显示任何东西--无论是文字、图形、表格、数据库记录、图像或是网页,只要它所需的空间超出了窗口的显示区域所能提供的空间,就可以使用滚动条。滚动条既有垂直方向的(供上下移动),也有水平方向的(供左右移动)。使用者可以使用鼠标在滚动条两端的箭头上或者在箭头之间的区域中点一下,这时,「卷动方块」在卷动列...原创 2019-12-19 21:46:11 · 294 阅读 · 0 评论 -
Windows GDI
TextOut (hdc, x, y, psText, iLength) ;TextOut向窗口的显示区域写入字符串。psText参数是指向字符串的指针,iLength是字符串的长度。x和y参数定义了字符串在显示区域的开始位置。hdc参数是「设备内容句柄」,它是GDI的重要部分。实际上,每个GDI函数都需要将这个句柄作为函数的第一个参数。设备内容读者可能还记得,句柄只不过是一个数值...原创 2019-12-19 21:33:36 · 349 阅读 · 0 评论 -
绘制与更新
绘制和更新在文字模式环境下,程序可以在显示器的任意部分输出,程序输出到屏幕上的内容会停留在原处,不会神秘地消失。因此,程序可以丢掉重新生成屏幕显示时所需的信息。在Windows中,只能在窗口的显示区域绘制文字和图形,而且不能确保在显示区域内显示的内容会一直保留到程序下一次有意地改写它时还保留在那里。例如,使用者可能会在屏幕上移动另一个程序的窗口,这样就可能覆盖您的应用程序窗口的一部分。Wi...原创 2019-12-19 07:34:36 · 122 阅读 · 0 评论 -
C语言版的Windows窗口程序-深入了解windows消息机制
头文件与函数声明#include <windows.h>LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;主函数WinMainint WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR ...原创 2019-12-18 22:37:17 · 369 阅读 · 0 评论 -
Windows窗口与消息
进行Windows程序设计,实际上是在进行一种对象导向的程序设计(OOP)。这一点在Windows中使用得最多的对象上表现最为明显。这种对象正是Windows之所以命名为「Windows」的原因,它具有人格化的特征,甚至可能会在您的梦中出现,这就是那个叫做「窗口」的东西。桌面上最明显的窗口就是应用程序窗口。这些窗口含有显示程序名称的标题列、菜单甚至可能还有工具列和滚动条。另一类窗口是对话框,它...原创 2019-12-18 21:56:08 · 196 阅读 · 0 评论 -
第一个Windows程序
命令行程序下面这是通过VS2009自动生成的代码,是C++版本使用iostream头文件中,输出流对象cout.cout是C++预生成的处理输出的ostream类实例对象#include <iostream>int main(){ std::cout << "Hello World!\n"; return 0;}C语言版本调...原创 2019-12-18 07:47:24 · 128 阅读 · 0 评论 -
Windows简介
Windows 98和Windows NT都是支持32位优先权式多任务(preemptive multitasking)及多线程的图形操作系统。Windows拥有图形使用者接口(GUI ),这种使用者界面也称作「可视化接口」或「图形窗口环境」。有关GUI的概念可追溯至70年代中期,在Alto和Star等机器上以及SmallTalk等环境中由Xerox PARC所作的研究工作。该项研究的成果后来被A...原创 2019-12-18 07:29:24 · 984 阅读 · 0 评论