プロが教える店舗&オフィスのセキュリティ対策術

Win2000,VC++6.0,MFCを使用しています。
Windows Media Playerの表示オプションでは「メニューバーを自動的に隠す」という設定が有ります。
これはMFCでいうCFrameWndをマウスの位置によって表示←→非表示に切替えているように見えます。
このようにクライアントウィンドウは表示したままでフレームウィンドウだけ非表示にする方法、或いは別の手法であればその方法を教えて頂ければ有り難く思います。
今のところどうすれば可能なのか検討もつきません。
宜しくお願い致します。

A 回答 (3件)

キャプション等を消すだけでしたら、#1さんの方法で十分だと思いますが、Media Playerのように四角形ではない形にしたいのなら、SetWindowsRgnを使うか、レイヤードウィンドウを使うことになると思います。

この回答への補足

確かに凝った事をやろうとするとリージョンなんでしょうね。
私はリージョンというのを使った事が無くて思い付きませんでした。
レイヤードウィンドウは以前に使った経験が有ります。
親ウィンドウの前に表示したプロパティシートにスライダーを設けて親ウィンドウが見えるようにしたのですが、今回のように親のクライアント領域に有る子ウィンドウを残して親を透明にするという事も出来るのでしょうか。
時間が取れれば試してみたいと思いますが。

補足日時:2008/02/21 09:39
    • good
    • 0

#2です。


>今回のように親のクライアント領域に有る子ウィンドウを残して親を透明にするという事も出来るのでしょうか。

レイヤードウィンドウにも2種類ありまして、ウィンドウ全体に一定のアルファ値を設定する場合と、ピクセルごとに異なるアルファ値を持ったビットマップを設定する場合とがあります。今回想定されるのは後者ですね。
    • good
    • 0
この回答へのお礼

レイヤードウィンドウについて調べてみました。
ビットマップを設定するのは面白そうですね。
あ~また憶えないといけない事が・・・

有難う御座いました。

お礼日時:2008/02/22 11:52

比較的簡単な方法はウインドウスタイルフラグを変更することで


しょう。タイトルのあるウインドウはWS_CAPTION 等のフラグが
設定してあるので、当該のビット部分をWS_BORDERだけに設定すれば
タイトル部分は消えます。WS_SYSMENUやWS_MAXIMIZEBOXも
落とす必要があるかもしれません。また、他の必要なフラグは
そのまま残さなければなりません。
設定の仕方は
 ::SetWindowLong( hwnd, GWL_STYLE, 新しいスタイルフラグ);
です。
    • good
    • 0
この回答へのお礼

早速の回答有難う御座います。
どんな感じになるか試して見ます。

お礼日時:2008/02/21 09:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!