Как вставить поле редактирования в CMFCPropertyGridCtrl для использования пароля?

Я хочу вставить поле редактирования в CMFCPropertyGridCtrl для ввода пароля. Но CMFCPropertyGridProperty может создавать только обычные поля редактирования. Как я могу создать новый для использования пароля?

1

Решение

Получите новый класс от CMFCPropertyGridProperty и переопределить две функции: OnDrawValue() а также CreateInPlaceEdit(),

Прототип кода может выглядеть так:

void CMyGridProperty::OnDrawValue(CDC* pDC, CRect rect)
{
// pre-processing
// ...

CString strVal = FormatProperty();
if(!strVal.IsEmpty())
{
strVal = _T("******");  // NOTE: replace the plain text with "******"}
rect.DeflateRect(AFX_TEXT_MARGIN, 0);
pDC->DrawText(strVal, rect, DT_LEFT | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_END_ELLIPSIS);

// post-processing
// ...
}

CWnd* CMyGridProperty::CreateInPlaceEdit(CRect rectEdit, BOOL& bDefaultFormat)
{
// pre-processing
// ...

CEdit* pWndEdit = new CEdit;
DWORD dwStyle = WS_VISIBLE | WS_CHILD | ES_AUTOHSCROLL | ES_PASSWORD;   // NOTE: add 'ES_PASSWORD' style here
pWndEdit->Create(dwStyle, rectEdit, m_pWndList, AFX_PROPLIST_ID_INPLACE);

// post-processing
// ...

return pWndEdit;
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]