- ベストアンサー
CreateWindowEx のウィンドウスタイルが反映されないのですが・・・
CreateWindowEx のウィンドウスタイルが反映されないのですが・・・ VC++6.0 の SDK にて、ウィンドウを表示するプログラムを作成中なのですが、 スタイルが思うように反映されません。なぜなのでしょうか。 hList = CreateWindowEx( 0, WC_LISTVIEW, "", WS_CHILD | WS_VISIBLE |//猫でもわかる ~ によるうとデフォルトで必要らしい WS_EX_CLIENTEDGE | // 縁が沈んで見える境界線を持ちます。→ 持ちません WS_EX_ACCEPTFILES | // ドラッグ&ドロップを受けるとあるが、テキストをドロップしても×マーク WS_EX_RIGHTSCROLLBAR | // 右スクロールバーが出るはずなのに・・・ LVS_REPORT, // カラムのタイトル 0, 0, 0, 0, hWnd, (HMENU)LISTVW_HI_1, hInst, NULL);
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
補足です。 >ドラッグ&ドロップを受けるとあるが、テキストをドロップしても×マーク ドラッグ&ドロップを受け付ける為には、作成されたウィンドウ(CreateWindowExされたウィンドウのhWnd)に対して DragAcceptFiles(HWND hWnd,BOOL fAccept); を実行し、且つ、そのウィンドウのメッセージハンドラで WM_DROPFILES のメッセージを処理する必要があります。 DragAcceptFilesをしないと、カーソル形状は変化せず×のまま、ドラッグ&ドロップを受け付けません。
その他の回答 (2)
> ドラッグ&ドロップを受けるとあるが、テキストをドロップしても×マーク 「テキスト」というのはテキストファイルのことでしょうか? それとも,ワープロやエディタ上で選択した文字列のことでしょうか? 後者の場合,WM_DROPFILES を処理しても無理です。 >「水平スクロールバーを出さない」方法はないのでしょうか。 列幅を調整してウィンドウ内に収まるようにすればよいのではないでしょうか? > 自動的にソートもかかっているようなのですが、 > これをOFFにする方法はありませんか・・・ LVS_SORTASCENDING や LVS_SORTDESCENDING を指定しなければ, ソートされなかったと思いますが。
お礼
遅くなりましてすみません。 テキストのことでした。 おっしゃるように、列幅を調整することで解決できました。マウスで変更できてしまうのが難点なんですけど。 ソートの件ですが、1,2,3,4,5,6,7,8,9,10,11,12 というリストを作った場合、自動的に 1,10,11,12,2,3,4,5,6,7,8,9 という具合になってしまうので、ソートしているのでは?とおもったんです。
- chie65536
- ベストアンサー率41% (2512/6032)
CreateWindowExに与えるパラメータのdwExStyleとdwStyleを混同しています。 WS_EX_xxxx 系のスタイル定数は1番目の dwExStyle に、 WS_xxxx 系のスタイル定数は4番目の dwStyle に指定します。 以下のパラメータの仕様を良く見て下さい。 HWND CreateWindowEx( DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam );
お礼
すばらしい! 反映しました。ありがとうございます。 朝から悩んでました。(←まぬけ) あとすみません、もし調べるとかではなくすぐおかわりに なるようであれば、「水平スクロールバーを出さない」 方法はないのでしょうか。 WS_HSCROLL 指定してないのに、勝手に出てます。 自動的にソートもかかっているようなのですが、これを OFFにする方法はありませんか・・・
お礼
遅くなりましたが、確認できました。 ありがとうございます。