小编Mic*_*ble的帖子

在Chrome中打开blob objectURL

我想window.open(fileObjectURL)在javascript中使用chrome浏览器(Chrome 56.0.2924.87,Ubuntu 14.04)在新标签页中打开PDF .我正在从base64编码数据创建blob并创建一个这样的objectURL:

const fileObjectURL = URL.createObjectURL(fileBlob); 
Run Code Online (Sandbox Code Playgroud)

它在最新的Firefox浏览器中运行良好.但在Chrome中我可以看到新标签已打开,但随后立即关闭.所以我在控制台等方面没有任何错误.现在Chrome中唯一可行的方法是将base64数据直接提供给该window.open(fileBase64Data)函数.但我不喜欢在网址中设置的完整数据.

也许这是Chrome阻止blob打开的安全问题?

javascript base64 google-chrome blob

30
推荐指数
2
解决办法
2万
查看次数

c ++/cli接口头文件

我有一个C++项目(visual studio 2010),它包含本机代码和c ++/cli代码.我无法使用/ clr编译整个项目,所以我只针对各自的c ++/cli文件进行编译.我的问题是头文件不能用/ clr编译,但我想让一些c ++/cli函数在整个项目中可重用,因此在头文件中定义方法原型,将其包含在我需要它的每个文件中.有解决方案吗?我试图在头文件中定义一些混合代码方法原型,但必须打开/ clr才能进行编译.

这是我的例子:

Test.h

#include <Windows.h>
#include <vector>
#include <string>

using std::vector;
using std::string;

#include <msclr/marshal.h>

#pragma managed

using namespace msclr::interop;
using namespace System;
using namespace System::IO;
using namespace System::Runtime::InteropServices;

public ref class Test
{
public:
    int Foo();
};
Run Code Online (Sandbox Code Playgroud)

TEST.CPP

#include "Test.h"

int Test::Foo()
{
    return 4;
}
Run Code Online (Sandbox Code Playgroud)

Intellisense抱怨Test.h中的错误,例如c ++/cli必须启用才能使用#using.但我认为这可以忽略不计,无论如何都会编译.

编译中止链接器错误(sry,我有德语VS版本)

Fehler  6   error LNK1255: Fehler bei Verknüpfung aufgrund von Metadatenfehlern.    
Fehler  4   error LNK2022: Fehler bei Metadatenoperation (8013118D) : Duplizierte Typen (_PROPSHEETPAGEA) …
Run Code Online (Sandbox Code Playgroud)

clr c++-cli header

7
推荐指数
1
解决办法
5723
查看次数

OpenGL和wglUseFontBitmaps只绘制等间距字母

我使用wglUseFontBitmaps在OpenGL中绘制的字体为每个字母占用相等的空格(宽度),因此为"." 例如,需要与"M"一样多的空间.我已经改变了字体创建中的音高参数,VARIABLE_PITCH但它没有改变任何东西.它实际上可以用wglUseFontBitmaps完成,还是它的性质是每个生成的位图占用相等的空间?

另外我用GetTextExtentPoint32W()查询光栅位图文本的宽度/高度.返回的宽度还可以,但高度总是太大.我在黑色文本后面绘制一个明亮的矩形,使其在3d场景中始终可读.为什么被查询的高度如此之大?保留给更高级字符的空间是否像这样的"É"?

我的设置:

HFONT   font;                                       // Windows Font ID
font = CreateFont(  -12,                            // Height Of Font
        0,                              // Width Of Font
        0,                              // Angle Of Escapement
        0,                              // Orientation Angle
        FW_EXTRALIGHT,                      // Font Weight
        FALSE,                          // Italic
        FALSE,                          // Underline
        FALSE,                          // Strikeout
        ANSI_CHARSET,                   // Character Set Identifier
        OUT_TT_PRECIS,                  // Output Precision
        CLIP_DEFAULT_PRECIS,            // Clipping Precision
        ANTIALIASED_QUALITY,            // Output Quality
        FF_DONTCARE | VARIABLE_PITCH,       // Family And Pitch
        (LPCWSTR)L"Arial");             // Font Name

    SelectObject(this->hDeviceContext, font);

     //init display lists …
Run Code Online (Sandbox Code Playgroud)

opengl winapi fonts

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

带有 IEnumString 的 IAutoComplete 自定义源

我正在尝试为组合框(win32、c++)或编辑控件实现自动建议。但我不知道如何正确使用接口 IAutoComplete。我需要一个自定义的字符串列表,应该从中获取自动建议的匹配项。但是如何用 IEnumString 来实现呢?我找到了这个链接,但它没有透露一切:http : //msdn.microsoft.com/en-us/library/windows/desktop/hh127437%28v=vs.85%29.aspx

有没有人实施过这个?提前谢谢迈克尔

c++ winapi autocomplete

4
推荐指数
1
解决办法
2035
查看次数

C++ - 在模板类之外但在头文件中定义成员函数

我用一个成员函数定义了一个简单的类模板。它是在类外定义的,具有额外的(显式)特化,也在类外定义。全部在一个头文件中。如果您在多个翻译单元中包含此标头,则会由于 One-Definition-Rule 出现链接器错误。

// Header with a template

template <class T>
class TestClass
{
public:
    TestClass() {};
    ~TestClass() {};
    bool MemberFunction();
};

template <class T>
bool TestClass<T>::MemberFunction()
{
    return true;
}

template <>
bool TestClass<double>::MemberFunction()
{
    return true;
};
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好。但是如果我把成员函数的定义放在类体中,链接器错误就会消失,这些函数可以在不同的翻译单元中使用。

// Header with a template

template <class T>
class TestClass
{
public:
    TestClass() {};
    ~TestClass() {};
    bool MemberFunction()
    {
        return true;
    }
};

