小编jar*_*ond的帖子

如何在WPF中的Button上禁用MouseOver效果?

我试图在WPF中禁用按钮上的MouseOver效果,或者至少更改它的颜色.

我使用以下样式:

<Style x:Key="Borderless" TargetType="{x:Type Button}">
            <Setter Property="OverridesDefaultStyle" Value="True"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Button Background="{TemplateBinding Control.Background}"
                                Focusable="False">
                            <ContentPresenter
                  Margin="{TemplateBinding Control.Padding}"
                  HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
                  VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"
                  SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"
                  ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
                  RecognizesAccessKey="True"
                  Content="{TemplateBinding ContentControl.Content}" />
                            </Button>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
Run Code Online (Sandbox Code Playgroud)

在Window.Resources中,我认为会覆盖所有默认行为.但事实并非如此.

有什么建议?

wpf styles button mouseevent

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

__restrict 指针别名只有一个指针

__restrict如果函数指针参数是唯一的指针参数,那么在函数指针参数上指定 MSVC/GCC 非标准限定符有什么好处 吗?例如,

int longCalculation(int a, int* __restrict b)
Run Code Online (Sandbox Code Playgroud)

我的猜测是它应该允许更好的优化,因为它暗示b不指向a,但我见过的所有示例都有__restrict两个指针来表示它们之间没有别名。

c++ gcc visual-c++

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

我应该如何在.NET泛型集合中放置本机C++指针?

在C++/CLI中,不可能将指针放在托管.NET泛型集合中的本机C++类中,例如

class A {
public:
    int x;
};

public ref class B {
public:
    B()
    {
        A* a = GetPointerFromSomewhere();
        a->x = 5;
        list.Add(a);
    }
private:
    List<A*> listOfA; // <-- compiler error (T must be value type or handle)
}
Run Code Online (Sandbox Code Playgroud)

不被允许.我当然可以使用std::vector<A*> list;但是后来我只能list通过使用指针来创建托管类的成员,并且使用指向STL容器的指针感觉不自然.

在.NET泛型中存储本机C++指针的好方法是什么?(我对这里的资源管理并不感兴趣;指针指向的对象在其他地方管理)

c++-cli

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

几何点数据类型 - 元组vs记录?

我可以想到三种方法来将几何点定义为Haskell中的代数数据类型.我想将其定义为代数数据类型以获得更好的文档.

作为元组类型:

data Point a = Point a a
Run Code Online (Sandbox Code Playgroud)

作为一个元组:

data Point a= Point (a,a)
Run Code Online (Sandbox Code Playgroud)

作为记录:

data Point a = Point { pointx :: a, pointy :: a}
Run Code Online (Sandbox Code Playgroud)

哪个更好的设计/风格,为什么?

haskell

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

异常安全移动物体离开堆栈

我正在编写一个带有以下函数的互斥保护堆栈,用于从可能失败的顶部弹出一个值:

bool try_pop(T& value)
{
    std::lock_guard<std::mutex> lock(mutex_);
    if (ctr_.empty())
        return false;
    value = std::move(ctr_.back());
    ctr_.pop_back();
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用a std::vector作为底层容器.为了在堆栈中存储不可复制的T(例如std::unique_ptr),我习惯于std::move从向量的背面取T,否则进行复制.两个问题:a)这是正确的吗?T会被移动还是被复制?b)我担心异常安全.如果移动抛出,则不会弹出堆栈,但最高值可能处于半移动状态.这是可能的,我该如何解决?

c++ c++11

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

如何使用宏来收集变量名?

我想简化以下内容

class A {
    int a;
    int b;
    int c;
    std::vector<int*> addrs;
public:
    A() : addrs{ &a, &b, &c } {}
};
Run Code Online (Sandbox Code Playgroud)

所以我没有在两个地方写入字段列表,即声明和初始化器addrs.有没有办法使用宏来收集声明并在以后使用它们.例如,

class A {
    VAR_DECL(a);
    VAR_DECL(b);
    VAR_DECL(c);
    std::vector<int*> addrs;
public:
    A() : addrs{ VAR_ADDRESSES } {}
};
Run Code Online (Sandbox Code Playgroud)

对于上下文,这是为了实现某种属性内省系统.

c++ macros c++11

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

标签 统计

c++ ×3

c++11 ×2

button ×1

c++-cli ×1

gcc ×1

haskell ×1

macros ×1

mouseevent ×1

styles ×1

visual-c++ ×1

wpf ×1