window class, OO

2023-05-16

Wndows中Window Management 的设计
是很符合OO思想。

首先每个Window的定义由WNDCLASS结构定义。在WNDCLASS中我们需要给出
Window class name, Window的class style, 以及Wndow Procedure,WNDCLASS还提供了申请
extra class bytes 和extra window byte的能力。这两个空间可以类比的理解为class static fields和
object fields。和一般的class定义一样,WNDCLASS结构定义了Window对象的状态和行为。
这样凡是同类的Window不论它的位置,大小以及窗口属性如何都可以使用同一个WNDCLASS.
而对于行为有所不同的Window我们亦可以通过Sub-classing的方式通过改变其中一些消息
的行为得到所需的效果,这个方式事实上等同于override virtual method了,当然还有super-classing的说法。
每一个WNDCLASS在使用之前必须先注册到Win32 User Module中,随后用户即可使用CreateWindow创建Window实例了,值得注意的是在CreateWindow是我们并不是获取该WNDCLASS结构的指针来说明所使用的WNDCLASS的,而是通过Window class name, 如果将这些API在C#里面重写一下就可以看到一个很熟悉的设计。
class WindowManager
{
     public static void RegisterWindowClass(WindowClass wc);
     public static IWindow CreateWindow(string windowClassName, CreateWindowParameters params);
     //...
}
没错,Factory method, 事实上我们也正是靠这个方式重用了Common Controls.
这里我将返回的HWND写成IWindow接口,因为我觉得hwnd对于一系列Window function就如同this指针对于成员方法一般。hwnd应该被认为是C函数中的this指针,而不是Window对象的私有数据成员,事实上Window对象的数据封装做的非常到位,没有暴露出一个内部数据结构。
思路断掉了,以后再写。。。

转载于:https://www.cnblogs.com/jonnyyu/archive/2005/08/23/220550.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

window class, OO 的相关文章

  • C#:为派生类继承单独的静态成员

    我的问题简述 class A Other stuff in my class protected static staticMember class B A Other stuff in my class Will have A stati
  • 如何只获取父类对象的属性

    我有两节课 class Parent object def init self id name self id id self name name self parent vars id name make a copy def print
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 通过单击内部小部件而不是标题栏来移动窗口

    在 Windows 中 当我创建 QMainWindow 时 我可以通过单击标题栏并拖动它来在屏幕上移动它 在我的应用程序中 我使用隐藏了标题栏setWindowFlags Qt CustomizeWindowHint 我正在尝试使用小部件
  • 如何? WPF 窗口 - 最大化,不调整大小/移动

    我正在尝试创建一个已最大化打开的 WPF 窗口 无需调整大小 移动 在系统菜单中 也不在边框中 它应该一直最大化 除非用户最小化它 我尝试将 WindowState Maximized 和 ResizeMode CanMinimize 放在
  • MonoMac 窗口关闭时没有错误

    我刚刚开始在 Xamarin Studio 中使用 MonoMac 并且遇到了最奇怪的问题 我有一个带有 NSButton 和 NSTextField 的窗口 至此 我已经删除了按钮上的事件处理程序 因此它不会执行任何操作 除了在单击它时突
  • 类返回语句不打印任何输出

    我正在学习课程 但遇到了问题return语句 它是语句吗 我希望如此 程序什么也没有打印出来 它只是结束而不做任何事情 class className def createName self name self name name def
  • 如何从父类函数访问子类中定义的常量?

    我从 php net 看到这个例子 但 c MY CONST 仅在 5 3
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 父页面更改后的窗口引用

    我正在使用 window open 函数打开一个命名窗口 win window open xxx html mywin 之后 我从父窗口移动到另一个页面 我想确定名为 mywin 的窗口是否仍然打开 如果我在父页面中 我会使用 win cl
  • 错误: 无法使用“localhost:10.0”作为 DISPLAY 变量的值连接到 X11 窗口服务器

    我有 2 个应用程序运行良好 除了 1 个功能的生产环境之外 此功能是从简单表格生成 Excel 在我的所有其他环境中 Excel 的生成都可以 但是当我尝试在生产环境中使用它时 我在日志中遇到了这个错误并且很顽皮错误500在我的应用程序上
  • 当控制器类扩展父控制器时,为什么我们仍然需要父构造函数?

    我是 CodeIgniter 和 OOP 的初学者 我正在读一页 CI 教程here http ellislab com codeigniter user guide tutorial news section html 我发现了一些让我产
  • 使用 Javascript 将变量传递给弹出窗口

    我需要将一些文本从当前页面传递到弹出窗口 而不需要服务器点击 该信息 此处用 90 表示 已在父表单中可用 它就像存储在隐藏变量中的一段长文本 我只需要将其显示为弹出窗口 这是我尝试过的 这在某种程度上有效 但如果我传递文本而不是数字 则不
  • 根据R中的行索引计算滚动总和

    我正在尝试根据窗口大小 k 计算分组滚动总和 但是 如果组内行索引 n 小于 k 我想使用条件 k min n k 我的问题与这个问题类似R dplyr 滚动总和 https stackoverflow com questions 3015
  • 访问实例属性和类属性之间的区别

    我有一个Python课程 class pytest i 34 def func self return hello world 当我访问时pytest i 我得到 34 我还可以通过另一种方式做到这一点 a pytest a i 这也给出了
  • java中如何重写一个方法然后调用超类方法

    我试图重写我的 java 子类中的超类中的方法 然后从超类中调用重写的方法 这是正确的方法吗 我想要重写的超类中的方法称为describe public static void describe Item describe Use the
  • 创建具有子级别的类属性

    我一直在读这个topic https excelmacromastery com vba class modules A Quick Guide to the VBA Class Module关于如何使用类模块 我的目标是提高代码性能和可读
  • C++ 中的“助手”函数

    在重构一些旧代码时 我删除了许多实际上应该是静态的公共方法 因为它们a 不操作任何成员数据或调用任何其他成员函数 b 因为它们可能在其他地方有用 这让我思考将 辅助 功能组合在一起的最佳方法 Java C 方法是使用带有私有构造函数的静态函
  • 如何在 Android 中创建始终位于顶部的全屏覆盖 Activity

    我希望能够创建一个始终位于 Android 显示前面的 Activity 它不应该接收任何输入 只需将其传递到其下面的任何应用程序即可 像平视显示器之类的东西 我能够研究我需要将底层窗口类型设置为 TYPE SYSTEM ALERT 但看起
  • 如何在 Javascript 中创建类?

    这是我到目前为止所得到的 它根本不起作用 我的玩家类中的所有变量都是空的 并且更新永远不会被调用 我的意思是编程类 而不是 CSS 类 IE 不是 movi ngdiv 颜色 ff0000

