首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【专业技术】Win32创建异形窗口

大家都见过在windows下各种气泡窗口、输入法窗口已经其他一些窗口,这些窗口看起来不像传统的windows窗那样,上面是标题栏,下面是窗口的客户区。...其实在windows下实现特殊的窗口并不困难,有两种办法可以实现: 通过创建路径和区域、合并区域的办法。...创建区域的API有很多,比如CreateRectRgn,CreateRoundRectRgn,CreateEllipticRgn以及其他创建区域函数等,具体参考MSDN。...然后使用SetWindowRgn函数设置窗口区域,将区域转化为窗口。这种方式适合通过程序控制实现一些形状定制窗口。 通过位图画刷设置窗口背景,然后过滤掉指定的颜色,剩下的部分就是窗口。...hBitmap= (HBITMAP)LoadImage(NULL, TEXT("cartoon_win.bmp"),IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); // 该图用于创建窗口背景画刷

3.2K110

win32创建窗口函数(windows程序内部运行机制)

利用win32创建窗口函数,主要操作步骤为: 1、设计一个窗口类 2、注册窗口类 3、创建窗口 4、显示及窗口更新 5、消息循环 6、窗口过程函数 (1)设计一个窗口类...,即窗口类中的lpszClassName lpWindowName指定窗口的名字 dwStyle指定创建窗口样式,主要是窗口显示些什么东西 x,y,nWidth,nHeight...左上角坐标,长、宽 hWndParant指定被创建窗口的父窗口句柄 hMenu指定窗口菜单的句柄 hInstance指定窗口所属的应用程序实例的句柄 lpParam...创建、显示、更新窗口之后,需要有一个消息循环,不断的从消息队列中读取消息。...这一章主要通过一个win32编程的例子,讲述了windows程序设计,是一种交互式的、事件驱动的程序设计模式,基于消息的。

39120
您找到你想要的搜索结果了吗?
是的
没有找到

win32程序之子窗口编程

一丶简介.什么是子窗口   在前边我们已经讲解了窗口的本质.以及如何注册窗口类跟创建窗口. 还讲了消息循环....子窗口其实就是绘制在主窗口的一个窗口.  这些窗口包含了  BUTTON  (按钮控件)  EDIT(编辑框控件) ..... 二丶创建窗口 1.创建EDIT子窗口   创建窗口很简单....父窗口句柄修改为我们的主窗口句柄.  并且为子窗口设置创建类型.  以及子窗口标识符即可....具体代码如下: 当主窗口创建消息来得时候.我们创建一个EDIT编辑框. // WindoS.cpp : 定义应用程序的入口点。...这个控件ID很重要.关乎到我们处理消息. 2.创建按钮子窗口   上面创建了EDIT.那我们也可以创建按钮子窗口了.具体代码跟创建EDIT位置处一样.

1.7K20

Win32知识之窗口绘制.窗口第一讲

一丶摘要   在学习Win32的时候. 很多操作都是窗口进行操作的.那么今天就说一下窗口的本质是什么.  窗口的本质是不断绘制.是windows通过消息机制进行绘制的....而我们要认识一下窗口创建.那么需要了解几个基础的只是. 1.设备对象. 2.DC设备上下文. 3.图形对象. 1.设备对象是什么.   简而言之设备对象的意思就是你要画图形要往哪里画....二丶绘制窗口步骤   绘制窗口免不了使用API.但是使用之前.需要知道我们要操作的步骤. 1.获取窗口句柄.也就是设备对象. 2.获取窗口中的DC上下文.可以理解为获取指定窗口的绘图的那块内存. 3.创建图形对象...GetDc() HDC GetDC( HWND hWnd 传入设备对象.也就是窗口句柄 ); 3.创建图形对象.  PS: 创建图形对象.图形对象有很多....HDC hdc = ::GetDC(hwnd); //3.创建图形对象.

1.5K40

【编程基础】Win32窗口下调试输出

