重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

スカイプの様なメインと連絡先表示されているようなウィンドウをつくりたのです。
またボタンを押すことでサブを表示したり消したりするようにしたいのですが、そのようなことは可能ですか?

「Windowsのリソース作成について」の質問画像

A 回答 (3件)

>その挙動はResEditなどでも作れるものでしょうか?



リソースだけの問題でもないと思いますが……。
そういう処理をするコードが必要でしょう。

まぁ、面倒ならダイヤログリソースにして必要に応じてメイン画面にコントロールとして貼る。
とかでしょうかねぇ…。
ソレならソレで面倒も増えますが。
http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vcln …


当方、C#で「同一プログラムだけど起動時の条件によってUIが変わる」なんてのを処理するのにpanelコンテナ使って実装しましたけどね。
条件1の時のpanelと条件2の時のpanelを作って、それぞれの子として各種ボタンやら配置。
フォームのコンストラクタで表示するpanelを選択して、フォーム本体のサイズも算出して微調整かしました。
# まぁこれだと動かなかった方のpanelやら、それらのイベントハンドラやら無駄が多いんですが…。
    • good
    • 0
この回答へのお礼

メイン画面にコントロールとして貼り付ける方法でうまくいきました。
ありがとうございます!!

お礼日時:2013/09/26 19:41

こんな感じかな。


CSplitterWnd
について調べて下さい。VC++2005の場合です。


class C3InViewExSplitWnd : public CSplitterWnd
{
DECLARE_DYNAMIC(C3InViewExSplitWnd)

// インプリメンテーション
public:
C3InViewExSplitWnd();
~C3InViewExSplitWnd();
CWnd* GetActivePane(int* pRow = NULL, int* pCol = NULL);
};

/////////////////////////////////////////////////////////////////////////////

class CSQMailBoxFrame : public CMDIChildWnd
{
DECLARE_DYNCREATE(CSQMailBoxFrame)
public:
CSQMailBoxFrame();

// アトリビュート
public:

// オペレーション
public:

//オーバーライド
// ClassWizard は仮想関数のオーバーライドを生成します。
//{{AFX_VIRTUAL(CSQMailBoxFrame)
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
//}}AFX_VIRTUAL

// インプリメンテーション
public:
virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
virtual ~CSQMailBoxFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif

// 生成したメッセージ マップ関数
protected:
C3InViewExSplitWnd m_wndSplitter3;
C3InViewExSplitWnd m_wndSplitter32;
//{{AFX_MSG(CSQMailBoxFrame)
// メモ - ClassWizard はこの位置にメンバ関数を追加または削除します。
// この位置に生成されるコードを編集しないでください。
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

BOOL CSQAdBookFrame::OnCreateClient(LPCREATESTRUCT lpcs,
CCreateContext* pContext)
{
// 1行, 2列のスプリッターを作成
if (!m_wndSplitter.CreateStatic(this,1,2))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}

// 1 番目のスプリッター ペインを追加 - 0 行目のデフォルト ビュー
int cxText = max(lpcs->cx - 250, 20);

if (!m_wndSplitter.CreateView(0, 0,
RUNTIME_CLASS(CSQAdBookView), CSize(cxText, 0), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}

if (!m_wndSplitter.CreateView(0,1,
RUNTIME_CLASS(C2SQRListView), CSize(0, 0), pContext))
{
TRACE0("Failed to create second pane\n");
return FALSE;
}


// すべて動作した場合、2 つの異なるビューを含む スプリッター ウィンドウ
// ができます。
return TRUE;
}

// CSQAdBookFrame
BOOL CSQAdBookFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~(LONG)FWS_ADDTOTITLE;
return CMDIChildWnd::PreCreateWindow(cs);
}
    • good
    • 0

可能です。

この回答への補足

回答ありがとうございます。

その挙動はResEditなどでも作れるものでしょうか?

リソースをあまり作ったことがないので

勉強できるサイトなどもできれば教えていただけないでしょうか?

補足日時:2013/09/21 14:55
    • good
    • 0

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