MFC Propertygrid控件没有绘制边框?

时间:2013-08-06 08:16:48

标签: c++ mfc border

我在表单上创建了一个CMFCPropertyGridCtrl,但是当在visual studio的“属性”窗口中将“边框”选项设置为“True”时,它没有任何效果,属性网格总是看起来像在下面的屏幕截图中一样(控件周围没有边框)。

我还尝试在我的代码中启用边框,但没有运气。

我有什么选择?这是某种错误吗?我想也许可以在控件周围手动绘制一个矩形来模拟边框作为最后的手段。

无边框控制: http://img818.imageshack.us/img818/6337/8j1l.png

由于

2 个答案:

答案 0 :(得分:0)

所以我自己找到了解决方案

在对话框的重写OnPaint方法中添加以下代码:

    CMFCPropertyGridCtrl* pPropGrid = (CMFCPropertyGridCtrl*) GetDlgItem(IDC_PROPSYSCHECK); 
    CPaintDC dc(this);
    CPen BluePen(PS_SOLID, 1, RGB(137, 140, 149));
    CPen *OldPen = dc.SelectObject(&BluePen);
    CRect rect;
    pPropGrid->GetWindowRect(&rect);
    ScreenToClient(&rect);
    dc.Rectangle(&rect);
    dc.SelectObject(BluePen);

    CDialogEx::OnPaint();

它在控件周围绘制自定义边框。

答案 1 :(得分:0)

Visaul Studio包含错误:资源编辑器不会在对话框资源中为控件描述添加边框样式。所以,手动添加这种风格并且很幸运:)

BOOL CMyDlg::OnInitDialog() {
    CDialogEx::OnInitDialog();

    // add WS_BORDER style manualy...
    GetDlgItem(IDC_PROPSYSCHECK)->ModifyStyle(0, WS_BORDER);
    return TRUE;
}
相关问题