- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我昨天在我的一个 Windows 应用程序中发现了一个错误,该应用程序构建在一个高级框架中,最终调用了 Windows API,如 CreateWindow
和 ShowWindow
,以显示其用户界面。
到目前为止,只有一台机器,恰好是一台客户机器,我观察到以下行为:
ShowWindow(Handle,SW_SHOW )
时,它之前通过 SetWindowPos
接收到的大小是覆盖。 阅读关于 ShowWindow(Handle,SW_SHOW)
的 MSDN Win32 API 文档,我看不到它移动窗口边界的任何引用。我可以通过让窗口显示例程在调用 Win32 ShowWindow
例程之前获得边界来解决这个令人惊讶的结果。
我的问题是,有没有人见过这样的行为?我认为它必须是以下之一:
Windows 7 Service Pack 1 中的一个不明显的错误,它不会在所有系统上重现,并且可能只针对特定视频卡驱动程序的特定版本重现。 (此受影响的系统具有双 AMD/ATI FireGL 视频卡)
由系统上运行的某些其他软件的副作用引起的一个模糊问题,可能是 Hook 窗口句柄,在某处安装蹦床代码 Hook (甚至可能在我自己的进程中,感谢某些 DLL 或其他东西)我不知道)。
我的 400 万行应用程序正在通过一些我尚未确定的地方的奇怪代码对我执行某些操作。
我正在 Win32 API 层中使用应用程序兼容性垫片。
如果任何使用过 C++、C 或 Delphi 或任何其他语言的人曾经见过这样的事情,并且可以想出 ShowWindow
会产生这种惊人且意想不到的副作用的原因,移动窗口的边界,回到某个原始位置,在我的例子中,x=175,y=175,宽度=320,高度=240,这似乎是在初始 CreateWindow
调用,我想知道它是什么。
这是一系列事件:
应用程序启动,并创建几个作为桌面父级的顶级窗口。
创建的第一个窗口是主应用程序窗口,第二个窗口是工具窗口,两者都有完整的窗口抓取栏,并且是常规的顶级 Win32 窗口,窗体可调整大小,可拖动,并以桌面为父级。
从磁盘加载第二个窗口的位置,并显示窗体。
在表单显示过程中,设置其边界,使窗口位于某个 x 和 y 顶部/左侧位置,并给出一些高度/宽度。
如果我在调用 ShowWindow 之前立即查询 Win32 窗口句柄,则它的边界在我期望的位置。
如果我在调用 ShowWindow 后立即查询 Win32 窗口句柄,则其边界已被重置。
根据 MSDN 帮助,SW_SHOW
表示激活窗口并以其当前大小和位置显示它
。
这确实是我观察到的 100 多台客户端 PC 上发生的情况。只有在单个客户拥有的 Windows 7 PC 上此行为有所不同。
最佳答案
This affected system has dual AMD/ATI FireGL video cards
我不确定 FireGL,但对于消费者视频卡,基于相同的芯片系列,视频驱动程序确实有附加组件来重新定位窗口,因为他们认为这对运算符(operator)来说更容易。
它被称为 HydraVision Package
for Catalyst Software Suite
关于c++ - 在某些特殊情况下,Win32 ShowWindow api 在 Windows 7 SP1 上的行为是否不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33414519/
我正在尝试使用 JSOM 更新 SP.Listitem,以保留另一个用户的 spUser。请参阅下面的代码片段 // Query the picker for user information. $.
虽然我环顾四周但还没有运气 我正在使用 SQL Server。这是整个场景。 我有一个旧的遗留 sp(由于很多依赖关系和其他问题我无法更改)它不返回任何值也不接受任何输出参数,它只是选择一个值作为 C
虽然我环顾四周但还没有运气 我正在使用 SQL Server。这是整个场景。 我有一个旧的遗留 sp(由于很多依赖关系和其他问题我无法更改)它不返回任何值也不接受任何输出参数,它只是选择一个值作为 C
我正在研究使用过程的MIPS代码,但无法理解堆栈(sp)和帧指针(fp)的目的。 例如,我研究的代码如下。它会在您输入的号码之前打印所有号码,例如3. 3,2,1,0,并显示它使用了多少堆栈大小。在此
我已成功创建以下 MySQL SP.. CREATE DEFINER=`root`@`%` PROCEDURE `Common_Proc_Create_NewId` ( TableName VARC
我尝试使用链接的数据库代码中的另一个 SP 执行存储过程(SP),工作顺利,没有错误,但它不会在我的表中插入数据。 这是存储过程的代码 USE [MYDB] GO SET ANSI_NULLS ON
我有一个包含许多存储过程的生产 SQL-Server 数据库(报告)。SP以不同的方式向外界公开 - 一些用户可以直接访问 SP, - 一些通过 WebService 公开 - 而其他的则通过 DCO
我是 SQL DBA 角色的新手。我有一个可能每天运行多次的存储过程 (SP1)。它在 table1 上运行昂贵的 SELECT,可能需要 15 分钟才能完成。我有另一个存储过程 (SP2),它在 t
自从更新了 sp 软件包后,我收到了以前没有收到的警告: 1: In showSRID(uprojargs, format = "PROJ", multiline = "NO") : Disca
问题 我们试图理解为什么通过调用存储过程执行相同的代码与在查询窗口中执行存储过程内容显示出截然不同的执行时间,但返回完全相同的 183 行结果集。 测试1 从 SSMS 执行以下 SP 需要 5 分钟
为什么在0(SP)处传递的值只能在4(SP)处访问?例如,我需要通过 0(SP) 而不是 4(SP) 将数字传递给 printn (因为它在例程中使用)否则它不会起作用。我错过了什么? MOVE #1
在 MySql 存储过程中,我想捕获并记录可能发生的任何错误,然后停止/终止/退出调用存储过程的进程。该进程是另一个存储过程,其上一级或可能上两级,由计划事件执行。 目前我有第一部分,但没有第二部分:
这个问题在这里已经有了答案: scipy.special import issue (1 个回答) 关闭 7 年前。 我想使用 scipy.signal.lti 和 scipy.signal.imp
在制作 LINQ to SQL 和实体的 POC 时,我遇到了一个卡在死胡同里的问题。问题是,我正在使用 LINQ to SP,一切都运行良好,我制作了很酷的编辑、添加和删除方法。然后在我的矿井中点击
我最近开始使用 TST (tst.codeplex.com) 测试存储过程,并发现它非常有用 - 但一个缺点是我们无法隔离依赖项并“模拟”其他 SP/函数调用(就像我们对 C# 所做的那样)对象依赖关
您好,我已经创建了一个每天触发 sp 的 mysql 事件,但它触发 sp 的时间间隔为一天。我创建的事件是: CREATE DEFINER=`root`@`localhost` EVENT `Job
我想知道是否可以在 Sql Server Profiler 中查看其他存储过程正在执行的存储过程,是否可以,如果可以,如何实现? 最佳答案 如果您使用 SP::Starting 事件进行分析,您可以看
我的场景 我正在开发一个数据库,该数据库将包含整个服务器上不同数据库中各种存储过程的许多详细信息。我现在试图收集的信息是“SP 输出什么?” 在搜索中我发现答案就在 OPENROWSET 中。我的初步
在 python 中,我们有包含 sp.linalg.norm、sp.cross 的库 scipy。 C++ boost 库中有没有类似的函数? 最佳答案 好像没有。 但是,OpenCV 有您需要的!
将 scipy 导入 Python 时出现错误。当我写: import scipy as sp x2 = lambda x: x**2 print sp.integrate.quad(x2, 0, 4
我是一名优秀的程序员,十分优秀!