template <>
bool TestClass<double>::MemberFunction()
{
    return true;
};
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么它会这样工作?我使用 MSVC 2012。ODR 在模板上有一些例外,我最初认为这是原因。但是类内部/外部的“Base”函数的定义在这里有所不同。

c++ templates one-definition-rule

4
推荐指数
1
解决办法
4641
查看次数

std :: string到LPOLESTR

我有一个像这样的字符串数组:

using std::string;
string myArray[] = { string("abc"), string("foo"), string("muh") };
Run Code Online (Sandbox Code Playgroud)

现在我想使用这个功能:

HRESULT Init(T* begin, T* end, IUnknown* pUnk, CComEnumFlags flags = AtlFlagNoCopy );
Run Code Online (Sandbox Code Playgroud)

T在我的情况下是LPOLESTR.所以我需要将std :: string数组分别转换为LPOLESTR我需要一个LPOLESTR*来开始和结束这个数组.怎么做的?

Thx提前

c++ string com ole

2
推荐指数
1
解决办法
3320
查看次数

ReactJS-在子事件处理程序中处理父事件

我有一个我想捕获mousemove事件的反应容器。这很简单。此外,我有一个由容器渲染的react子组件,该组件实际上是mousemove事件处理程序的逻辑所在。因此,我需要将mousemove事件从容器父级传递/委托给子级,并获取所调用子级的mousemove处理函数。如何正确完成?

我需要在容器而不是子组件中捕获鼠标事件,因为容器是DOM中较大的HTML元素,并且我需要在整个区域中捕获事件。

mousemove-handler-logic必须位于子组件中,因为它封装了容器不应该知道的某些功能。

容器的渲染方法:

render() {
    return (
        <div data-component="MyContainer"
             onMouseMove={(event) => this.handleMousemove(event)}>

            <MySubComponent {// ... give some props here}>
        </div>
    );
}
Run Code Online (Sandbox Code Playgroud)

我尝试了一种方法,其中MyContainer设置MySubComponent的回调函数以检索其DOM节点并向addEventListener注册处理程序,但是这种方法不能始终如一地工作,因为DOM节点有时会不确定:

export default class MyContainer extends Component {
    constructor(props) {
        super(props);
        this.state = {};

        this.getContainerRef = this.getContainerRef.bind(this);
    }

    getContainerRef() {
        return this.refs['containerWrap'];
    }

    render() {
        return (
            <div data-component="MyContainer"
                 ref="containerWrap"
                 onMouseMove={(event) => this.handleMousemove(event)}>

                <MySubComponent getContainerRef={this.getContainerRef} />
            </div>
        );
    }
}

export default class MySubComponent extends Component {
    constructor(props) {
        // ... init something

        this.handleMousemove = this.handleMousemove.bind(this);
    } …
Run Code Online (Sandbox Code Playgroud)

javascript javascript-events reactjs

2
推荐指数
1
解决办法
3502
查看次数

DDD存储库:使用DAO进行分离?

关于存储库,它们在stackoverflow和整个Web上的使用和布局存在争议性的讨论.我对如何有效地实现存储库后面的数据访问抽象(例如数据库)感到困惑.

我没有使用ORM工具/框架,因为我想亲眼看到细节.目前我正在使用DAO对象访问(mysql)数据库并提供Business Objects(域对象).由数据库表中的外键给出的关联被解析并加载到相应对象的DAO中(当前没有延迟加载).由于我不想直接在业务逻辑中使用我的数据库DAO,因此我认为存储库是一个很好的进一步抽象.当我在Repository中实现像GetEmployeesByShopAndPosition()这样的复杂查询时,我遇到了困难:我看到了实现这个的两种可能性:

  1. 暴力破解:使用员工DAO并将所有员工作为业务对象(包括关联的商店/职位)从数据库加载到存储库的集合中.迭代收集并返回在给定的商店和位置工作的员工.
  2. 高效:实现连接相关表的数据库查询,并仅返回EmployeeDAO中where where子句所需的Employees.

第一种方法使用了存储库实际应具有的集合性质,但似乎效率非常低.第二种方法生成一个膨胀的DAO,但效率更高.

我的问题:

  1. 这里更喜欢什么或者在实践中如何完成?
  2. 我错了,存储库不应该与DAO一起使用,数据库相关的代码可以直接进入存储库吗?
  3. 当存储库处理聚合时,它是否应该实际组装相关的外键来构建(完整)Business Objects而不是我当前使用的DAO?

我知道这个主题不是黑/白,因为所涉及的设计模式也可以以不同的方式实现,但我想有一些指导方针不应该被打破或混淆以分离关注点和持久性无知(PI).

dao domain-driven-design repository-pattern

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

DrawToBitmap(DIB)中未显示OpenGL Win32纹理

我有一个实时OpenGL应用程序渲染一些纹理对象.我已经构建了一个函数来通过PFD_DRAW_TO_BITMAP将它渲染到DIB并将其复制到图像来制作渲染场景的内部屏幕截图.除了一种纹理外,它的效果非常好.这些是具有24bpp的JPG(因此每个R,G,B为8位).我可以加载它们并实时正确渲染,但不能渲染到DIB.对于其他纹理,效果很好.在虚拟机上测试我的应用程序时,我有相同的行为(WinXP,没有硬件加速!).这些特定的纹理甚至没有在实时渲染中显示.如果没有硬件加速,我猜WinXP使用自己的OpenGL软件实现,并回归到OpenGL 1.1.那么有没有3D硬件加速不能绘制的纹理?还是有一个常见的陷阱?

opengl winapi dib

0
推荐指数
1
解决办法
304
查看次数