ENGLISH page is here.
GET DinopSearchBar
サイト内検索:
HOME
VC++ TIPS
ダウンロード
DinopExifReader
DinopSearchBar
DinopSearchBar mini
DinopTabbingBar
for Firefox
大阪湾の生き物
甲子園浜の自然
甲子園浜の干潟
甲子園浜の水中
甲子園浜の野鳥
近畿の山々
植物図鑑
箕面マップ
水中機材
カメラ
ランキング
望遠鏡の世界
顕微鏡の世界
Googleのすべて
GoogleマップAPI
ニュース
読んだ本
日記
変な料理の作り方
遺伝子操作
論文紹介
デイトレード
自動売買でFX
ネットで小遣い稼ぎ
Solaris
電子工作
その他
問い合わせ
VC++用コード集
大阪湾の生き物
水中用機材
since:2000/11/15
dinopcom@gmail.com
www.dinop.comは
だいのっぷ・どっと・こむ
と読んでください。







« テンプレートクラスを利用したキュー・クラス(CQue) | メイン | CViewの背景色設定 »

自作のコントロールを使ったビュー作成




   CTreeCtrlの派生コントロールなどの自作コントロールを作った場合、SDIアプリ
   としてビュー全面にそのコントロールを使うのは結構面倒くさい。
   それを解決するためにはCFormView派生クラスを作成してVCのウイザードが用意
   したSDIやMDIのビューに結びつける。


   ・SDIかMDIでプロジェクトを作成する。ここでは「xxx」とした
   ・ダイアログリソースを挿入する
   ・ダイアログリソース名を「IDD_CUSTOM_VIEW」とする
   ・ダイアログのプロパティで「スタイル」を「チャイルド」に変更する
   ・ダイアログのプロパティで「境界線」を「しない」に変更する
   ・ダイアログから「OK」と「キャンセル」ボタンを削除する
   ・ダイアログにツリーコントロールを配置する
   ・ツリーコントロールのリソース名を「IDC_TREE」とする
   ・ClassWizardでクラスの新規作成を開く
   ・クラス名「CCustomView」、基本クラス「CFormView」、ダイアログID「IDD_CUSTOM_VIEW」とする
   ・ClassWizardで新しく作成したCCustomViewに「IDC_TREE」のメンバコントロール「m_cTreeCtrl」を追加する
   ・ClassWizardでCCustomViewに「WM_SIZE」のハンドラ関数「OnSize()」を追加する
   ・生成したコードに以下の変更を加える

    ※ 自分で作成したツリーコントロールに対するビューを作成したい場合は
      CCustomTreeView内のメンバ変数「CTreeCtrl m_cTreeCtrl」の部分を
      変更すればいい


class CCustomTreeView : public CFormView
{
protected:
	COptionsTreeView();           // 動的生成に使用されるプロテクト コンストラクタ。
	DECLARE_DYNCREATE(CCustomTreeView)

// フォーム データ
public:
	//{{AFX_DATA(CCustomTreeView)
	enum { IDD = IDD_CUSTOM_VIEW };
//	CTreeCtrl	m_cTreeCtrl;		//■■ この行は削除
	//}}AFX_DATA
	CTreeCtrl	m_cTreeCtrl;	//■■ 削除した行をここに追加、必要に応じてCTreeCtrlを変えればいい

	...(省略)...
};

void CCustomTreeView::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);

	if(::IsWindow(m_cTreeCtrl.m_hWnd) != FALSE)	//■■ 追加
		m_cTreeCtrl.MoveWindow(0, 0, cx, cy);	//■■ 追加
}


#include "CustomTreeView.h"				//■■ 追加

class CxxxView : public CCustomTreeView			//■■ クラス名を変更
{
	...(省略)...
};


IMPLEMENT_DYNCREATE(CxxxView, CCustomTreeView)		//■■ クラス名を変更

BEGIN_MESSAGE_MAP(CxxxView, CCustomTreeView)		//■■ クラス名を変更
	//{{AFX_MSG_MAP(CxxxView)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


BOOL CxxxView::PreCreateWindow(CREATESTRUCT& cs)
{
	return CCustomTreeView::PreCreateWindow(cs);	//■■ クラス名を変更
}

void CxxxView::OnInitialUpdate()
{
	CCustomTreeView::OnInitialUpdate();		//■■ クラス名を変更
}

#ifdef _DEBUG
void CxxxView::AssertValid() const
{
	CCustomTreeView::AssertValid();			//■■ クラス名を変更
}

void CxxxView::Dump(CDumpContext& dc) const
{
	CCustomTreeView::Dump(dc);			//■■ クラス名を変更
}

CxxxDoc* CxxxView::GetDocument() // 非デバッグ バージョンはインラインです。
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CxxxDoc)));
	return (CxxxDoc*)m_pDocument;
}
#endif //_DEBUG








Copyright (c) 1999-2007 issei. All rights reserved. (運営者情報