Я создал CMFCPropertyGridCtrl в своей форме, однако при установке для параметра «Граница» значения «True» в окне «Свойства» Visual Studio для этого элемента управления он не имеет эффектов, а сетка свойств всегда выглядит так, как на приведенном ниже снимке экрана (без граница нарисована вокруг контроля).
Я также попытался включить границу из моего кода, но безуспешно.
Какие у меня варианты? Это какая-то ошибка? Я подумал, возможно, вручную нарисовать прямоугольник вокруг элемента управления, чтобы имитировать границу в качестве крайней меры.
Безграничный контроль:
http://img818.imageshack.us/img818/6337/8j1l.png
Спасибо
Так что я нашел решение сам
В переопределенном методе 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();
Он рисует пользовательскую границу вокруг элемента управления.
Visaul Studio содержит ошибку: Редактор ресурсов не добавляет стиль границы в описание элемента управления в диалоговом ресурсе. Итак, добавьте этот стиль вручную и будьте удачливы 🙂
BOOL CMyDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// add WS_BORDER style manualy...
GetDlgItem(IDC_PROPSYSCHECK)->ModifyStyle(0, WS_BORDER);
return TRUE;
}