Win32的console下,我们可以用基本的printf,来输出调试信息,这个很方便。...不过要是在非console的窗口模式应用程序里面,就不能使用printf来输出,很多朋友遇到过这个问题,非常不方面。...其实在窗口模式下,windows提供了一个函数OutputDebugString,用于向开发环境的debug窗口输出信息,结合C语言的可变参数,就能实现跟printf一样的功能了,下面就是一个简单的采用..., format, arg); va_end(arg); OutputDebugString(szData); } 另外,在编写windows应用程序时,不管是console还是窗口程序...在console下,用这个函数格式化后直接用printf输出,在窗口程序下结合上面的OutputDebugString函数,也能方面的知道错误描述了,完整的函数如下: #include <windows.h

1.7K80

win32程序之窗口程序,以及消息机制

而这个线程对象如果创建窗口.那么内核中就有这个窗口对象. 如果我们有鼠标点击的消息.键盘消息等等.操作系统都会遍历窗口对象. 而窗口对象也会保存着创建这个窗口对象对应的线程对象....这样的话操作系统则会封装消息发送给我们窗口对象. 二丶Wind窗口类结构.创建窗口程序. 1.进行窗口编程需要注意的问题   在Windows中进行窗口编程.入口点已经改成WinMain了....3.窗口编程的步骤 1.创建窗口类. windows提供的窗口样式.我们需要给定. 2.注册窗口类.创建窗口我们需要注册到windows系统中. 3.创建窗口.如果注册窗口成功.那么我们需要创建出来这个窗口....并且显示跟更新. 4.消息处理 4.窗口编程需要的主要结构   窗口创建Windows已经为我们提供了..../ExW if (bRet == FALSE) { return 0; } //3.创建窗口 并且显示跟更新窗口 HWND hWnd = CreateWindowW

93030

【OpenGL】窗口创建

, 3); // 指定创建的内容必须兼容的客户端 API 版本 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); // 指定创建的内容必须兼容的客户端...//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // 指定 OpenGL 内容是否应向前兼容 return 0; } 创建窗口对象...接下来,我们需要创建一个窗口对象,glfwCreateWindow 函数前两个参数是窗口的宽度和高度,第三个参数是窗口的名称,后面两个参数的作用可以在GLFW:窗口指南找到 glfwMakeContextCurrent...  用glViewport设置 OpenGL 渲染窗口的大小,前两个参数设置窗口左下角的位置,第三个和第四个参数以像素为单位设置渲染窗口的宽度和高度,如果视口尺寸设置为小于 GLFW 尺寸的值;然后,所有..., framebuffer_size_callback); 渲染循环 创建一个 while 循环,称之为渲染循环,它一直运行,直到我们告诉 GLFW 停止, while(!

21010

WIN32 API —— 最简单的Windows窗口封装类

1 开发语言抉择 1.1 关于开发Win32 程序的语言选择 C还是C++ 在决定抛弃MFC,而使用纯Win32 API 开发Window桌面程序之后,还存在一个语言的选择,这就是是否使用C++...lParam); private: // 已注册过的类集合 static std::vector registeredClassArray; public: // 创建窗口...(2)C++对象与窗口对象的关系。C++对象创建以后,调用Create()是唯一可以和窗口对象绑定到一起的途径。在旧窗口销毁之前,C++对象不能再创建窗口,调用Create()多次也没用。...CreateWindow() { HWND hwnd = malloc(..); 初始化窗口对象; WndProc(hwnd, WM_CRATE, ..); // 此时已经创建窗口...这里涉及到对C++对象内存布局,窗口创建、销毁、消息处理过程的深入理解。写一个小小类就如此不易,写一个健壮的类库真是难上加难,想想MFC也真的挺不容易的。

1.5K10

opencv窗口创建显示销毁

创建和显示窗口 namedWindow()创建命名窗口; imshow()显示窗口; destroyAllwindws()摧毁窗口; resizeWindow()改变窗口大小; waitKey...()等待用户输入;  导入cv2库 import cv2 #导入cv2库 创建一个窗口名字为window cv2.namedWindow('window',cv2.WINDOW_NORMAL)#创建一个窗口名字为...window 更改窗口的大小 cv2.resizeWindow('window',800,600)#更改窗口的大小 展示窗口的名字为window的窗口 cv2.imshow('window',0)#展示名字为...: print('正在销毁窗口') cv2.destroyAllWindows() 说明:我们设置一个键盘上的q键,当窗口显示后,我们按下键盘上的q键则可以销毁显示的窗口。...() 完整的学习代码 import cv2 #导入cv2库 cv2.namedWindow('window',cv2.WINDOW_NORMAL)#创建一个窗口名字为window cv2.resizeWindow

