小编bov*_*der的帖子

为什么EnumerateMetafile仅适用于启用Aero

我的代码枚举了一个元文件:

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)

我的开发机器是VirtualBoxUbuntu主机上的Windows 7 客户机.

用来工作正常的代码.但是,当我关闭Aero时,代码停止工作:ParseCallback永远不会被调用.

只有当我重新打开Aero时,ParseCallback才会再次执行.

为什么以及如何使此代码在非启用Aero的计算机上运行?

c# gdi+ system.drawing.imaging

22
推荐指数
1
解决办法
568
查看次数

如何使 WinHttpCrackUrl 在 64 位下工作

我有 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)

windows excel 64-bit vba winhttp

5
推荐指数
1
解决办法
867
查看次数

RSpec 控制器规范在更新时失败,参数无效

脚手架生成的 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)

rspec ruby-on-rails ruby-on-rails-4

5
推荐指数
1
解决办法
1500
查看次数