大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

MFC – Automation Server – Documentクラス

株式会社クローバーフィールドの経営理念
著者:津路高広
公開日:2020/07/26
最終更新日:2020/07/26
カテゴリー:技術情報
タグ:

津路です。

MFC – Automation Server – 詳細では、Document以外の実装をしました。
といっても、コードがないので、よくわからないかもしれません。
今回は、コードを書きます。

今回は、サーバーの中心となるドキュメントクラスの実装です。
最初に、ProgIdに、AutoPie.Applicationと書きました。
これは、Applicationオブジェクトの配下に、Chart/Window/Toolbarを置いて、階層化するということです。

ドキュメントクラスCAutoPieDocでは、外だしするAPIを実装します。
まず、CAutoWindow, CAutoChart, CAutoToolbarのデータメンバーを、ドキュメントクラスに宣言します。
m_autoWindow, m_autoChart, m_autoToolbarです。
そして、Automationタブにて、Char/Window/Toolbarそれぞれの、取得設定プロパティを、ドキュメントクラスに追加します。
さらに、Get関数では、それぞれのプロパティのGetIDispatch関数を呼び出します。これにより、各サブオブジェクトのポインタを得ます。
Set関数では、サポートされていないことを示すために、SetNotSupportedを呼び出します。
RevenueのSet/Get関数は、publicセクションに宣言します。
Revenue変数は、protectedセクションにm_nRevenues[4]として宣言します。

まず、ClassWizardにて、CAutoChart, CAutoWindow, CToolBarの変数を追加します。
そして、4半期の売り上げ変数を追加します。

class CAutoPieDoc : public CDocument
{
protected: // シリアライズ機能のみから作成します。
	CAutoPieDoc();
	DECLARE_DYNCREATE(CAutoPieDoc)
protected:
	int m_nRevenues[4];
	CAutoChart m_autoChart;
	CAutoWindow m_autoWindow;
	CAutoToolbar m_autoToolbar;
};

Revenueを取得設定する関数を宣言します。

public:
	void SetRevenue(int,int);
	int GetRevenue(int);

さて、各関数の定義です。
売り上げを初期化します。

BOOL CAutoPieDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: この位置に再初期化処理を追加してください。
	// (SDI ドキュメントはこのドキュメントを再利用します。)
	m_nRevenues[0]=1;
	m_nRevenues[1]=1;
	m_nRevenues[2]=1;
	m_nRevenues[3]=1;
	return TRUE;
}

CAutoChartのインスタンス関連です。Set関数では、設定を拒否します。

LPDISPATCH CAutoPieDoc::GetChart() 
{
	// TODO: ここにプロパティ ハンドラを追加してください

	return m_autoChart.GetIDispatch(TRUE);
}

void CAutoPieDoc::SetChart(LPDISPATCH newValue) 
{
	// TODO: ここにプロパティ ハンドラを追加してください
	SetNotSupported();
}

CAutoWindowのインスタンス関連

LPDISPATCH CAutoPieDoc::GetWindow() 
{
	// TODO: ここにプロパティ ハンドラを追加してください

	return m_autoWindow.GetIDispatch(TRUE);
}

void CAutoPieDoc::SetWindow(LPDISPATCH newValue) 
{
	// TODO: ここにプロパティ ハンドラを追加してください
	SetNotSupported();
	
}

CToolBarのインスタンス関連

LPDISPATCH CAutoPieDoc::GetToolbar() 
{
	// TODO: ここにプロパティ ハンドラを追加してください

	return m_autoToolbar.GetIDispatch(TRUE);
}

void CAutoPieDoc::SetToolbar(LPDISPATCH newValue) 
{
	// TODO: ここにプロパティ ハンドラを追加してください
	SetNotSupported();

}

Revenueの値を取得設定します。
0-3の値が範囲です。

int CAutoPieDoc::GetRevenue(int nQuarter)
{
	ASSERT(nQuarter >=0 && nQuarter <=3);
	return m_nRevenues[nQuarter];
}

void CAutoPieDoc::SetRevenue(int nQuarter, int nNewValue)
{
	ASSERT(nQuarter >=0 && nQuarter <=3);
	m_nRevenues[nQuarter]=nNewValue;

}
    上に戻る