28320

Win32】初识Win32编程

---- 窗口创建过程 定义WinMain函数 定义窗口的处理函数(自定义,消息处理) 注册窗口类(向操作系统中写入一些数据) 创建窗口(内存中创建窗口) 显示窗口(绘制窗口的图像) 消息循环(获取/翻译...比较局部窗口创建窗口时传入的HINSTANCE变量。如果有发现相等。创建和注册类在同一模块,创建窗口返回。如果不相等,继续执行3。 在应用程序全局窗口类,如果找到,执行4, 没找到执行5。...使用找到的窗口类信息,创建窗口返回。 在系统窗口类中查找,如果找到创建窗口返回,否则创建窗口失败。...0; } 子窗口创建过程 创建时要设置父窗口句柄 创建风格要增加WS_CHILD | WS_VISBLE (根据注册的窗口类,来创建多个窗口。)...GDI-Windows graphics device interface(Win32提供的绘图API) 颜色 计算机使用红、绿、蓝(RGB) 每个点颜色是3个字节24位保存0~2^24 - 1

1.9K110

【OpenGL】七、桌面窗口搭建 ( 导入头文件 | 桌面程序入口函数 | 注册窗口 | 创建窗口 | 显示窗口 )

文章目录 一、导入头文件 二、桌面程序入口函数 三、注册窗口 四、创建窗口 五、显示窗口 六、完整代码示例 七、相关资源 基于 【OpenGL】一、Visual Studio 2019 创建 Windows..., OpenGL 系列开发基于该桌面程序进行 ; 本篇博客简单介绍下该桌面初始化的操作 , 注册桌面窗口 , 创建桌面窗口 , 显示桌面窗口 ; 一、导入头文件 ---- Windows 窗口程序需要导入...wcex); } 四、创建窗口 ---- 调用 CreateWindowW 方法 , 创建 Windows 窗口 , 创建完成之后 , 验证下创建方法返回值 hWnd , 如果创建失败 , 直接退出 ;...hWnd) { return FALSE; } 五、显示窗口 ---- 创建完成后 , 显示窗口 ; // 显示窗口 ShowWindow(hWnd, nCmdShow...在此函数中,我们在全局变量中保存实例句柄并 // 创建和显示主程序窗口

1.1K00

C# 从零开始写 SharpDx 应用 控制台创建 Sharpdx 窗口 下载创建窗口

本文告诉大家如何在控制台使用 SharpDx 创建窗口,这是一个底层的博客,我会用很多博客告诉大家如何从控制台创建一个高性能渲染程序 如果想看更多关于底层渲染的博客,请点击渲染系列 首先创建一个控制台程序...首先创建一个简单的类,这个类主要使用 RenderForm 来创建窗口 class KikuSimairme { private RenderForm _renderForm...,因为创建窗口需要开启循环,使用 RenderLoop.Run 就可以 在不使用这个窗口时需要记得去掉 class KikuSimairme : IDisposable { /...以前很少在一个控制台创建窗口,现在使用 sharpDx 可以很简单在控制台创建窗口 这是KikuSimairme类的全部代码 class KikuSimairme : IDisposable...Dispose(); } } 虽然已经创建窗口,但是现在还没有内容,在下一篇C# 从零开始写 SharpDx 应用 初始化dx修改颜色,我将会告诉大家如何在这个窗口修改颜色。

1.2K20

WPF 获取全局所有窗口创建显示事件 监控窗口打开

本文将告诉大家如何在 WPF 里面进行全局监控任意的窗口创建显示打开,可以获取到每个 WPF 窗口的打开的时机。...,刚好窗口创建显示时,将会触发一些路径事件。...于是就可以进行监控窗口创建显示 监听窗口的 SizeChangedEvent 路由事件是比较靠谱的方式,这个有一点点违反开发者的想法,开发者默认想的是使用 LoadedEvent 事件。...} 窗口创建的时候,将会进入 Window_SizeChanged 事件。...通过 sender 参数即可了解是哪个窗口对象被创建,接着就可以方便进行日志或者是提示开发者不要随便创建窗口等 可以自己测试一下代码,例如在 MainWindow 里面再次创建一个空窗口 public

