class LboxToolbar : public LboxWintool

  コンストラクタ



  
// *********************************************************
// デフォルトコンストラクタ
// *********************************************************
LboxToolbar::LboxToolbar()
{
	this->hWnd = NULL;
	LboxToolbar::bStandard = false;
}

// *********************************************************
// デストラクタ
// *********************************************************
LboxToolbar::~LboxToolbar()
{
	if ( this->hWnd != NULL ) {
		DestroyWindow( this->hWnd );
	}
}
  



  Create



  
// *********************************************************
// ツールバーの実装
// 戻り値 : 無し
// *********************************************************
void LboxToolbar::Create( HWND hOwner, int nIndent )
{
	this->hWnd = CreateWindowEx(
		0,
		TOOLBARCLASSNAME,
		NULL, 
		WS_CHILD | WS_VISIBLE, 
		0, 0, 0, 0,
		hOwner,
		(HMENU)LBOX_TOOLBAR_ID,
		LboxGetInstance( hOwner ),
		NULL
	);
	if ( this->hWnd != NULL ) {
		// TBBUTTON 構造体サイズの通知
		SendMessage(
			this->hWnd,
			TB_BUTTONSTRUCTSIZE,
			(WPARAM) sizeof(TBBUTTON),
			0
		);
		// 最初のボタンの左端の位置
		SendMessage(
			this->hWnd,
			TB_SETINDENT,
			(WPARAM) nIndent,
			0
		);
	}
}
  



  AddBitmap

  
// *********************************************************
// ビットマップの追加
// nId : ビットマップのリソース ID
// 戻り値 : 無し
// *********************************************************
int LboxToolbar::AddBitmap( DWORD nId )
{
	if ( this->hWnd == NULL ) {
		return -1;
	}

	TBADDBITMAP tbab;

	tbab.hInst = LboxGetInstance( this->hWnd );
	tbab.nID = nId;
	return (int)SendMessage(
		this->hWnd,
		TB_ADDBITMAP,
		(WPARAM)1,
		(WPARAM) &tbab
	);
}
  



  AddSep

  
// *********************************************************
// セパレータの追加
// 戻り値 : 無し
// *********************************************************
void LboxToolbar::AddSep( void )
{
	if ( this->hWnd == NULL ) {
		return;
	}

	TBBUTTON tbb;

	tbb.iBitmap = 0;
	tbb.idCommand = 0;
	tbb.fsState = TBSTATE_ENABLED;
	tbb.fsStyle = TBSTYLE_SEP;
	tbb.dwData = 0;
	tbb.iString = 0;

	SendMessage(
		this->hWnd,
		TB_ADDBUTTONS,
		(WPARAM)1,
		(LPARAM) (LPTBBUTTON) &tbb
	);
}
  



  AddButton

  
// *********************************************************
// ボタンの追加
// nId : ビットマップのリソース ID
// nCommand : WM_COMMAND 経由で通知される ID
// 戻り値 : 無し
// *********************************************************
void LboxToolbar::AddButton( DWORD nId, int nCommand )
{
	if ( this->hWnd == NULL ) {
		return;
	}

	int nTarget;

	nTarget = LboxToolbar::AddBitmap( nId );
	if ( nTarget == -1 ) {
		return;
	}

	TBBUTTON tbb;

	tbb.iBitmap = nTarget;
	tbb.idCommand = nCommand;
	tbb.fsState = TBSTATE_ENABLED;
	tbb.fsStyle = TBSTYLE_BUTTON;
	tbb.dwData = 0;
	tbb.iString = 0;

	SendMessage(
		this->hWnd,
		TB_ADDBUTTONS,
		(WPARAM)1,
		(LPARAM) (LPTBBUTTON) &tbb
	);
}
  



  AddStandardButton

  
// *********************************************************
// スタンダードボタンの追加 ( small size )
// nType : 0 HIST, 1 STD, 2 VIEW
// nIndex : Standard Button Image Index
// nCommand : WM_COMMAND 経由で通知される ID
// 戻り値 : 無し
// *********************************************************
void LboxToolbar::AddStandardButton( int nType, DWORD nIndex, int nCommand )
{
	if ( this->hWnd == NULL ) {
		return;
	}

	if ( !(LboxToolbar::bStandard) ) {
		LboxToolbar::bStandard = true;
		LboxToolbar::offsetHist = (int)SendMessage(
			this->hWnd,
			TB_LOADIMAGES,
			IDB_HIST_SMALL_COLOR,
			(LPARAM)HINST_COMMCTRL 
		); 
		LboxToolbar::offsetStd = (int)SendMessage(
			this->hWnd,
			TB_LOADIMAGES,
			IDB_STD_SMALL_COLOR,
			(LPARAM)HINST_COMMCTRL
		); 
		LboxToolbar::offsetView = (int)SendMessage(
			this->hWnd,
			TB_LOADIMAGES,
			IDB_VIEW_SMALL_COLOR,
			(LPARAM)HINST_COMMCTRL
		); 
	}

	TBBUTTON tbb;

	switch( nType ) {
		case 0:
			nIndex += LboxToolbar::offsetHist;
			break;
		case 1:
			nIndex += LboxToolbar::offsetStd;
			break;
		case 2:
			nIndex += LboxToolbar::offsetView;
			break;
	}
	tbb.iBitmap = nIndex;
	tbb.idCommand = nCommand;
	tbb.fsState = TBSTATE_ENABLED;
	tbb.fsStyle = TBSTYLE_BUTTON;
	tbb.dwData = 0;
	tbb.iString = 0;

	SendMessage(
		this->hWnd,
		TB_ADDBUTTONS,
		(WPARAM)1,
		(LPARAM) (LPTBBUTTON) &tbb
	);
}
  



  ParentFit

  
// *********************************************************
// 親ウインドウにフィットさせる
// 戻り値 : 無し
// *********************************************************
void LboxToolbar::ParentFit( WPARAM wParam, LPARAM lParam )
{
	if ( this->hWnd == NULL ) {
		return;
	}

	SendMessage(this->hWnd, WM_SIZE, wParam, lParam);
}
  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