![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
現在WinAPI(C++)でタブ付きのウィンドウを作成しようと思っているのですが、
タブコントロールとしてCreateWindowEX関数+WC_TABCONTROLで作成するしかないのでしょうか?
認識不足なら申し訳ありませんが、これはダイアログボックス内にタブを作成するものでしょうか?
行いたいのは、タブで切り替えれる+画像の描画可能+サイズの変更可能なウィンドウなのですが、
また、タブのデザインも変更できればいいんですが・・・
Visualやイラストレータのようなドラッグでウィンドウを移動させてタブから切り離し+
再度タブ化するのは、どのように実現しているのでしょうか
開発環境はMicrosoft Visual C++ 2010 Expressです。
状況説明不足で申し訳ありませんが、ご教示お願いします。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_08.png?5a7ff87)
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ランキング
-
表示中のURLなどをバッチファイ...
-
新しいタブで開かせない方法は...
-
ASP.Net 別ウィンドウを開く・...
-
ホームページに効果音
-
小さなウインドウで。
-
ハイパーリンクからメニュー無...
-
アドレスの横にあるアイコン?...
-
ホームページビルダーでフレー...
-
mailtoとwindow.close()の二つ...
-
ポップアップのHTMLの記述
-
小ウィンドウを表示させる方法
-
自分のHPに掲示板を置きたい
-
見出しシールみたいなテーブル。
-
IEとは別ウィンドウでエクセル...
-
指定URLを新しいウィンドウで開...
-
eclipseでソースを保存すると、...
-
新しい画面で、画面いっぱい表...
-
1クリックで、同時に2つのフ...
-
AfterEffectsでイージーイーズ...
-
XMLを作成してもタグしか表示さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
新しいタブで開かせない方法は...
-
指定URLを新しいウィンドウで開...
-
プルダウンメニューの開く方向...
-
ハイパーリンクからメニュー無...
-
自分のサイトを開いた時にウィ...
-
ASP.Net 別ウィンドウを開く・...
-
HTML 全画面表示 リンク先の...
-
FindWindowの使い方
-
DBからPDFを取得して別画面で表...
-
VC、コンソールアプリ結果の...
-
表示中のURLなどをバッチファイ...
-
プルダウンメニューからリンク→...
-
別ウィンドウで複数ページを同...
-
OpenCVのcvNamedWindowによるウ...
-
ホームページビルダーでのドロ...
-
VC++2010 MFC サイズの最大化に...
-
インラインフレームの中の表示...
-
htmlのボタンでF11を入力
-
googleマップをポップアップウ...
-
メモ帳やエディタで一度にスペ...
おすすめ情報