1.9K50

创建一个窗口和按钮

public class HomeScreen { public static void main(String[] args) { JFrame aa=new JFrame();//awt包里的,定义一个窗口...aa.setTitle("餐厅点餐系统");//设置主窗口名字 JButton an1=new JButton("菜式导航");//新建按钮 aa.setSize(500, 500);//设置像素长宽...);//防止关闭后资源内存示范,默认关闭操作 aa.setVisible(true);//窗口显示BOOL值,和JFrame成对出现,如果没有将无法建立窗口 } } ` 以上是面向过程的思路,而Java...this.setSize(350,180);//设置窗口像素大小 this.setLocation(100, 260);//设置左上角位置 an1=new JButton("菜式导航");...this.setVisible(true);//窗口显示BOOL值,和JFrame成对出现,如果没有将无法建立窗口 } } 不需要建对象了,直接封装,aa变成this

73030

SDL系列讲解(十二)创建窗口流程

系列讲解(七) SDL_image教程 SDL系列讲解(八) SDL_ttf教程 SDL系列讲解(九) 异常退出分析 SDL系列讲解(十) 按键处理流程 SDL系列讲解(十一) SDL_QUIT流程 创建窗口时序图...时序图细节 看下创建窗口的流程图,我们简单说下过程。...窗口创建,会先判断是否进行了SDL_VideoInit,如果没有,需要初始化。...完成了opengl es的方法赋值之后,我们需要完成真正的窗口创建。在讲解这个之前,我们讲下android的绘制流程。...当我们在canvas画好之后,系统会根据当前窗口耳朵层叠关系,透明度,缩放等等,进行将多个窗口排序,混合之后,使用驱动操作,将最终的一屏数据,刷入显卡,然后我们便看到了效果。

1.2K60

VisualStudio 扩展开发 添加输出窗口 创建自定义的输出窗口获取 General 窗口获取 Build 窗口

小伙伴都用过 VisualStudio 都在输出窗口看到不同的子窗口,如 gitlab 的输出窗口,调试的输出窗口,本文告诉大家如何写插件在输出窗口里面添加一个窗口 在添加菜单 告诉大家如何简单在 VisualStudio...开发者可以通过 VisualStudio SDK 创建管理自己的自定义窗口。 通过 IVsOutputWindow 和 IVsOutputWindowPane 接口可以控制输出窗口。...在开发 VisualStudio 插件的时候,因为文档不多,同时开发的时候会发现有一些文档没有更新,所以难度会比较大 创建自定义的输出窗口 在 Execute 方法,也就是 NowkuPurqicowFourocafem...除了通过 SVsOutputWindow 创建输出窗口,还可以使用 OutputWindow 创建输出窗口 添加 CreatePane 重载 void CreatePane(string title)...但是通过 OutputWindow 的方法获取不是很好,因为有多语言,可能在日本使用的调试窗口写的是デバッグ可能写的插件只能在自己的语言使用,所以还是建议使用 GUID 的方法创建 获取 General

1.9K20

dotnet 读 WPF 源代码笔记 使用 Win32 方法修改窗口的坐标和大小对窗口依赖属性的影响

咱可以使用 Win32 的 SetWindowPos 修改窗口的坐标和大小,此时 WPF 的窗口的 Left 和 Top 和 Width 和 Height 依赖属性也会受到影响,本文将会告诉大家在啥时候会同步更改...以及加上几个按钮,用来使用 Win32 方法修改窗口坐标或大小 <Window x:Class="FurnaheaneHejichaijair.MainWindow" xmlns="http...,通过 <em>Win32</em> 方法修改<em>窗口</em>大小,也可以看到依赖属性也进行变化。...{ // 如果<em>窗口</em>是最大化,不更新依赖属性,但是<em>窗口</em>最大化可以通过 <em>Win32</em> 方法修改<em>窗口</em>坐标和大小,此时的依赖属性就没有和实际<em>窗口</em>的坐标相同 if (WindowState...可以看到此时的 _actualLeft 和 _actualTop 和 <em>Win32</em> 相同,此时就不会再次调用更新了,此时的 Left 和 Top 依赖属性就没有和 <em>Win32</em> 同步了 上面是说到的是修改<em>窗口</em>的坐标

69920
领券