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 }
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; }