首页
学习
活动
专区
圈层
工具
发布

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

1 开发语言抉择 1.1 关于开发Win32 程序的语言选择 C还是C++ 在决定抛弃MFC,而使用纯Win32 API 开发Window桌面程序之后,还存在一个语言的选择,这就是是否使用C++...使用不同的开发模式,就相当于使用不同的编程语言。就本人而言,对C++的模板编程也根本没有任何经验。...2 Windows窗口对象的封装类 对Windows桌面程序而言,Window和Message的概念是核心。首先需要封装的就是窗口,例如MFC就是用CWnd类封装了窗口对象。...能用一个Win32API直接实现的功能,绝不进行二次包装,如移动窗口可以使用 MoveWindow()一个函数实现,类中就不要出现同样功能的MoveWindow()函数。...当然这种技术只能用到有虚函数的类中,对于没有虚函数的类的对象,不存在虚表。

3K20

Python|GUI编程中组件的布局

图1 默认参数和自己设的参数对比 2.grid Grid把控件位置作为一个二维表结构来维护,即按照行列的方式排列控件:控件位置由其所在的行号和列号决定....行号相同而列号不同的几个控件会被彼此上下排列; 列号相同而行号不同的几个控件会被彼此左右排列. 使用Grid布局的过程就是为各个控件指定行号和列号的过程....不需要为每个格子指定大小, Grid 布局会自动设置一个合适的大小。grid的参数row和column为一个整数,这会自动对齐你的组件。 直接通过代码来看效果吧。...图2 grid布局 3.place Place 布局管理可以显式的指定控件的绝对位置或相对于其他控件的位置. 要使用 Place 布局,调用相应控件的 place() 方法就可以了。...下面是一个使用 Place 布局的例子: 为 Label 控件设置随机的背景色, 然后计算各个 Label 的背景色的亮度(灰度值), 如果其亮度小于 120, 则将其前景色(文字颜色, fg属性)设置为白色

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

    Windows API 中的坑

    GetModuleFileName 风险: 在 DLL 中调用时,若传入的 instance 参数为 NULL,那获取的将是加载 DLL 的进程的 EXE 的路径,若需要获取 DLL 的路径,传入的 instance...建议: 调用 Windows API 时对参数的 in、out、inout 及要求的取值弄清楚。...PS:这个严格来讲不算是坑,是在 Windows API 中存在的一种现象,但是如果不小心也可能出现很难解释和调试的 BUG,记在此以备忘。...ShellExecuteEx 风险: 调用 API 之后,若初始 MASK 设置不正确,SHELLEXECUTEINFO 结构体里的 hProcess 可能为空。...风险 2: 使用 UrlDownloadToFile 下载文件前它会自动先在本地缓存中查找此文件,所以可能最终得到的不是 Server 上的最新内容。

    1.2K10

    Java中的图形界面编程-GUI

    欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图形用户界面就是以图形的方式来显示你计算机的操作界面..., 我们计算机中操作的界面就是 我们Java中常说的图形用户界面, 这样的操作简单明了....在Java中GUI提供了对象在 java.awt 和 javax.swing 两个包中 在早年中, Java.awt为抽象窗口工具包, 英文为 Abstract Window ToolKit, 需要调用本地的系统方法来实现功能需求...组件里面还能放入组件,在Java中我们叫容器. window 窗体, Panel 面板 Frame小窗口,Dialog对话框,FileDialog文件对话框 GUI 布局 Flow 流式布局 上左下右...边界布局: 东南西北,中, 是Frame默认的布局管理 网格布局管理: GridLayout 卡片布局管理: CardLayout 网格包布局管理: GridBagLayout GUI 简单的小窗体

    2.8K20

    Python|GUI编程中Entry部件详解

    如果用户输入的字符串比小部件的可用显示空间长,则将滚动内容。这意味着不能看到字符串的整体。箭头键可用于移动到字符串的不可见部分。如果要输入多行文本,则必须使用文本小部件。...图1.1 最基本的Entry组件 二、用Entry制作的输入框 好的,我们已经创建了输入字段,这样程序的用户就可以输入一些数据。但是我们的程序如何访问这些数据呢?我们如何阅读条目的内容?...简而言之:get()方法就是我们要找的。我们用两个按钮“退出”和“显示”来扩展我们的小脚本。...,我会根据读者的要求来更新更多和tkinter相关的内容,有读者想看什么有趣的小程序都可以留言告诉笔者,每周六就会更新本人的原创文章。...谢谢各位读者的支持,你们的支持是我们最大的动力。 END 主 编 | 张祯悦 责 编 | 刘仕豪 ----

    2.5K40

    windows api编程入门_WindowsAPI调用DLL

    由于 Windows 对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。...字符消息被投递到调用线程的消息队列中,当下一次调用 GetMessage 函数时被取出。当我们敲击键盘上的某个字符键时,系统将产生 WM_KEYDOWN 和 WM_KEYUP 消息。...这两个消息的附加参数( wParam 和 lParam )包含的是虚拟键代码和扫描码等信息,而我们在程序中往往需要得到某个字符的 ASCII 码, TranslateMessage 这个函数就可以将...WM_KEYDOWN 和 WM_ KEYUP 消息的组合转换为一条 WM_CHAR 消息(该消息的 wParam 附加参数包含了字符的 ASCII 码),并将转换后的新消息投递到调用线程的消息队列中...注意, TranslateMessage 函数并不会修改原有的消息,它只是产生新的消息并投递到消息队列中。

    1.3K30

    Windows 编程中的字符编码

    (注:所以《 Windows 核心编程(第五版)》(下称《核心编程》)2.1节作者说到:调用 strlen 会返回“以 0 结尾的一个 ANSI 单字节字符数组”中的字符数,这个表述是不准确的,之所以这么说是因为作者所在的国家显然是...UNICODE 宏来决定 TCHAR 的类型,当然这个 UNICODE 宏还会影响 Windows API 调用函数版本的选择,后边细说。...函数 对于 Windows API 微软都会提供两个版本的例如 CreateWindowExW、CreateWindowExA,一个是宽字符版本,一个是单字符版本。...所以这中间会有一个分配内存的过程,显然会有一个效率上的问题。所以其实现在写代码,非常推荐统一使用宽字符版本。 另外除了 Windows API 之外,C 运行库,也有类似的操作。...最后 至此编程中需要的编码,大致了解清楚了。Windows 编程中,除非有特殊需要,否则一律使用宽字符是最好的选择。编码则选择 UTF-16 编码。

    1.4K40

    浅谈 Windows 编程中的 Thread

    线程对于 Windows 编程人员来说,并不陌生,但是一直以来,我对它的了解也只是基本的使用层面。对于很多细节,也并不是很了解。这作为一个 Windows 客户端开发人员,可以说是非常尴尬了。...然而在这两个方法的选择中,《Windows 核心编程》早有公断。 根据作者的说法是选择_beginthreadex替代CreateThread。而原因则要从_beginthreadex的实现上说起。..._beginthreadex在 Windows 下的实现也是调用了CreateThread,毕竟在 Windows 系统中,只认这一种创建线程的方式。但是在这之前,它还会做一些额外工作。...创建一个线程数据块( tiddata ),然后将入口和参数都保存到数据块中,最后还要把数据块保存在 TLS 中。之后还要初始化一个 SEH 帧,用来处理运行时产生的错误。...后记 关于多线程编程其实坑不算少,唯有对 Thread 多一些了解,才能写出更高质量的代码。

    74450

    windows下实现win32俄罗斯方块练手,编程的几点心得

    编程珠玑2阅读笔记: 1.使用c语言性能监视器,完成对代码的调优工作 2.关联数组:  拓扑排序算法,可以用于当存在遮挡的时候决定三维场景的绘制顺序。...3.小型算法中的测试与调试工具 脚手架程序:《人月神话》一个软件产品中应该有一半的代码都是脚手架。 类似,小型的代码库 4.自描述数据 每个程序员都知道破解神秘数据的挫折与艰辛。...TCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本 TCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名 // 此代码模块中包含的函数的前向声明...// // 注释: // // 仅当希望 // 此代码与添加到 Windows 95 中的“RegisterClassEx” // 函数之前的 Win32 系统兼容时,才需要此函数及其用法...lessonId=1738230&courseId=1367011 windows下的win32编程要学的东西还比较多,下面给出一个简单的知识点: ?

    97420

    第58节:Java中的图形界面编程-GUI

    前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图形用户界面就是以图形的方式来显示你计算机的操作界面..., 我们计算机中操作的界面就是 我们Java中常说的图形用户界面, 这样的操作简单明了....在Java中GUI提供了对象在 java.awt 和 javax.swing 两个包中 在早年中, Java.awt为抽象窗口工具包, 英文为 Abstract Window ToolKit, 需要调用本地的系统方法来实现功能需求...组件里面还能放入组件,在Java中我们叫容器....边界布局: 东南西北,中, 是Frame默认的布局管理 网格布局管理: GridLayout 卡片布局管理: CardLayout 网格包布局管理: GridBagLayout GUI 简单的小窗体

    2.4K30

    Python|GUI编程的基础讲解

    其实在python GUI编程(图形用户界面编程)里可以实现将程序窗口化,可以引入tkinter模块,自己电脑上没有的话用pip安装即可。...本篇文章小编就分享一些python GUI编程的基础,后续还会更新一些更深层次的技巧。...图1 空窗口 可以手动为窗口添加属性,最基本的几种属性如下: title()括号里面参数为代表窗口名称的字符串; resizable(x,y) 窗口可以在x和y轴上可变化的调度; geometry(...每个组件都有自己独特的参数,下次再做详细讲解。先讲一下组件大体使用的规则,每一个组件都可以用一个相应的变量来储存,想在一个窗口里面插入一串文字和一个按钮,该怎么做呢?...图3 效果图 四、写在最后 笔者也是一个在校大学生,可能写的介绍会有一些不足,欢迎大家提议,关于python GUI编程的基础先介绍到这里,下周给各位读者带来组件的详细使用方法。

    2.5K30

    Python的GUI编程(二)Butto

    cursor 类型:光标; 说明:当鼠标移动到按钮上时所显示的光标。 default 类型:常量; 说明:如果设置了,则按钮为默认按钮。注意这个语法在Tk 8.0b2中已改变。...image 类型:图象; 说明:在部件中显示的图象。如果指定,则text和bitmap选项将被忽略。 justify 类型:常量; 说明:定义多行文本如何对齐。...默认值是一个空字符串,意思是如果按钮有按键绑定的话,它可以通过所绑定的按键来获得焦点。 text 类型:字符串; 说明:显示在按钮中的文本。文本可以是多行。...underline 类型:整数; 说明:在文本标签中哪个字符加下划线。默认值为-1,意思是没有字符加下划线。 width, height 类型:距离; 说明:按钮的尺寸。...Python2中的raw_input()和input()语句在Python3中已经被合并到input()中。 程序退出方法: 1、导入os模块 import    os        os.

    2.3K10

    Windows 下的高 DPI 应用开发(UWP WPF Windows Forms Win32)

    各种不同的 Windows 桌面 UI 框架 微软主推的 Windows 桌面 UI 框架有: UWP WPF Windows Forms Win32 与 C++ DirectX 后两者实际上并不是 UI...当然你单纯凭借 Win32 和 DirectX 去开发 GUI 应用也没有人拦你,只不过如果你试图只用 Win32 和 DirectX 而不进行各种 UI 组件封装的话,最终会非常痛苦的。...on Windows - Win32 apps 也是这么写的。...1607 开始这两个非公开 API 不能使用了,因为换成了新的 API,参见 Setting the default DPI awareness for a process (Windows) - Win32...,大概是 Windows 98 开始就支持通过 GDI 相关的 API 获取当前系统的 DPI 值(当时 Windows Phone 之前的 Windows 移动端 OS 通过这种 API 支持 PPI

    1.9K50
    领券