lafe @ ウィキ
メニュー

作成したソフトウェア






プログラムtip



合計: -
今日: -
昨日: -


DonutTabView


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

CTabViewImplのMovePage
消すのももったいないので

// nMovePageは移動するタブのインデックス、nInsertBeforePageは移動先のタブのインデックス
bool MoveTab(int nMovePage, int nInsertBeforePage)
{
	ATLASSERT(IsValidPageIndex(nMovePage));
	ATLASSERT(IsValidPageIndex(nInsertBeforePage));
 
	if(!IsValidPageIndex(nMovePage) || !IsValidPageIndex(nInsertBeforePage)) {
		return false;
	}
 
	if(nMovePage == nInsertBeforePage) {
		return true;   // nothing to do
	}
 
	CTempBuffer<TCHAR, _WTL_STACK_ALLOC_THRESHOLD> buff;
	LPTSTR lpstrTabText = buff.Allocate(m_cchTabTextLength + 1);
	if(lpstrTabText == NULL)
		return false;
	TCITEMEXTRA tcix = { 0 };
	tcix.tciheader.mask = TCIF_TEXT | TCIF_IMAGE | TCIF_PARAM;
	tcix.tciheader.pszText = lpstrTabText;
	tcix.tciheader.cchTextMax = m_cchTabTextLength + 1;
	BOOL bRet = m_tab.GetItem(nMovePage, tcix);
	ATLASSERT(bRet != FALSE);
	if(bRet == FALSE)
		return false;
 
	/* 移動先にタブを挿入する処理 */
	// 移動先のインデックスが移動するタブのインデックスより大きい場合
	// (タブが右に移動された場合)
	// 移動先のインデックス + 1の場所にアイテムを挿入する
	// (挿入されたアイテムは保持、移動するタブのアイテムは削除するようにする)
	int nInsertItem = (nInsertBeforePage > nMovePage) ? nInsertBeforePage + 1 : nInsertBeforePage;
	int nNewItem = m_tab.InsertItem(nInsertItem, tcix);
	ATLASSERT(nNewItem == nInsertItem);
	if(nNewItem != nInsertItem)
	{
		// タブに追加失敗
		ATLVERIFY(m_tab.DeleteItem(nNewItem));
		return false;
	}
 
	/* 移動元のアイテムを削除する処理 */
	// 移動するタブのインデックスが移動先のインデックスより大きい場合
	// (タブが左に移動された場合)
	if(nMovePage > nInsertBeforePage) {
		ATLVERIFY(m_tab.DeleteItem(nMovePage + 1) != FALSE);
	} else if(nMovePage < nInsertBeforePage) {
		// タブが右に移動されたので移動元のアイテムのインデックスは変化しない
		ATLVERIFY(m_tab.DeleteItem(nMovePage) != FALSE);
	}
 
//		SetActivePage(nInsertBeforePage);
//		OnPageActivated(m_nActivePage);
 
	return true;
 
}
何かあれば【 こちら 】まで問い合わせください

更新履歴

取得中です。