小编Pro*_*ter的帖子

MFC中动态创建控件(集合题)

我有一些自定义控件,我应该在其中创建单选按钮或复选框。子控件的计数仅在运行时可用(它加载一些从中获取此计数的文件)。所以我需要创建可变数量的控件。我应该使用哪个集合来实现此目的?

解决方案 1:只需使用std::vector<HWND>(或CArray<HWND>) - 不适合,因为我想使用 MFC (CButton)。当然,我可以Attach()稍后在Detach()每次需要此窗口时处理窗口,但这会带来很大的开销。

解决方案 2:使用std::vector<CButton*>orCArray<CButton*>CList<CButton*>or... 在这种情况下,当不需要控制时,我会注意创建“新”和适当的“删除”。我很健忘:)

MFC 句柄映射包含指向 CButton 的指针,我不能使用 simple CArray<CButton>,因为每次当他的大小增加时,它都会移动我的对象。

...问题是:我应该使用哪个集合来包含 MFC 控件类的变量计数?

controls mfc creation dynamic

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

空指针指向大小为零的结构(空)...这是一个好习惯吗?

我有一些null结构,例如:

struct null_type
{
    null_type& someNonVirtualMethod()
    {
        return *this;
    }
};
Run Code Online (Sandbox Code Playgroud)

在某些功能中,我需要传递对此类型的引用.原因:

template <typename T1 = null_type, typename T2 = null_type, ... >
class LooksLikeATupleButItsNotATuple
{
public:
    LooksLikeATupleButItsNotATuple(T1& ref1 = defParamHere, T2& ref2 = andHere..) 
        : _ref1(ref1), _ref2(ref2), ...
    {
    }

    void someCompositeFunctionHere()
    {
        _ref1.someNonVirtualMethod();
        _ref2.someNonVirtualMethod();
        ...
    }

private:
    T1& _ref1; 
    T2& _ref2; 
    ...;
};
Run Code Online (Sandbox Code Playgroud)

使用空引用作为默认参数是一个好习惯吗?:

*static_cast<NullType*>(0)
Run Code Online (Sandbox Code Playgroud)

它适用于MSVC,但我有些疑惑......

c++ templates

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

标签 统计

c++ ×1

controls ×1

creation ×1

dynamic ×1

mfc ×1

templates ×1