クラスライブラリを作成する

  



新規作成で Win32 Static Library
動作テスト
メンバ関数を追加する
メンバ関数を実行
lbWindow クラスを作成して lbClass に継承させる



  新規作成で Win32 Static Library



1) プロジェクト名 : lbClass
2) プリコンパイル済みヘッダーをチェック
3) クラスの新規作成
4) クラス名 : lbClass
5) プロジェクトの設定
6) ライブラリの出力ファイル名で「C:\Program Files\Microsoft Visual Studio\VC98\Lib\lbClass.lib」

「lbClass.h にヘッダーファイル追加」
  
#include <windows.h>

class lbClass  
{
public:
	lbClass();
	virtual ~lbClass();

};

  


「lbClass.cpp」
  
// lbClass.cpp: lbClass クラスのインプリメンテーション
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "lbClass.h"

//////////////////////////////////////////////////////////////////////
// 構築/消滅
//////////////////////////////////////////////////////////////////////

lbClass::lbClass()
{

}

lbClass::~lbClass()
{

}

  



  動作テスト

  
lbClass::lbClass()
{
	MessageBox(NULL,"START","",MB_OK);
}

lbClass::~lbClass()
{
	MessageBox(NULL,"END","",MB_OK);
}

  

1) Win32 Application ブロジェクトを作成
2) lbClass.h ヘッダーファイルをインクルード
3) プロジェクトの設定
4) リンクの「オブジェクト/ライブラリ モジュール」に lbClass.lib を追加
5) About 関数内で以下のように記述

  
// バージョン情報ボックス用メッセージ ハンドラ
LRESULT CALLBACK About( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
	switch( message )
	{
		case WM_INITDIALOG:
			return TRUE;

		case WM_COMMAND:
			if( LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL ) 
			{
				lbClass *MyClass = new lbClass();
				EndDialog(hDlg, LOWORD(wParam));
				delete MyClass;
				return TRUE;
			}
			break;
	}
	return FALSE;
}

  

もうひとつの呼び出し方

  
// バージョン情報ボックス用メッセージ ハンドラ
LRESULT CALLBACK About( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
	switch( message )
	{
		case WM_INITDIALOG:
			return TRUE;

		case WM_COMMAND:
			if( LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL ) 
			{
				lbClass::lbClass();
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
	return FALSE;
}

  




  メンバ関数を追加する

コード部分は分類等の管理上別ソースにします。

「Window.cpp」
  
#include "stdafx.h"
#include "windows.h"

//////////////////////////////////////////////////////////////////////
// ウインドウをデスクトップ中央に移動
//////////////////////////////////////////////////////////////////////
void
lbCenterWindow( HWND hwnd )
{
	RECT rTop;
	RECT rMe;

	GetWindowRect( GetDesktopWindow(), &rTop );
	GetWindowRect( hwnd, &rMe );
	MoveWindow( hwnd
		,rTop.right/2 - (rMe.right-rMe.left)/2
		,rTop.bottom/2 - (rMe.bottom-rMe.top)/2
		,(rMe.right-rMe.left)
		,(rMe.bottom-rMe.top)
		,TRUE
	);

}

  

  
class lbClass  
{
public:
	void CenterWindow( HWND hwnd );
	lbClass();
	virtual ~lbClass();

};

  

  
void lbClass::CenterWindow( HWND hwnd )
{
	lbCenterWindow( hwnd );
}

  



  メンバ関数を実行

「グローバル変数として以下を定義」
  
lbClass *MyClass;
  

  
// バージョン情報ボックス用メッセージ ハンドラ
LRESULT CALLBACK About( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
	switch( message )
	{
		case WM_INITDIALOG:

			MyClass = new lbClass();
			MyClass->CenterWindow(hDlg);
			return TRUE;

		case WM_COMMAND:
			if( LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL ) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				delete MyClass;
				return TRUE;
			}
			break;
	}
	return FALSE;
}

  



  lbWindow クラスを作成して lbClass に継承させる

新規に lbWindow を作成して、lbClass にあった
CenterWindow メンバ関数を lbWindow に移動

  
#include <windows.h>

class lbWindow  
{
public:
	void CenterWindow( HWND hwnd );
	lbWindow();
	virtual ~lbWindow();

};

  

  
#include "stdafx.h"
#include "lbWindow.h"

void lbCenterWindow( HWND hwnd );
//////////////////////////////////////////////////////////////////////
// 構築/消滅
//////////////////////////////////////////////////////////////////////

lbWindow::lbWindow()
{

}

lbWindow::~lbWindow()
{

}

void lbWindow::CenterWindow( HWND hwnd )
{
	lbCenterWindow( hwnd );
}

  

  
#include <windows.h>
#include "lbWindow.h"

class lbClass : public lbWindow
{
public:
	lbClass();
	virtual ~lbClass();

};

  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