ページ 11

クライアント領域の立体枠の描画方法について

Posted: 2014年4月12日(土) 16:38
by wasawasa
こんにちは、いつもお世話になっています。
APIを使ってウィンドウズ上で動くアプリを作ろうと今勉強中なのですが、アプリを作る中でWindows用のソフトウェアでよく使われている下図のような立体枠を使いたいと思いAPIを見て回っています。
様々なソフトで使われている以上、この枠を用意する何かしらのAPIがあると思い探しているのですが、中々見つからないので質問しました。
この立体枠を用意するAPIはあるのでしょうか?
また、この立体枠に何かしらの正式名称があればそちらも教えて頂けると幸いです。
どなたかよろしくお願いします。

Re: クライアント領域の立体枠の描画方法について

Posted: 2014年4月12日(土) 17:03
by みけCAT
立体枠を自分で描画するのではなく、「ツールバー」を作ると楽かもしれません。
(よく知らないので、もしかしたら自分で描画しないといけないかもしれません)

Re: クライアント領域の立体枠の描画方法について

Posted: 2014年4月12日(土) 17:07
by みけCAT
ツールバーのウィンドウに対し、SetWindowLong関数で、
拡張ウィンドウスタイルにWS_EX_CLIENTEDGEを追加するといいかもしれません

画像を見たら、ツールバーの下の方ですね。考え直したほうがよさそうです。

Re: クライアント領域の立体枠の描画方法について

Posted: 2014年4月12日(土) 22:23
by ISLe
WS_EX_CLIENTEDGE拡張スタイルで良いと思いますが。
ただしAeroが有効だと変化しないようです。

自前で描画したいなら、DrawEdge関数を使うと良いでしょう。

Re: クライアント領域の立体枠の描画方法について

Posted: 2014年4月18日(金) 17:03
by wasawasa
返信ありがとうございます。
皆さんに提示していただいた物を読み込むうちに、立体枠は既にあるウィンドウを縁取るようにして描画するものであり、立体枠だけを作成するような物ではないという事が理解できました。
仮に私が提示した画像のようにするならばクライアント領域のツールバー以外の部分を覆うように新しいウィンドウを描画して、それを縁取るように描画する必要があるという方針が何となく見えてきたのでやってみたいと思います。
あと、返信が遅れてしまってすみませんでした。