我的代码枚举了一个元文件:
private void Parse()
{
Graphics graphics = Graphics.FromHwnd(IntPtr.Zero);
PointF pointf = new PointF();
graphics.EnumerateMetafile(_metafile, pointf, ParseCallback);
}
private bool ParseCallback(EmfPlusRecordType recordType,
int flags, int dataSize, IntPtr data, PlayRecordCallback callbackData)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我的开发机器是VirtualBox
Ubuntu主机上的Windows 7 客户机.
用来工作正常的代码.但是,当我关闭Aero时,代码停止工作:ParseCallback
永远不会被调用.
只有当我重新打开Aero时,ParseCallback
才会再次执行.
为什么以及如何使此代码在非启用Aero的计算机上运行?
我有 Visual Basic for Applications 代码,它WinHttp
可以在 32 位 Windows XP 上运行的 32 位 Office 2010 上完美地使用和运行。相同的代码无法在 64 位 Windows 8 上的 64 位 Office 2013 上正常运行,即使它编译正常。
问题是WinHttpCrackUrl()
在 Windows 8 上返回错误 87“参数不正确”。
我已经双重检查和三重检查所有指针都在代码中适当地声明为 LongPtr 。我究竟做错了什么?
这是在 32 位 Excel/Windows 上运行良好,但无法在 64 位 Excel/Windows 上运行的代码:
Private Type URL_COMPONENTS
dwStructSize As Long
lpszScheme As LongPtr
dwSchemeLength As Long
nScheme As Long
lpszHostName As LongPtr
dwHostNameLength As Long
nPort As Long
lpszUserName As LongPtr
dwUserNameLength As Long
lpszPassword As LongPtr …
Run Code Online (Sandbox Code Playgroud) 脚手架生成的 RSpec 控制器规范中的一项测试失败了,在我看来,它似乎总是设计失败,但当然它肯定会成功。
我开发了一个 Rails 4 应用程序,其 RSpec 规范由rails g scaffold
.
我的控制器规范SkillsController
要求我为我的模型填写“有效属性”散列和“无效属性”散列,我这样做了。
除了“使用无效参数的 PUT 更新重新渲染‘编辑’模板”外,所有测试均成功:
1) SkillsController PUT update with invalid params re-renders the 'edit' template
Failure/Error: expect(response).to render_template("edit")
expecting <"edit"> but rendering with <[]>
# ./spec/controllers/skills_controller_spec.rb:139:in `block (4 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
在 Rails 控制台中,我确认我的invalid_params
哈希包含无效参数 ( { hack: 'hack' }
)。
控制器调用skill_params
返回空散列的方法,因为我的invalid_params
散列仅包含无效参数。
skill.update(skill_params)
使用空skill_params
散列调用返回 true,因此该else
部分将永远不会执行,并且不会呈现“新”模板:
def update
respond_to …
Run Code Online (Sandbox Code Playgroud)