0

フォームに CMFCPropertyGridCtrl を作成しましたが、そのコントロールの Visual Studio の [プロパティ] ウィンドウで [Border] オプションを [True] に設定しても効果はなく、プロパティ グリッドは常に以下のスクリーンショットのように表示されます (コントロールの周囲に描かれた境界線)。

また、コード内から境界線を有効にしようとしましたが、うまくいきませんでした。

私のオプションは何ですか?これは何かのバグですか?最後の手段として境界線をシミュレートするために、コントロールの周りに長方形を手動で描画することを考えていました。

ボーダーレス コントロール: http://img818.imageshack.us/img818/6337/8j1l.png

ありがとう

4

2 に答える 2

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();

コントロールの周りにカスタム境界線を描画します。

于 2013-09-03T08:39:15.207 に答える
0

Visaul Studio にはバグがあります。リソース エディターは、ダイアログ リソースのコントロールの説明に境界線スタイルを追加しません。したがって、このスタイルを手動で追加して、幸運を祈ります:)

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

    // add WS_BORDER style manualy...
    GetDlgItem(IDC_PROPSYSCHECK)->ModifyStyle(0, WS_BORDER);
    return TRUE;
}
于 2016-08-18T14:10:22.773 に答える