
No.2ベストアンサー
- 回答日時:
------------------CPP------------------
// MainFrame.cpp のグローバル変数 indicators と同じもの
static UINT IDArray[] =
{
ID_SEPARATOR, // ステータス ライン インジケータ
ID_INDICATOR_KANA,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
m_bar.Create(this);
// CMainFrame::OnCreate() 内と同様の処理
m_bar.SetIndicators(IDArray, sizeof(IDArray)/sizeof(UINT));
// ↓メインウィンドウのステータスバーからペインスタイルのコピー
int nIndex;// ペインインデックス
UINT nID;// ペインインジケータID
UINT nStyle;// ペインスタイル
int cxWidth;// ペイン幅
for(nIndex = 0; nIndex < sizeof(IDArray)/sizeof(UINT); nIndex++) {
((CStatusBar*)GetMessageBar())->GetPaneInfo(nIndex, nID, nStyle, cxWidth);
m_bar.SetPaneInfo(nIndex, nID, nStyle, cxWidth);
}
// ↑ここまで
return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}
ペインのインジケータIDが ID_SEPARATOR のときに凸の
状態のペインになるらしいです。独自の設定にする場合は
CStatusBar::SetPaneInfo()等を使用して下さい。
ただ、MFCのMDIやSDIはステータスバー・メニュー
等に、独自の内部処理がデフォルトで入っているので(
CStatusCmdUIなる内部クラスが管理する)、MFCの
標準の画面設計と少し異なる方法を取りたい場合は注意が
必要です(といってもどうしようも無いが)
APIの CreateStatusWindow() を使用して1から自分好みに
完全アレンジするという手もありますが、ビューの描画領域の
再計算等を全て自分で実装しなければならなくなります。
要するに結論:一応同じものは実現できますが(同じ過ぎて
むしろ気味が悪い)、親ウィンドウのステータスバーがそもそも
変だということで考えておいて下さい。
ありがとうございました。
仰る通りなんか変ですね。
普通のままにしておきます。
大変助かりました。
また、宜しくお願い致します。
No.1
- 回答日時:
子ウィンドウのフレームを「CChildFrame」とすると
------------------ヘッダー------------------
class CChildFrame : public CMDIChildWnd
{
~(中略)~
public:
CStatusBar m_bar;
~(中略)~
};
------------------CPP------------------
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
m_bar.Create(this); // ←ココ追加
return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}
てな感じ。でもあまりやらないと思う、
以上です。
ありがとうございました。
作成することが出来ました。
作成できたのですが、
立体的なステータスバーになってしまいました。
(親ウィンドウのようなものではなく、凹んだ感じの物)
これを、親ウィンドウと同じようなステータスバーに
するためには、どのように行ったらよいのでしょうか?
ご存知であれば、教えていただけませんでしょうか。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
勝手にウィンドウが開いて止ま...
-
エクセルで作った新しいウイン...
-
Exelを開く時に困っています
-
ちらつきについて
-
「アイテムは収集されました」...
-
タスクトレイからのバルーン表示
-
作成したウインドウのサイズを...
-
ラジオボタンの初期指定
-
MFCでハンドルを取得するには
-
アクティブウインドウのIME...
-
VBでアプリケーションを自動操...
-
Vba LongPtrについて教えてくだ...
-
ExcelのBOOKが消えた!
-
MFC MDIでステータスバーの追加。
-
Console.WriteLine で表示されない
-
コンソールアプリケーションで...
-
最大化と最小化ボタン
-
ExcelVBAでAPIを使って外部ウイ...
-
グラフの交点の求め方(Excel)
-
コンボボックス内の文字サイズ変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ラジオボタンの初期指定
-
勝手にウィンドウが開いて止ま...
-
皆さん、おはようございます♪ ...
-
検索の画面がでなくなってしま...
-
Vba LongPtrについて教えてくだ...
-
【VB2008】 マウス操作の一時的...
-
[VBA] UserForm を Excel の W...
-
VBA .Value=.Value ?
-
Excelの上下を固定したい
-
UWSCで特定のChromeのタブをア...
-
ExcelのBOOKが消えた!
-
「&HFFFF」「&H1A」とは?
-
ゲームでは結局どっちが良いの?
-
作成したウインドウのサイズを...
-
エクセルで1行目から3行目が消...
-
Console.WriteLine で表示されない
-
Alt+P,Alt+NをPostmessageで送...
-
EnumChildWindowsの使い方(VBA)
おすすめ情報