Esempio n. 1
0
BOOL CDlgMsg4624_Header::OnInitDialog()
{
	CDlgWithAccelerators::OnInitDialog();
	InitDlgItems();
/*	m_DatRem.SetTime(&stDateRem);
	m_Hour1.SetWindowText(toStr(stDateRem.wHour));
	m_Min1.SetWindowText(toStr(stDateRem.wMinute));

	m_DatNeisp.SetTime(&stDate4624); 
	m_Hour2.SetWindowText(toStr(stDate4624.wHour));
	m_Min2.SetWindowText(toStr(stDate4624.wMinute));
*/
/*
	m_pVRem[1] = "Деповский ремонт";
	m_pVRem[2] = "Капитальный ремонт";
	m_pVRem[3] = "Текущий ремонт ТР без замены деталей";
	m_pVRem[4] = "Текущий ремонт ТР2 без замены деталей";
	m_pVRem[5] = "Постройка";
	m_pVRem[6] = "Текущий ремонт ТР с заменой деталей";
	m_pVRem[7] = "Текущий ремонт ТР2 с заменой деталей";
*/
	m_EdKodSobst.SetWindowText("20");
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}
Esempio n. 2
0
INT_PTR CControllerManager::DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	switch (uMsg) {
	case WM_INITDIALOG:
		{
			const size_t NumControllers=m_ControllerList.size();
			if (NumControllers>0) {
				m_CurSettingsList.resize(NumControllers);
				int Sel=0;
				for (size_t i=0;i<NumControllers;i++) {
					const ControllerInfo &Info=m_ControllerList[i];

					DlgComboBox_AddString(hDlg,IDC_CONTROLLER_LIST,Info.pController->GetText());
					if (!m_CurController.empty()
							&& ::lstrcmpi(m_CurController.c_str(),Info.pController->GetName())==0)
						Sel=(int)i;
					m_CurSettingsList[i]=Info.Settings;
				}
				DlgComboBox_SetCurSel(hDlg,IDC_CONTROLLER_LIST,Sel);
			}
			EnableDlgItem(hDlg,IDC_CONTROLLER_LIST,NumControllers>0);

			HWND hwndList=::GetDlgItem(hDlg,IDC_CONTROLLER_ASSIGN);
			ListView_SetExtendedListViewStyle(hwndList,
				LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_LABELTIP);
			LV_COLUMN lvc;
			lvc.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT;
			lvc.fmt=LVCFMT_LEFT;
			lvc.cx=120;
			lvc.pszText=TEXT("ボタン");
			ListView_InsertColumn(hwndList,0,&lvc);
			lvc.pszText=TEXT("コマンド");
			ListView_InsertColumn(hwndList,1,&lvc);

			const CCommandList &CommandList=GetAppClass().CommandList;
			TCHAR szText[CCommandList::MAX_COMMAND_NAME];
			DlgComboBox_AddString(hDlg,IDC_CONTROLLER_COMMAND,TEXT("なし"));
			for (int i=0;i<CommandList.NumCommands();i++) {
				CommandList.GetCommandName(i,szText,lengthof(szText));
				DlgComboBox_AddString(hDlg,IDC_CONTROLLER_COMMAND,szText);
			}

			m_Tooltip.Create(hDlg);
			m_Tooltip.SetFont(GetWindowFont(hDlg));

			InitDlgItems();
			SetDlgItemStatus();
		}
		return TRUE;

	case WM_PAINT:
		{
			if (m_hbmController==NULL)
				break;

			const CController *pController=GetCurController();
			if (pController==NULL)
				break;

			int CurButton=ListView_GetNextItem(::GetDlgItem(hDlg,IDC_CONTROLLER_ASSIGN),-1,LVNI_SELECTED);

			PAINTSTRUCT ps;
			BITMAP bm;
			RECT rc;
			HDC hdcMem;
			HBITMAP hbmOld;

			::BeginPaint(hDlg,&ps);
			::GetObject(m_hbmController,sizeof(BITMAP),&bm);
			::GetWindowRect(::GetDlgItem(hDlg,IDC_CONTROLLER_IMAGEPLACE),&rc);
			MapWindowRect(NULL,hDlg,&rc);
			::FillRect(ps.hdc,&rc,static_cast<HBRUSH>(::GetStockObject(WHITE_BRUSH)));
			hdcMem=::CreateCompatibleDC(ps.hdc);
			hbmOld=static_cast<HBITMAP>(::SelectObject(hdcMem,m_hbmController));
			::BitBlt(ps.hdc,m_ImageRect.left,m_ImageRect.top,
							bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY);
			if (CurButton>=0 && m_hbmSelButtons!=NULL) {
				CController::ButtonInfo Button;

				pController->GetButtonInfo(CurButton,&Button);
				::SelectObject(hdcMem,m_hbmSelButtons);
				::GdiTransparentBlt(ps.hdc,
					m_ImageRect.left+Button.ImageButtonRect.Left,
					m_ImageRect.top+Button.ImageButtonRect.Top,
					Button.ImageButtonRect.Width,
					Button.ImageButtonRect.Height,
					hdcMem,
					Button.ImageSelButtonPos.Left,
					Button.ImageSelButtonPos.Top,
					Button.ImageButtonRect.Width,
					Button.ImageButtonRect.Height,
					RGB(255,0,255));
			}
			::SelectObject(hdcMem,hbmOld);
			::DeleteDC(hdcMem);
			::EndPaint(hDlg,&ps);
		}
		return TRUE;

	case WM_LBUTTONDOWN:
		{
			POINT pt;

			pt.x=GET_X_LPARAM(lParam);
			pt.y=GET_Y_LPARAM(lParam);
			if (m_hbmSelButtons!=NULL
					&& ::PtInRect(&m_ImageRect,pt)) {
				const CController *pController=GetCurController();
				if (pController==NULL)
					return TRUE;

				const int NumButtons=pController->NumButtons();
				for (int i=0;i<NumButtons;i++) {
					CController::ButtonInfo Button;
					RECT rc;

					pController->GetButtonInfo(i,&Button);
					rc.left=m_ImageRect.left+Button.ImageButtonRect.Left;
					rc.top=m_ImageRect.top+Button.ImageButtonRect.Top;
					rc.right=rc.left+Button.ImageButtonRect.Width;
					rc.bottom=rc.top+Button.ImageButtonRect.Height;
					if (::PtInRect(&rc,pt)) {
						HWND hwndList=::GetDlgItem(hDlg,IDC_CONTROLLER_ASSIGN);

						ListView_SetItemState(hwndList,i,
											  LVIS_FOCUSED | LVIS_SELECTED,
											  LVIS_FOCUSED | LVIS_SELECTED);
						ListView_EnsureVisible(hwndList,i,FALSE);
						::SetFocus(hwndList);
						break;
					}
				}
			}
		}
		return TRUE;

	case WM_SETCURSOR:
		if (LOWORD(lParam)==HTCLIENT) {
			if (m_hbmSelButtons!=NULL) {
				POINT pt;

				::GetCursorPos(&pt);
				::ScreenToClient(hDlg,&pt);
				if (::PtInRect(&m_ImageRect,pt)) {
					const CController *pController=GetCurController();
					if (pController==NULL)
						break;

					const int NumButtons=pController->NumButtons();
					for (int i=0;i<NumButtons;i++) {
						CController::ButtonInfo Button;
						RECT rc;

						pController->GetButtonInfo(i,&Button);
						rc.left=m_ImageRect.left+Button.ImageButtonRect.Left;
						rc.top=m_ImageRect.top+Button.ImageButtonRect.Top;
						rc.right=rc.left+Button.ImageButtonRect.Width;
						rc.bottom=rc.top+Button.ImageButtonRect.Height;
						if (::PtInRect(&rc,pt)) {
							::SetCursor(::LoadCursor(NULL,IDC_HAND));
							::SetWindowLongPtr(hDlg,DWLP_MSGRESULT,TRUE);
							return TRUE;
						}
					}
				}
			}
		}
		break;

	case WM_COMMAND:
		switch (LOWORD(wParam)) {
		case IDC_CONTROLLER_LIST:
			if (HIWORD(wParam)==CBN_SELCHANGE) {
				const CController *pCurController=GetCurController();

				InitDlgItems();
				if (pCurController!=NULL) {
					m_CurController=pCurController->GetName();
					m_fChanged=true;
				}
			}
			return TRUE;

		case IDC_CONTROLLER_ACTIVEONLY:
			{
				int CurController=(int)DlgComboBox_GetCurSel(hDlg,IDC_CONTROLLER_LIST);

				if (CurController>=0) {
					m_CurSettingsList[CurController].fActiveOnly=
						DlgCheckBox_IsChecked(hDlg,IDC_CONTROLLER_ACTIVEONLY);
				}
			}
			return TRUE;

		case IDC_CONTROLLER_COMMAND:
			if (HIWORD(wParam)==CBN_SELCHANGE) {
				HWND hwndList=::GetDlgItem(hDlg,IDC_CONTROLLER_ASSIGN);
				int Sel=ListView_GetNextItem(hwndList,-1,LVNI_SELECTED);

				if (Sel>=0) {
					int Command=(int)DlgComboBox_GetCurSel(hDlg,IDC_CONTROLLER_COMMAND);

					SetButtonCommand(hwndList,Sel,
						Command<=0?0:GetAppClass().CommandList.GetCommandID(Command-1));
				}
			}
			return TRUE;

		case IDC_CONTROLLER_DEFAULT:
			{
				const CController *pController=GetCurController();
				if (pController==NULL)
					return TRUE;

				HWND hwndList=::GetDlgItem(hDlg,IDC_CONTROLLER_ASSIGN);
				const int NumButtons=pController->NumButtons();
				for (int i=0;i<NumButtons;i++) {
					CController::ButtonInfo Button;

					pController->GetButtonInfo(i,&Button);
					SetButtonCommand(hwndList,i,Button.DefaultCommand);
				}
				SetDlgItemStatus();
			}
			return TRUE;
		}
		return TRUE;

	case WM_NOTIFY:
		switch (((LPNMHDR)lParam)->code) {
		case LVN_ITEMCHANGED:
			SetDlgItemStatus();
			::InvalidateRect(hDlg,&m_ImageRect,FALSE);
			break;

		case LVN_KEYDOWN:
			{
				LPNMLVKEYDOWN pnmlvk=reinterpret_cast<LPNMLVKEYDOWN>(lParam);

				if (pnmlvk->wVKey==VK_BACK || pnmlvk->wVKey==VK_DELETE) {
					HWND hwndList=::GetDlgItem(hDlg,IDC_CONTROLLER_ASSIGN);
					int Sel=ListView_GetNextItem(hwndList,-1,LVNI_SELECTED);

					if (Sel>=0)
						SetButtonCommand(hwndList,Sel,0);
				}
			}
			break;

		case PSN_APPLY:
			{
				for (size_t i=0;i<m_ControllerList.size();i++) {
					ControllerInfo &Info=m_ControllerList[i];
					ControllerSettings &CurSettings=m_CurSettingsList[i];

					if (Info.Settings!=CurSettings) {
						if (Info.pController->IsEnabled()) {
							if (CurSettings.fActiveOnly!=Info.Settings.fActiveOnly) {
								Info.pController->Enable(false);
								Info.Settings.fActiveOnly=CurSettings.fActiveOnly;
								Info.pController->Enable(true);
							}
						}
						Info.Settings=CurSettings;
						Info.fSettingsChanged=true;
					}
				}
			}
			break;
		}
		break;

	case WM_DESTROY:
		{
			if (m_hbmController!=NULL) {
				::DeleteObject(m_hbmController);
				m_hbmController=NULL;
			}
			if (m_hbmSelButtons!=NULL) {
				::DeleteObject(m_hbmSelButtons);
				m_hbmSelButtons=NULL;
			}
			m_CurSettingsList.clear();
			m_Tooltip.Destroy();
		}
		return TRUE;
	}

	return FALSE;
}