2

関数を使用してリスト ビュー コントロールを作成しCreateWindowEx()ます。作成時に指定した拡張スタイルは、リスト ビュー コントロールには適用されません。

これが私のコードです:

INITCOMMONCONTROLSEX iccx;
iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
iccx.dwICC  = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&iccx);

hWnd = CreateWindowExW( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES,    // Extended Styles
                        WC_LISTVIEWW,                               // Class Name
                        L"",                                        // Title
                        LVS_REPORT | WS_VISIBLE | WS_CHILD,         // Styles
                         10,    // x
                        320,    // y
                        480,    // w
                        200,    // h
                        hWndParent,
                        NULL,
                        hInstance,
                        NULL);

いくつかのコンテンツを追加した後のリストビューの外観は、下の画像のようになります。

私のリストビューの外観

ご覧のとおり、行全体を選択することも、グリッド線も表示されません。

私は何が欠けていますか?拡張スタイルを有効にするにはどうすればよいですか?

4

1 に答える 1

8

リスト ビュー コントロールの場合、拡張スタイルは、LVM_SETEXTENDEDLISTVIEWSTYLEメッセージをコントロール ウィンドウに送信することによって明示的に設定されます。これはドキュメントに記載されています:

拡張されたリスト ビュー スタイル

LVM_SETEXTENDEDLISTVIEWSTYLE メッセージ、または ListView_SetExtendedListViewStyle または ListView_SetExtendedListViewStyleEx マクロのいずれかを使用して、これらの拡張リスト ビュー コントロール スタイルを採用します。

例えば:

SendMessageW(   hWnd,
                LVM_SETEXTENDEDLISTVIEWSTYLE,
                LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES,
                LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

拡張スタイルは、このメッセージを送信した後にのみ適用されます。

正常に作成されました

于 2013-08-03T11:02:19.477 に答える