【问题标题】:HWND abc = 0x100; This does not work, and I understand why. How to do it then?HWND abc = 0x100;这不起作用,我明白为什么。那怎么办呢?
【发布时间】:2009-06-09 17:02:02
【问题描述】:

我有一个 HWND 变量,我想指向一个硬编码值,仅用于测试目的。我猜 HWND 是 (int*) 的 typedef,所以这会导致某种间接。正确的代码应该是什么样的?

【问题讨论】:

  • 不工作是指不编译或执行失败?

标签: c++ pointers


【解决方案1】:
HWND abc = (HWND)(0x100);

无论如何,这是个坏主意,但你已经知道了。

【讨论】:

  • reintrepret_cast(0x100): 我们不是低级的 C 程序员 :-)
  • “卑微”,pshaw!我们更喜欢“简洁明了”。
【解决方案2】:

你可以这样做:HWND hWnd = reintrepret_cast<HWND>(0x100);。使用显式强制转换,以便在代码中轻松找到。

【讨论】:

    【解决方案3】:

    您不能对 HWND 值进行硬编码。充其量,它不会引用现有的窗口。在最坏的情况下,它会引用系统中的某个随机窗口。

    编辑:需要明确的是,您使用硬编码值运行的任何测试都将毫无意义。您的程序将该 HWND 用于 something。一旦它将硬编码的 HWND 传递给 API 函数,该函数要么会失败(最好的情况),要么会在随机过程中导致随机的、不可预测的影响(最坏的情况)。

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      相关资源
      最近更新 更多