面向对象的c++ win32?

2023-11-24

我想创建自己的类来处理创建窗口和窗口过程,但我注意到窗口过程必须是静态的!我现在想知道是否可以使窗口过程面向对象?我读过一些关于面向对象窗口的教程,但它们总是使过程静态 -.- 那有什么用? :/

任何有关如何解决此问题的链接或信息将不胜感激,

thanks


您可以通过将静态 WndProc 将所有内容委托给成员来解决这个问题:

// Forward declarations
class MyWindowClass;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

std::map<HWND, MyWindowClass *> windowMap;

// Your class
class MyWindowClass  {
private:
  HWND m_handle;

  // The member WndProc
  LRESULT MyWndProc(UINT message, WPARAM wParam, LPARAM lParam) { /* ... */ }

public:
  MyWindowClass()
  {
    /* TODO: Create the window here and assign its handle to m_handle */
    /* Pass &WndProc as the pointer to the Window procedure */

    // Register the window
    windowMap[m_handle] = this;
  }
};

// The delegating WndProc
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  std::map<HWND, MyWindowClass *>::iterator it = windowMap.find(hWnd);
  if (it != windowMap.end())
    return it->second->MyWndProc(message, wParam, lParam);
  return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面向对象的c++ win32? 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 按成员序列化

    我已经实现了template
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • 为什么链接中的目标属性有下划线?

    我已经编码很多年了 直到此刻我才意识到这个属性target从元素 a 要求它们的所有值都以下划线开头 我们很多人都知道 但我不知道为什么 我的意思是 从我的头脑中 我不记得除此之外的另一个需要以下划线开头的值 有谁知道这个实现背后的原因是什
  • Google Play 游戏服务多人设备方向更改将用户踢出房间

    我正在开发一个只有一项活动的应用程序 它扩展了基础游戏活动 并在多个片段之间切换 很像 Google 的示例代码状态 我现在正在两台独立的设备上测试多人游戏 两个用户都可以成功登录 互相发送消息等 但是 一旦一个用户旋转设备 他们就会被踢出
  • 如何以字节块的形式播放视频?

    我想在 android 中播放我保存在资源文件夹中的视频 我已将其更改为字节数组 并且使用以下代码可以成功播放 private String getDataSource throws IOException InputStream stre
  • 在 C# 中同步包装异步方法

    我有一个第三方库 其中包含一个异步执行函数的类 该类继承自Form 该函数基本上根据数据库中存储的数据执行计算 一旦完成 它就会在调用表单中调用 Complete 事件 我想做的是从非 Windows 表单应用程序同步调用该函数 问题是 无
  • C++ 数组删除运算符语法

    我做完之后说 Foo array new Foo N 我一直都是这样删除的 delete array 然而 有时我会这样看 delete N array 由于它似乎可以编译并工作 至少在 msvc2005 中 我想知道 正确的做法是什么 那
  • Spring + Hibernate:具有相同标识符值的不同对象已与会话关联

    在我使用 Spring 和 Hibernate 的应用程序中 我解析 CSV 文件并通过调用填充数据库handleRow 每次从 CSV 文件读取一条记录时 我的域模型 家族 有很多 子家族 亚科 有很多 轨迹 轨迹 属于 物种 Famil
  • Android:我可以一个接一个地显示多个对话框吗?有没有类似Dialog Z-Level 的东西?

    是否可以一个接一个地显示多个对话框 有没有类似Dialog Z Level 的东西 我正在使用 DialogFragment 用户在其中选择元素 当他确认他的选择时 它会保存到数据库并发送到服务器上 如果保存操作失败 我想通知用户 另一个对
  • 如何一起使用 Angular 1.3.4 和 Angular 2 [重复]

    这个问题在这里已经有答案了 我已经有一个基于 Angular 1 3 4 构建的应用程序 我想将其更改为 Angular 2 但模块明智 假设我的页面上有 5 个模块 我想将一个模块迁移到 Angular 2 其他模块应该像以前的 1 3
  • 将下拉菜单选择保存在 cookie 中?

    我已经看过这个帖子好几次了 但我根本无法让代码工作 我需要帮助让这个下拉菜单将其设置保存到 cookie 这样当用户再次访问该网站时 他们之前的选择就会被保留 落下
  • Snakemake:使用run指令时如何实现log指令?

    Snakemake 允许为每个规则创建日志log参数指定日志文件的名称 通过管道传输结果相对简单shell输出到此日志 但我无法找出记录输出的方法run输出 即 python 脚本 一种解决方法是将 python 代码保存在脚本中 然后从
  • 链接服务器性能和选项

    在工作中 我们有两台服务器 其中一台正在运行很多人使用的应用程序 该应用程序具有 SQL Server 2000 后端 我很长时间以来都可以自由地查询它 但无法向其中添加任何内容 例如存储过程或额外的表 这导致我们将第二个 SQL Serv
  • 为什么 std::reference_wrapper 在调用成员函数时不隐式转换为引用? [复制]

    这个问题在这里已经有答案了 我不明白为什么不能使用std reference wrapper像这样 include
  • 开发 iPhone 应用程序以在 iPad 上运行 - 自动设置 2x

    有没有一种方法可以以编程方式将 iPad 设置为在 iPhone 应用程序启动时以 2 倍的速度运行 但仍保持 iPhone 应用程序本机 我知道我可以为每个硬件平台创建 NIB 文件 但为了方便起见 我只是希望应用程序启动就像用户在 iP
  • Scheme 可以将列表扩展为参数吗?

    考虑到我有一个程序 plus x y 女巫正好需要两个参数 现在我还有一个列表 其中包含两个对象 例如 list 1 2 那么 如果有any将列表扩展为两个参数的神奇方法 我们有一个点概念版本 但是那个isn t我想要的是 我只是想扩展该列
  • 在 Eclipse 中打开 xml 文件时出现错误 [重复]

    这个问题在这里已经有答案了 在 Eclipse 中 当我打开具有相同数据的两个不同名称的 xml 文件 意味着 A 和 B 是 2 个 xml 文件 它们具有相同的数据 时 我在控制台中出现错误 我在控制台中收到以下错误 为什么会出现这个错
  • 如何将 buildapp 与 Quicklisp 结合使用

    我想使用 buildapp 来制作作为给出的curl lisp可执行文件example buildapp output lisp curl asdf path src clbuild systems load system drakma e
  • 自动发布回到 mvc 下拉列表中

    要求 我的视图页面上有一个下拉列表 显示供应商列表 从下拉列表中选择供应商后 页面将显示所选供应商的详细信息 默认情况下 我需要选择第一个供应商并显示其详细信息 我可以使用以下代码来完成此任务 问题 不知道如何实现自动回发 true在 MV
  • 我可以在一个 Web 应用程序中拥有两个 web.xml 文件吗?

    我可以拥有一个包含多个 web xml 文件的应用程序吗 并且两个应用程序可以有父子关系从而有两个web xml吗 对于低于 servlet 3 0 的版本 则不能 如果您使用的是 3 0 则有一个可能性 在 JSR 315 Java Se
  • Azure Powershell:获取服务的公共虚拟IP

    是否可以使用 powershell 获取 azure 服务的公共虚拟 IP VIP 一种方法是使用 Get AzureEndpoint 命令 Get AzureVM Name thevmname ServiceName theservice
  • 面向对象的c++ win32?

    我想创建自己的类来处理创建窗口和窗口过程 但我注意到窗口过程必须是静态的 我现在想知道是否可以使窗口过程面向对象 我读过一些关于面向对象窗口的教程 但它们总是使过程静态 那有什么用 任何有关如何解决此问题的链接或信息将不胜感激 thanks