⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tabdialogsctrl.cpp

📁 虚拟打印机
💻 CPP
字号:
/* * * tabdialogsctrl.cpp *   Copyright (C) 2006 Michael H. Overlin   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      Contact at poster_printer@yahoo.com * */#include "tabdialogsctrl.h"#include "dialogwindow.h"#include "mathutils.h"#include <windows.h>#include <commctrl.h>#define IDC_TAB		100static const TCHAR gatstrTabDialgCtrlClassName[] = TABDIALOGCTRL_CLASSNAME;// ** // ** public:// **TabDialogsCtrl::TabDialogsCtrl(HINSTANCE hinst, HWND hwnd) : Window(hinst, hwnd) {    m_hwndTabCtrl = this->CreateChildWindowEx( 		0,        WC_TABCONTROL, 		TEXT(""),         WS_CHILD | WS_VISIBLE,         0, 0, 		RW(this->rClient()), RH(this->rClient()),		(HMENU) IDC_TAB, 		NULL         );  	}TabDialogsCtrl::~TabDialogsCtrl() {}void TabDialogsCtrl::SetDialogs(IN const std::vector<TabSpec> & vts) {	ClearDialogs();	if (vts.size() != 0) {		for(uint k = 0; k < vts.size(); ++k) {			DialogWindow *pdw = vts[k].pdw;			pdw->DoCreateDialog(this);			pdw->ShowWindow(SW_HIDE);		}		for(uint k = 0; k < vts.size(); ++k) {			DialogWindow *pdw = vts[k].pdw;			LPTSTR lptstrTabText = (LPTSTR) vts[k].tstrTab.c_str();			TCITEM tci; 			tci.mask = TCIF_TEXT | TCIF_PARAM;			tci.pszText = lptstrTabText;			tci.lParam = (LPARAM) pdw;			TabCtrl_InsertItem(m_hwndTabCtrl, k, &tci);		}		RECT rTabWindow;		GetWindowRect(m_hwndTabCtrl, &rTabWindow);		this->ScreenToClient(rTabWindow);		RECT rTabDisplay = rTabWindow;		TabCtrl_AdjustRect(m_hwndTabCtrl, FALSE, &rTabDisplay);		for(uint k = 0; k < vts.size(); ++k) {			DialogWindow *pdw = vts[k].pdw;			RECT rDlg;			pdw->GetWindowRect(rDlg);			CenterInRect(rDlg, rTabDisplay);			pdw->SetWindowTopLeft(rDlg.left, rDlg.top);		}		// SIMULATE SELECTION CHANGE		NMHDR nmh;		nmh.code = TCN_SELCHANGE;		nmh.idFrom = ::GetDlgCtrlID(m_hwndTabCtrl);		nmh.hwndFrom = m_hwndTabCtrl;		this->SendMessage(WM_NOTIFY, (WPARAM) nmh.idFrom, (LPARAM) &nmh);		//TabCtrl_SetCurSel(m_hwndTabCtrl, 0);	}}uint TabDialogsCtrl::GetDialogCount(void) const {	uint uiRetValue = TabCtrl_GetItemCount(m_hwndTabCtrl);	return uiRetValue;}DialogWindow* TabDialogsCtrl::GetDialog(uint k) {	::TCITEM tci;	tci.mask = TCIF_PARAM;	TabCtrl_GetItem(m_hwndTabCtrl, k, &tci);	DialogWindow *pdw = (DialogWindow*) tci.lParam;	return pdw;}BOOL TabDialogsCtrl::HasCurSel(void) const {	int iCurSel = TabCtrl_GetCurSel(m_hwndTabCtrl);	return (iCurSel != -1);}uint TabDialogsCtrl::GetCurSel(void) const {	int iCurSel = TabCtrl_GetCurSel(m_hwndTabCtrl);	ASSERT(iCurSel != -1);	return (uint) iCurSel;}LPCTSTR TabDialogsCtrl::TheirGetWindowClassName(void) {	return gatstrTabDialgCtrlClassName;}// ** // ** protected:	// **void TabDialogsCtrl::ClearDialogs(void) {	uint nDialogs = this->GetDialogCount();	for(uint k = 0; k < nDialogs; ++k) {		DialogWindow *pdw = this->GetDialog(k);		pdw->DestroyWindow();	}	TabCtrl_DeleteAllItems(m_hwndTabCtrl);}void TabDialogsCtrl::HideAllDialogs(void) {	uint nDialogs = this->GetDialogCount();	for(uint k = 0; k < nDialogs; ++k) {		DialogWindow *pdw = this->GetDialog(k);		pdw->ShowWindow(SW_HIDE);	}}//void TabDialogsCtrl::CursorMsg(OUT MSGRESULT& mr, UINT msg, WPARAM wParam, LPARAM lParam) {//}////void TabDialogsCtrl::MouseMsg(OUT MSGRESULT& mr, UINT msg, WPARAM wParam, LPARAM lParam) {//}//void TabDialogsCtrl::NotifyMsg(OUT MSGRESULT& mr, WPARAM wParam, LPARAM lParam) {	mr.bProcessed = FALSE;	int idCtrl = (int) wParam;	switch(idCtrl) {	case IDC_TAB: {		LPNMHDR lpnmh = (LPNMHDR) lParam;		UINT uiCode = lpnmh->code;		switch(uiCode) {		case TCN_SELCHANGE: {			if (this->HasCurSel()) {				uint uiSel = this->GetCurSel();				DialogWindow *pdw = this->GetDialog(uiSel);				//HideAllDialogs();				pdw->ShowWindow(SW_SHOW);				mr.bProcessed = TRUE;				// 6/1				this->SendNotification(TabDialogsCtrl::eDialogChanged);			}		} break;		case TCN_SELCHANGING: {			if (this->HasCurSel()) {				uint uiSel = this->GetCurSel();				DialogWindow *pdw = this->GetDialog(uiSel);				pdw->ShowWindow(SW_HIDE);				mr.bProcessed = TRUE;			}		} break;		default:			break;		}	} break;	default:		break;	}}//void TabDialogsCtrl::Paint(OUT MSGRESULT& mr) {//}//// 7/3LRESULT TabDialogsCtrl::WindowProc(UINT msg, WPARAM wParam, LPARAM lParam) {	switch(msg) {		case WM_SETFONT:			::SendMessage(m_hwndTabCtrl, msg, wParam, lParam);			break;	}	LRESULT lresRetValue = Window::WindowProc(msg, wParam, lParam);	return lresRetValue;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -