class LboxListview : public LboxWintool,public LboxToken


  コンストラクタ



lightbox.lib で使用するオリジナルイベントは、全て LboxListview の拡張コンストラクタ2で、dwFlag に 0x00000001 をセットする事によって実装されます。直接 Lisview に関係無いイベントも含まれているので、アプリケーション作成時にはかならずどこかで LboxListbiew(0x00000001) をインスタンス化しておいて下さい

  
// *********************************************************
// デフォルトコンストラクタ
// *********************************************************
LboxListview::LboxListview()
{
	LboxListview::Rowid = 0;
	LboxListview::hHeader = NULL;
	LboxListview::lpSkipColumn = "";
	LboxListview::hhkFlg = false;
	LboxListview::dwInitFlag = 0;
	this->hWnd = NULL;
	LboxListview::hCombo = NULL;
	LboxListview::hEdit = NULL;
	LboxListview::hMenu = NULL;
	LboxListview::hFont = NULL;
	LboxListview::ColumnType = NULL;
	LboxListview::ColumnSize = NULL;

	ListView_SetExtendedListViewStyle(
		this->hWnd,
		LVS_EX_SUBITEMIMAGES
	);

	LboxListview::Buffer = new LboxString( );
}

// *********************************************************
// 拡張コンストラクタ
// *********************************************************
LboxListview::LboxListview( HWND hTarget )
{
	LboxListview::Rowid = 0;
	LboxListview::hHeader = NULL;
	LboxListview::lpSkipColumn = "";
	LboxListview::hhkFlg = false;
	LboxListview::dwInitFlag = 0;
	LboxListview::ColumnType = NULL;
	LboxListview::ColumnSize = NULL;
	this->hWnd = hTarget;
	LboxListview::hEdit = 
		LboxCreateEdit( this->hWnd, 50001 );
	if ( LboxListview::hEdit != NULL ) {
		HFONT hFont;

		hFont = (HFONT)SendMessage( this->hWnd, WM_GETFONT, 0, 0 );
		SendMessage( LboxListview::hEdit, WM_SETFONT, (WPARAM)hFont, 0 );
		LboxMoveWindowTop( LboxListview::hEdit );
	}
	LboxListview::hCombo = 
		LboxCreateDropdownListbox( this->hWnd, 50002 );
	if ( LboxListview::hCombo != NULL ) {
		HFONT hFont;

		hFont = (HFONT)SendMessage( this->hWnd, WM_GETFONT, 0, 0 );
		SendMessage( LboxListview::hCombo, WM_SETFONT, (WPARAM)hFont, 0 );
		LboxMoveWindowTop( LboxListview::hCombo );
	}

	LboxListview::hMenu = NULL;
	LboxListview::hFont = NULL;

	ListView_SetExtendedListViewStyle(
		this->hWnd,
		LVS_EX_SUBITEMIMAGES
	);
	LboxListview::Buffer = new LboxString( );
	LboxListview::hHeader = ListView_GetHeader( this->hWnd );
}

// *********************************************************
// 拡張コンストラクタ2
// *********************************************************
LboxListview::LboxListview( HWND hTarget, DWORD dwFlag )
{
	LboxListview::Rowid = 0;
	LboxListview::hHeader = NULL;
	LboxListview::lpSkipColumn = "";
	LboxListview::hhkFlg = false;
	LboxListview::dwInitFlag = dwFlag;
	LboxListview::ColumnType = NULL;
	LboxListview::ColumnSize = NULL;

	if ( dwFlag & 0x00000002 ) {
		LboxListview::nID = nBaseId;
		nBaseId++;
		this->hWnd = CreateWindowEx(
			0,
			WC_LISTVIEW,
			"",
			WS_CHILD | WS_VISIBLE | WS_BORDER |
			LVS_REPORT | LVS_SHOWSELALWAYS,
			0, 0, 0, 0,
			hTarget,
			(HMENU)(LboxListview::nID),
			LboxGetInstance( hTarget ),
			NULL
		);
	}
	else {
		this->hWnd = hTarget;
	}

	LboxListview::hCombo = 
		LboxCreateDropdownListbox( this->hWnd, 50002 );
	if ( LboxListview::hCombo != NULL ) {
		HFONT hFont;

		hFont = (HFONT)SendMessage( this->hWnd, WM_GETFONT, 0, 0 );
		SendMessage( LboxListview::hCombo, WM_SETFONT, (WPARAM)hFont, 0 );
		LboxMoveWindowTop( LboxListview::hCombo );
	}
	LboxListview::hEdit = 
		LboxCreateEdit( this->hWnd, 50001 );
	if ( LboxListview::hEdit != NULL ) {
		HFONT hFont;

		hFont = (HFONT)SendMessage( this->hWnd, WM_GETFONT, 0, 0 );
		SendMessage( LboxListview::hEdit, WM_SETFONT, (WPARAM)hFont, 0 );
		LboxMoveWindowTop( LboxListview::hEdit );
	}

	if ( dwFlag & 0x00000001 ) {

		if ( hhk == NULL ) {
			LboxListview::hhkFlg = true;
			hhk = SetWindowsHookEx(
				WH_CALLWNDPROCRET,
				CallWndRetProc,
				NULL,
				GetCurrentThreadId()				
			);

			hhkPost = SetWindowsHookEx(
				WH_GETMESSAGE,
				GetMsgProc,
				NULL,
				GetCurrentThreadId()				
			);
		}

	}

	LboxListview::hMenu = NULL;
	LboxListview::hFont = NULL;

	ListView_SetExtendedListViewStyle(
		this->hWnd,
		LVS_EX_SUBITEMIMAGES
	);
	LboxListview::Buffer = new LboxString( );
	LboxListview::hHeader = ListView_GetHeader( this->hWnd );
}

// *********************************************************
// デストラクタ
// *********************************************************
LboxListview::~LboxListview()
{
	if ( LboxListview::hEdit != NULL ) {
		DestroyWindow( LboxListview::hEdit );
		LboxListview::hEdit = NULL;
	}
	if ( LboxListview::hCombo != NULL ) {
		DestroyWindow( LboxListview::hCombo );
		LboxListview::hCombo = NULL;
	}
	if ( LboxListview::hhkFlg ) {
		if ( hhk != NULL ) {
			UnhookWindowsHookEx( hhk );
			hhk = NULL;
		}
		if ( hhkPost != NULL ) {
			UnhookWindowsHookEx( hhkPost );
			hhkPost = NULL;
		}
	}
	if ( LboxListview::hMenu != NULL ) {
		DestroyMenu( LboxListview::hMenu );
		LboxListview::hMenu = NULL;
	}

	if ( LboxListview::hFont != NULL ) {
		DeleteObject( LboxListview::hFont );
		LboxListview::hFont = NULL;
	}

	if ( LboxListview::dwInitFlag & 0x00000002 ) {
		if ( this->hWnd != NULL ) {
			DestroyWindow( this->hWnd );
			this->hWnd = NULL;
		}
	}
	if ( LboxListview::ColumnType != NULL ) {
		delete LboxListview::ColumnType;
	}
	if ( LboxListview::ColumnSize != NULL ) {
		delete LboxListview::ColumnSize;
	}
	delete LboxListview::Buffer;
}
  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