随机推荐

  • android app 历史版本,怎么找到App的所有历史版本,以及每次改版的变更点呢?

    来自知乎的一个问题 提问时间应该挺早的 xff0c 能看到的最早的回答是2011年2月份 关注者242 xff0c 被浏览42 079 7年来 xff0c 加上我最新的一个回答 xff0c 一共有19个回答 随时间流逝 xff0c 里面的一
  • 16核64g服务器性能,16核64g云服务器

    16核64g云服务器 内容精选 换一换 用户可以查看在不同云服务区已经申请成功的专属云 进入指定的专属云 xff0c 还可以查看该专属云内专属计算资源详情及云服务器等专属云内基础服务的实例信息 登录管理控制台 单击左侧上方区域下拉列表 xf
  • 集成测试:自底向上、自顶向下、Big-Bang集成测试、三明治集成测试

    集成测试 xff1a 自底向上 自顶向下 Big Bang集成测试 三明治集成测试 详解测试过程测试方案自顶向下自底向上三明治测试Big Bang集成测试 详解 集成测试也叫组装测试或者联合测试 xff0c 在单元测试完成的基础上进行模块
  • cloudtalk 无法连接到消息服务器,solr - Solr Cloud down无法与Zookeeper对话客户端会话超时 - 堆栈内存溢出...

    我有在16GB RAM内存上运行的solr云 xff0c 用于分片的2个solr节点 相同ip xff0c 嵌入式zookeeper 我在默认配置上运行solr xff0c 尽管默认配置随附 Xms5g Xmx5g xff0c 但我在Sol
  • 网站服务器备案有什么危害,域名备案对服务器有影响吗

    域名备案对服务器有影响吗 内容精选 换一换 证书在有效期内 xff0c 可多次下载并使用 xff0c 下载后即可在服务器 华为云的或非华为云的均可 上进行部署 待安装证书的服务器上需要运行的域名 xff0c 必须与证书的域名一一对应 xff
  • lodash 核心源码学习(基于4.17.11版本)

    源码地址 https raw githubusercontent com lodash lodash 4 17 11 npm core js 13行 b var undefined b es5之前 undefined 可以被 window
  • 常用邮箱的 IMAP/POP3/SMTP 设置

    通过网上查找的资料和自己的总结完成了下面的文章 xff0c 看完之后相信大家对这三种协议会有更深入的理解 如有错误的地方望指正 POP3 POP3是Post Office Protocol 3的简称 xff0c 即邮局协议的第3个版本 它规
  • 顾维灏谈百度地图数据采集:POI自动处理率达90%

    顾维灏谈百度地图数据采集 xff1a POI自动处理率达90 发布时间 xff1a 2015 12 21 22 37 来源 xff1a cnsoftnews com 作者 xff1a 百度地图还创新研发高精地图 xff0c 并成为国内唯一掌
  • 为何float有效位数为7位?

    为何float有效位数为7位 xff1f 首先我们应该明确一点 xff1a C语言中 xff0c xff05 f表示保留7位有效数字7位有效数字 xff1a 是指 整数部分 和小数部分一共7位 单精度数的尾数用23位存储 xff0c 加上默
  • Python绘制正余弦函数图像

    公众号 xff1a Python编程时光 今天打算通过绘制正弦和余弦函数 xff0c 从默认的设置开始 xff0c 一步一步地调整改进 xff0c 让它变得好看 xff0c 变成我们初高中学习过的图象那样 通过这个过程来学习如何进行对图表的
  • JS函数的工厂模式、构造函数模式、原型模式的区别

    创建对象 JS有六种数据数据类型 xff0c 其中五种属于基本数据类型 xff1a Null Boolean undefined String Number 而其它值都是对象 数组是对象 xff0c 函数是对象 xff0c 正则表达式是对象
  • mac 邮件自动归类

    mac 让邮箱自动为你的邮件归类 不知道你的工作当中 xff0c 是否每天会收到一大推的邮件 xff0c 其中对自己有价值的邮件也许也就是这一大推邮件当中的几封邮件 单这几封邮件往往又会被淹没 巧用邮件分类功能 之前使用邮件没有好好的区研究
  • 层次图和HIPO图---描绘软件结构的图形工具

    层次图和HIPO 图 层次图用来描述软件的层次结构 虽然层次图的形式和描绘数据结构的层次方框图相同 xff0c 但是表现的内容却完全不同 层次图中的一个矩形框代表一个模块 xff0c 方框间的连线表示调用关系而不像层次方框图那样表示组成关系
  • continue函数和break函数的区别

    continue函数 谈及contiune函数 xff0c 很多初学者都把它和break弄混淆 xff0c 今天我自己也特意学习了一下 xff0c 在这里分享给大家 当它们用在循环语句的循环体时 xff0c break用于立即退出本层循环
  • linux下进入root用户登录

    1 打开终端 xff0c 输入sudo passwd u root 输入当前用户的登录密码 xff0c 提示如下标红区域信息 解决方案 xff1a 1 xff09 直接输入命令 xff1a su xff0c 输入当前用户登录密码 2 xff
  • 利用Python爬取电影网站

    usr bin env python coding 61 utf 8 39 39 39 本爬虫是用来爬取6V电影网站上的电影资源的一个小脚本程序 xff0c 爬取到的电影链接会通过网页的形式显示出来 39 39 39 import requ
  • python 提取字符串中的数字组成新的字符串

    方法一 有一个字符串text 61 34 aAsmr3idd4bgs7Dlsf9eAF 34 请将text字符串中的数字取出 xff0c 并输出成一个新的字符串 import re text 61 34 aAsmr3idd4bgs7Dlsf
  • Trie树

    转载自http epic 32o cn article asp id 61 47 xff0c 但是这个地址已经不存在了 所以从维基百科拿来个图进行解释 xff1a http zh wikipedia org wiki Trie 今天在vij
  • 【C#学习笔记】读SQL Server2008

    using System using System Data SqlClient namespace ConsoleApplication class Program static void Main string args SqlConn
  • window class, OO

    Wndows中Window Management 的设计 是很符合OO思想 首先每个Window的定义由WNDCLASS结构定义 在WNDCLASS中我们需要给出 Window class name Window的class style 以