2016-09-07 3 views
1

パスワードを入力するためにCMFCPropertyGridCtrlに編集ボックスを挿入します。しかし、CMFCPropertyGridPropertyは、通常の編集ボックスしか作成できません。パスワードを使用するために新しいパスワードを作成するにはどうすればよいですか?パスワードの使用のためにCMFCPropertyGridCtrlに編集ボックスを挿入するには?

+0

はES_PASSWORDスタイルに見て。 通常のCEditのctrlを使用して、そのスタイルを変更してパスワードボックスにすることができると思います。 – Jonathan

答えて

2

CMFCPropertyGridPropertyから新しいクラスを派生し、2つの関数: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; 
} 
+0

あなたの答えをありがとう、それは動作します。 –

関連する問題