![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
現在WinAPI(C++)でタブ付きのウィンドウを作成しようと思っているのですが、
タブコントロールとしてCreateWindowEX関数+WC_TABCONTROLで作成するしかないのでしょうか?
認識不足なら申し訳ありませんが、これはダイアログボックス内にタブを作成するものでしょうか?
行いたいのは、タブで切り替えれる+画像の描画可能+サイズの変更可能なウィンドウなのですが、
また、タブのデザインも変更できればいいんですが・・・
Visualやイラストレータのようなドラッグでウィンドウを移動させてタブから切り離し+
再度タブ化するのは、どのように実現しているのでしょうか
開発環境はMicrosoft Visual C++ 2010 Expressです。
状況説明不足で申し訳ありませんが、ご教示お願いします。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_08.png?e8efa67)
No.2ベストアンサー
- 回答日時:
タブのデザイン変更はオーナードローあたりに頼ることになるかと思いますが、APIオンリー、Express Editionでドッキング ウィンドウを実現するのは至難の技だと思います。
Visual Studioのスマート ドッキング ウィンドウは、BCGSoft製のMFC拡張ライブラリを使って作られているようです。
OfficeのリボンUIも同様です。
http://www.bcgsoft.com/
BCGSoftのライブラリを逆輸入する形で、Visual Studio 2008 SP1のStandard Edition以上、それとVisual Studio 2010のProfessional Edition以上には、MFC Feature Packが導入されて、スマート ドッキング ウィンドウやリボンUIその他がMFCアプリで使えるようになっています。
有料版にはMFCのソースコードが付いているので、それを参考にしてAPIに落としていくのもありかとは思いますが、MFCを完全に理解していないと読むのが困難な上に、かなりスパゲッティなのでお勧めしません。
Adobeのほうは詳しくは分かりませんが、PhotoshopやIllustratorのスマート ドッキング ウィンドウは、WindowsでもMacでも同じ仕様を確保するため、おそらくQtライブラリ+Adobe独自のクロス プラットフォーム ライブラリで実現されていると思います。
.NET Framework(C++/CLI)を使うのであれば、スマート ドッキング ウィンドウを実現するためのいくつかの無料ライブラリが存在しますが、VC++ 2010ではC++/CLIのインテリセンスが効かないし、そもそもC++/CLI自体GUIアプリ開発には向いていない特殊な言語なので、お勧めしません。
http://dobon.net/vb/dotnet/links/dockingwindow.h …
No.1
- 回答日時:
>現在WinAPI(C++)でタブ付きのウィンドウを作成しようと思っているのですが、
>タブコントロールとしてCreateWindowEX関数+WC_TABCONTROLで作成するしかないのでしょうか?
>認識不足なら申し訳ありませんが、これはダイアログボックス内にタブを作成するものでしょうか?
メインウィンドウのWM_CREATEで、クライアント領域内にタブコントロールをCreateWindowEx()…ですかね。
# さらに、タブの中身をCreateWindow()…かと。
http://wisdom.sakura.ne.jp/system/winapi/common/ …
http://www.kumei.ne.jp/c_lang/sdk/sdk_69.htm
ダイアログっぽく見えますがSDI…ですな。
>Visualやイラストレータのようなドラッグでウィンドウを移動させてタブから切り離し+
>再度タブ化するのは、どのように実現しているのでしょうか
いろいろと手間が掛かっているようです。
ExpressEditionでなければMFCである程度できる…っぽいですけど。
「ドッキングウィンドウ」辺りで検索…でしょうかね。
フローティングウィンドウはまた違う…かな?
早速のご回答ありがとうございました。
教えていただいたURLは質問前にも確認していましたが、
やはりそうなんですね。タブ付きウィンドウとして作成ではなく、
タブ自体がひとつのウィンドウなんですよね。
ドッキングウィンドウというんですね。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Chrome(クローム) (win10)ショートカットの開き方について 1 2023/02/19 18:55
- Chrome(クローム) Google Chromeのブラウザ(PC)ウインドウの移動について 3 2022/07/19 15:14
- Firefox(ファイヤーフォックス) Firefoxで設定を「前回のウィンドウとタブを開く」にしてるのにタブがなくなる 2 2022/09/28 18:23
- その他(パソコン・周辺機器) 適切なペンタブ(液タブ)を購入する方法が分かりません。 3 2023/06/24 10:44
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- Chrome(クローム) Chromeで複数タブを開いた状態で閉じ、再度開いた場合のタブの回復は? 2 2022/04/02 01:44
- Chrome(クローム) youtubeのサムネイルを縦4列配列にしたい。 1 2023/03/09 22:35
- その他(ソフトウェア) 時間差でのオートクリック 1 2023/04/12 12:04
- タブレット 最近pcがおかしいです!助けてください! 3 2022/07/08 20:43
- Word(ワード) Wordで作った「表の罫線を部分的に削除したい」 4 2023/07/24 07:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
form の target(
-
新しいタブで開かせない方法は...
-
小さなウインドウで。
-
表示中のURLなどをバッチファイ...
-
googleマップをポップアップウ...
-
文章中のあるキーワードをクリ...
-
自分のサイトを開いた時にウィ...
-
GoogleChromeでレイアウトが左...
-
AfterEffectsでイージーイーズ...
-
XMLを作成してもタグしか表示さ...
-
H1タグに改行の<br>を使う
-
テキストエリア内の改行禁止
-
キーフレーム
-
テキストエリア内の改行もその...
-
\\n \\r \\t について
-
リーバイス?
-
プルダウン(リストボックス)の...
-
隠しリンク、裏ページ、等を見...
-
Tシャツの刺しゅうがチクチクす...
-
VBA オブジェクトが必要です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
指定URLを新しいウィンドウで開...
-
自分のサイトを開いた時にウィ...
-
プルダウンメニューの開く方向...
-
新しいタブで開かせない方法は...
-
ホームページビルダーでのドロ...
-
表示中のURLなどをバッチファイ...
-
ASP.Net 別ウィンドウを開く・...
-
FindWindowの使い方
-
HTML 全画面表示 リンク先の...
-
DBからPDFを取得して別画面で表...
-
OpenCVのcvNamedWindowによるウ...
-
HTML,js)リンクを新しいタブで...
-
ハイパーリンクからメニュー無...
-
マニアックなショートカットキー
-
VBSでIEのウィンドウサイズを強...
-
インラインフレームの中の表示...
-
QT 半透明の画面生成について
-
ポップアップのHTMLの記述
-
form の target(
-
mailtoとwindow.close()の二つ...
おすすめ情報