void CWBProcess::OnEditRedraw( ) { if (m_pControls) { CtrlAttr* attr; CtrlAttr* last; if (GetInterfacePtr()) GetInterfacePtr()->MenuBarNewExec(false, false); last = m_pControls->last(); attr = m_pControls->first(); while (attr) { if (attr == last) DrawControl(attr, DC_AUTOSCROLL); else DrawControl(attr, 0); attr = m_pControls->next(); } if (GetInterfacePtr()) GetInterfacePtr()->EdtRepaint(); } }
void COptionTreeItemColor::DrawAttribute(CDC *pDC, const RECT &rcRect) { // If we don't have focus, text is drawn. if (m_bFocus == TRUE) { return; } // Make sure options aren't NULL if (m_otOption == NULL) { return; } // Make sure there is a window if (!IsWindow(GetSafeHwnd())) { return; } // Set window position if (IsWindow(GetSafeHwnd())) { MoveWindow(m_rcAttribute.left, m_rcAttribute.top, m_rcAttribute.Width(), m_rcAttribute.Height()); } // Draw control DrawControl(pDC, rcRect); }
void COptionTreeItemImage::DrawAttribute(CDC *pDC, const RECT &rcRect) { // If we don't have focus, text is drawn. if (m_bFocus == TRUE) { return; } // Make sure options aren't NULL if (m_otOption == NULL) { return; } // Make sure there is a window if (!IsWindow(GetSafeHwnd())) { return; } // Set window position if (IsWindow(GetSafeHwnd())) { SetWindowPos(NULL, m_rcAttribute.left, m_rcAttribute.top, m_rcAttribute.Width(), m_rcAttribute.Height(), SWP_NOZORDER | SWP_NOACTIVATE | SWP_HIDEWINDOW); } // Draw control DrawControl(pDC, rcRect); }
bool CWBProcess::AddElement(CtrlAttr* attr) { bool ret = false; if (!GetInterfacePtr()) return ret; if (attr && InsertControl(attr)) { ret = true; DrawControl(attr, DC_REPAINT|DC_AUTOSCROLL); } return (ret); }
void ColourButton::OnCustomDraw(NMHDR* nmhdr, LRESULT* result) { NMCUSTOMDRAW* nmcd = (NMCUSTOMDRAW*)nmhdr; *result = CDRF_DODEFAULT; switch (nmcd->dwDrawStage) { case CDDS_PREPAINT: { CDC* dc = CDC::FromHandle(nmcd->hdc); CRect r(nmcd->rc); bool selected = ((nmcd->uItemState & CDIS_SELECTED) != 0); bool disabled = ((nmcd->uItemState & CDIS_DISABLED) != 0); bool focus = ((nmcd->uItemState & CDIS_FOCUS) != 0); if (SendMessage(WM_QUERYUISTATE) & UISF_HIDEFOCUS) focus = false; if (IsAppThemed()) { HTHEME theme = OpenThemeData(this,L"Button"); if (theme) { // Get the area to draw into GetThemeBackgroundContentRect(theme,dc,BP_PUSHBUTTON,PBS_NORMAL,r); CloseThemeData(theme); } } else { UINT state = DFCS_BUTTONPUSH|DFCS_ADJUSTRECT; if (disabled) state |= DFCS_INACTIVE; if (selected) state |= DFCS_PUSHED; dc->DrawFrameControl(r,DFC_BUTTON,state); if (selected) r.OffsetRect(1,1); } DrawControl(dc,r,disabled,focus); *result = CDRF_SKIPDEFAULT; } break; } }
void ControlPad::OnPaint(HDC hDC) { RECT rcClient; GetClientRect(&rcClient); // Standard Setup HDC hMemDC = ::CreateCompatibleDC(hDC); if (hMemDC) { HBITMAP hBmp = ::CreateCompatibleBitmap(hDC, m_nWidth, m_nHeight); HGDIOBJ hOldBmp = ::SelectObject(hMemDC, hBmp); DrawBackground(hMemDC); DrawHint(hMemDC); DrawCross(hMemDC); DrawTextLabels(hMemDC); POINT ptDeflection; if (m_fAction) { ptDeflection.x = m_ptCurrent.x; ptDeflection.y = m_ptCurrent.y; } else { ptDeflection.x = m_nWidth/2; ptDeflection.y = m_nHeight/2; } DrawControl(hMemDC, &ptDeflection); // Copies the source rectangle directly to the destination rectangle ::BitBlt(hDC, 0, 0, m_nWidth, m_nHeight, hMemDC, 0, 0, SRCCOPY); // Standard End ::SelectObject(hMemDC, hOldBmp); ::DeleteDC(hMemDC); ::DeleteObject(hBmp); } else { // Error handler here TRACE2("Memory DC failed: %#X, %d\n", hDC, GetLastError()); } }
void COptionTreeItemColor::OnPaint() { // Check focus if (m_bFocus == FALSE) { return; } // Declare variables CPaintDC dc(this); CRect rcClient; // Get client rect GetClientRect(rcClient); // Draw control DrawControl(&dc, rcClient); }
void ColourButton::DrawItem(LPDRAWITEMSTRUCT dis) { bool selected = ((dis->itemState & ODS_SELECTED) != 0); bool disabled = ((dis->itemState & ODS_DISABLED) != 0); bool focus = ((dis->itemState & ODS_FOCUS) != 0) && ((dis->itemState & ODS_NOFOCUSRECT) == 0); CDC* dc = CDC::FromHandle(dis->hDC); CRect r(dis->rcItem); UINT state = DFCS_BUTTONPUSH|DFCS_ADJUSTRECT; if (disabled) state |= DFCS_INACTIVE; if (selected) state |= DFCS_PUSHED; dc->DrawFrameControl(r,DFC_BUTTON,state); if (selected) r.OffsetRect(1,1); DrawControl(dc,r,disabled,focus); }
void CControlBase::Draw(CDC &dc, CRect rcUpdate) { if(m_bIsVisible && !(m_rc & rcUpdate).IsRectEmpty()) { DrawControl(dc, rcUpdate); // 画子区域 for (size_t i = 0; i < m_vecArea.size(); i++) { CControlBase * pControlBase = m_vecArea.at(i); if (pControlBase) { pControlBase->Draw(dc, rcUpdate); } } // 画子控件 DrawSubControls(dc, rcUpdate); } }
BOOL CALLBACK CShellExt::PageDlgProc_ogg(HWND hDlg,UINT uMessage,WPARAM wParam,LPARAM lParam) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); LPCSHELLEXT lpcs = (CShellExt *)GetWindowLongPtr(hDlg,DWLP_USER); switch(uMessage){ case WM_INITDIALOG: { lpcs = (LPCSHELLEXT )((LPPROPSHEETPAGE )lParam)->lParam; lpcs->m_hwndPage = hDlg; SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)lpcs); lpcs->m_bApply = FALSE; //Ver情報 SetDlgItemText(hDlg,IDC_STATIC_VER_INFO,SOFT_NAME); //タイトル SetDlgItemText(hDlg,IDC_EDIT_FILENAME,getFileName(lpcs->m_strSelectFile)); //アイコンを表示 SHFILEINFO sfi; if(SHGetFileInfo(lpcs->m_strSelectFile,0,&sfi,sizeof(sfi),SHGFI_ICON)) { Static_SetImage_Icon(GetDlgItem(hDlg,IDC_ICON1),sfi.hIcon); } //コンボボックスの初期化 ComboBox_AddString(GetDlgItem(hDlg,IDC_EDIT_GNR), _T("")); for(int i=0; i<256; i++) { if(lpcs->m_Id3tagv1.GenreNum2String((unsigned char)i).GetLength()) ComboBox_AddString(GetDlgItem(hDlg,IDC_EDIT_GNR), lpcs->m_Id3tagv1.GenreNum2String((unsigned char)i)); } //オーナードローボタンの初期化 /* RECT rect; SetRect(&rect,145,208,145,75);//ボタン位置の基準 MapDialogRect(hDlg,&rect); SetWindowPos(GetDlgItem(hDlg,IDC_BUTTON_REW),NULL,rect.left+25*0,rect.top,23,23,SWP_NOZORDER | SWP_SHOWWINDOW); SetWindowPos(GetDlgItem(hDlg,IDC_BUTTON_PLAY),NULL,rect.left+25*1,rect.top,23,23,SWP_NOZORDER | SWP_SHOWWINDOW); SetWindowPos(GetDlgItem(hDlg,IDC_BUTTON_PAUSE),NULL,rect.left+25*2,rect.top,23,23,SWP_NOZORDER | SWP_SHOWWINDOW); SetWindowPos(GetDlgItem(hDlg,IDC_BUTTON_STOP),NULL,rect.left+25*3,rect.top,23,23,SWP_NOZORDER | SWP_SHOWWINDOW); SetWindowPos(GetDlgItem(hDlg,IDC_BUTTON_FFW),NULL,rect.left+25*4,rect.top,23,23,SWP_NOZORDER | SWP_SHOWWINDOW); */ //情報を表示 DispInfo(hDlg,lpcs); DispInfoExt(hDlg,lpcs); return FALSE; } break; case WM_TIMER: switch(wParam){ case REW_TIMER: SendMessage(hDlg,WM_COMMAND, MAKEWPARAM((UINT )IDC_BUTTON_REW,(UINT )BN_CLICKED), 0); break; case FFW_TIMER: SendMessage(hDlg,WM_COMMAND, MAKEWPARAM((UINT )IDC_BUTTON_FFW,(UINT )BN_CLICKED), 0); break; } break; // オーナー描画コントロール case WM_DRAWITEM: DrawControl(hDlg,(LPDRAWITEMSTRUCT )lParam); break; case WM_COMMAND: switch(LOWORD(wParam)){ case IDC_BUTTON_ADD_VALUE: //値追加 { CDlg_ogg_exttag dlg; if(dlg.DoModal() == IDOK) { COggExt *oggExt = new COggExt(dlg.m_strName,dlg.m_strValue); long index = ListBox_AddString(GetDlgItem(hDlg,IDC_LIST_VALUE),oggExt->Get1LineDisp()); if(index == LB_ERR) { delete oggExt; } else { ListBox_SetItemData(GetDlgItem(hDlg,IDC_LIST_VALUE),index,oggExt); } PropSheet_Changed(GetParent(hDlg),hDlg); lpcs->m_bApply = TRUE; } } break; case IDC_BUTTON_DEL_VALUE: //値削除 { long item = ListBox_GetCurSel(GetDlgItem(hDlg,IDC_LIST_VALUE)); if(item == LB_ERR) break; COggExt *oggExt = (COggExt *)ListBox_GetItemData(GetDlgItem(hDlg,IDC_LIST_VALUE),item); if(oggExt) { delete oggExt; } ListBox_DeleteString(GetDlgItem(hDlg,IDC_LIST_VALUE),item); PropSheet_Changed(GetParent(hDlg),hDlg); lpcs->m_bApply = TRUE; } break; case IDC_LIST_VALUE: if(HIWORD(wParam) == LBN_DBLCLK) { //ダブルクリック - 編集 long item = ListBox_GetCurSel(GetDlgItem(hDlg,IDC_LIST_VALUE)); if(item == LB_ERR) break; COggExt *oggExt = (COggExt *)ListBox_GetItemData(GetDlgItem(hDlg,IDC_LIST_VALUE),item); if(oggExt == NULL) break; CDlg_ogg_exttag dlg; dlg.m_strName = oggExt->GetName(); dlg.m_strValue = oggExt->GetValue(); if(dlg.DoModal() == IDOK) { oggExt->SetName(dlg.m_strName); oggExt->SetValue(dlg.m_strValue); ListBox_DeleteString(GetDlgItem(hDlg,IDC_LIST_VALUE),item); ListBox_InsertString(GetDlgItem(hDlg,IDC_LIST_VALUE),item,oggExt->Get1LineDisp()); ListBox_SetItemData(GetDlgItem(hDlg,IDC_LIST_VALUE),item,oggExt); PropSheet_Changed(GetParent(hDlg),hDlg); lpcs->m_bApply = TRUE; } } break; case IDC_EDIT_SBJ: case IDC_EDIT_TRK: case IDC_EDIT_ART: case IDC_EDIT_PRD: case IDC_EDIT_AART: case IDC_EDIT_DISC: case IDC_EDIT_CRD: case IDC_EDIT_CMT: if((HIWORD(wParam) == EN_CHANGE) && (IsWindowEnabled((HWND )lParam)) ) { PropSheet_Changed(GetParent(hDlg),hDlg); lpcs->m_bApply = TRUE; } break; case IDC_EDIT_GNR: if( ((HIWORD(wParam) == CBN_SELENDOK) || (HIWORD(wParam) == CBN_EDITCHANGE)) && (IsWindowEnabled((HWND )lParam)) ) { PropSheet_Changed(GetParent(hDlg),hDlg); lpcs->m_bApply = TRUE; } break; case IDC_BUTTON_PLAY: { PlayWinamp(hDlg,lpcs->m_strSelectFile); break; } case IDC_BUTTON_PAUSE: { PauseWinamp(); break; } case IDC_BUTTON_STOP: { StopWinamp(); break; } case IDC_BUTTON_REW: { Rew5Winamp(); break; } case IDC_BUTTON_FFW: { Ffw5Winamp(); break; } case IDC_CHECK_AOT: if(IsDlgButtonChecked(hDlg,IDC_CHECK_AOT) == BST_CHECKED) { lpcs->m_bPropAOT = TRUE; SetWindowPos(GetParent(hDlg),HWND_TOPMOST,0,0,0,0, SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOSIZE); } else { lpcs->m_bPropAOT = FALSE; SetWindowPos(GetParent(hDlg),HWND_NOTOPMOST,0,0,0,0, SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOSIZE); } regSetDword(HKEY_CURRENT_USER,MP3INFP_REG_ENTRY,_T("PropAOT"),(DWORD )lpcs->m_bPropAOT); break; case IDC_SETUP: OpenConfigPage(hDlg,8); break; case IDC_HELPVIEW: lpcs->OpenHtmlHelp(hDlg,_T("extension.htm")); break; DLG_CLIPBOARD_MACRO(lpcs->m_strSelectFile); } break; case WM_DESTROY: { //後始末 long items = ListBox_GetCount(GetDlgItem(hDlg,IDC_LIST_VALUE)); if(items != LB_ERR) { for(int i=0; i<items; i++) { COggExt *oggExt = (COggExt *)ListBox_GetItemData(GetDlgItem(hDlg,IDC_LIST_VALUE),i); if(oggExt) { delete oggExt; } } } } return TRUE; // コンテキストメニュー case WM_CONTEXTMENU: DlgContextMenu(hDlg,lParam,lpcs->m_Ogg.IsEnable()); break; //状況依存ヘルプ case WM_HELP: OpenAboutDlg(hDlg); break; case WM_NOTIFY: switch(((NMHDR FAR *)lParam)->code){ // case PSN_SETACTIVE: // break; case PSN_APPLY: //保存 if(lpcs->m_bApply) { TRACE(_T("WM_NOTIFY(PSN_APPLY) - 保存\n")); //ファイルが書き込み可能か調べる if(GetFileAttributes(lpcs->m_strSelectFile) & (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY)) { //「このファイルは「読み込み専用」です」 AfxMessageBox(IDS_PAGE_THIS_READONLY,MB_ICONINFORMATION); //適用ボタンは引き続き有効 SetWindowLongPtr(hDlg,DWLP_MSGRESULT,PSNRET_INVALID); break; } lpcs->m_bApply = FALSE; CString strTmp; CWnd wnd; //いったんリセット lpcs->m_Ogg.Release(); wnd.Attach(hDlg); wnd.GetDlgItemText(IDC_EDIT_SBJ,strTmp); lpcs->m_Ogg.AddComment(_T("TITLE"),strTmp); wnd.GetDlgItemText(IDC_EDIT_TRK,strTmp); lpcs->m_Ogg.AddComment(_T("TRACKNUMBER"),strTmp); wnd.GetDlgItemText(IDC_EDIT_ART,strTmp); lpcs->m_Ogg.AddComment(_T("ARTIST"),strTmp); wnd.GetDlgItemText(IDC_EDIT_PRD,strTmp); lpcs->m_Ogg.AddComment(_T("ALBUM"),strTmp); wnd.GetDlgItemText(IDC_EDIT_AART,strTmp); lpcs->m_Ogg.AddComment(_T("ALBUMARTIST"),strTmp); wnd.GetDlgItemText(IDC_EDIT_DISC,strTmp); lpcs->m_Ogg.AddComment(_T("DISCNUMBER"),strTmp); wnd.GetDlgItemText(IDC_EDIT_CRD,strTmp); lpcs->m_Ogg.AddComment(_T("DATE"),strTmp); wnd.GetDlgItemText(IDC_EDIT_GNR,strTmp); lpcs->m_Ogg.AddComment(_T("GENRE"),strTmp); wnd.GetDlgItemText(IDC_EDIT_CMT,strTmp); lpcs->m_Ogg.AddComment(_T("COMMENT"),strTmp); wnd.Detach(); //その他分を保存 long items = ListBox_GetCount(GetDlgItem(hDlg,IDC_LIST_VALUE)); if(items != LB_ERR) { for(int i=0; i<items; i++) { COggExt *oggExt = (COggExt *)ListBox_GetItemData(GetDlgItem(hDlg,IDC_LIST_VALUE),i); if(oggExt) { lpcs->m_Ogg.AddComment(oggExt->GetName(),oggExt->GetValue()); } } } //タイムスタンプを保存 lpcs->PushTimeStamp(lpcs->m_strSelectFile); DWORD dwRet = lpcs->m_Ogg.Save(lpcs->m_strSelectFile); if(dwRet != ERROR_SUCCESS) { lpcs->m_bApply = TRUE; if(dwRet == -1) //「ファイルを正しく更新できませんでした。」 AfxMessageBox(IDS_PAGE_BROKEN,MB_ICONINFORMATION); else //システムエラーを表示 errMessageBox(hDlg,dwRet); //適用ボタンは引き続き有効 SetWindowLongPtr(hDlg,DWLP_MSGRESULT,PSNRET_INVALID); break; } //タイムスタンプを復元 if(lpcs->m_bSaveTimeStamp) { lpcs->PopTimeStamp(lpcs->m_strSelectFile); } //情報を表示 lpcs->m_Ogg.Load(lpcs->m_strSelectFile); DispInfo(hDlg,lpcs); DispInfoExt(hDlg,lpcs); SetWindowLongPtr(hDlg,DWLP_MSGRESULT,PSNRET_NOERROR); //シェルに変更を通知 SHChangeNotify(SHCNE_UPDATEITEM,SHCNF_PATH,lpcs->m_strSelectFile,NULL); } break; default: break; } break; default: return FALSE; } return TRUE; }
void DrawControlConfig(int x,int x2, int x3, int y) { int i = 0; DrawControl("MoveUp", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("MoveDown", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("MoveLeft", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("MoveRight", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("LAction1", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("LAction2", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("RAction1", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("RAction2", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("LSwap", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("RSwap", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("NextSpell", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("NextTool", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("Target", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("UseTool", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("Run", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("Interact", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("SaveGame", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("InventoryWindow", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("StatusWindow", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("SpellWindow", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("SkillWindow", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); DrawControl("ControlsWindow", x, x2, x3, y + (i++ * (GetFontHeight(F_Small) + 2))); }
BOOL CALLBACK CShellExt::PageDlgProc_vqf(HWND hDlg,UINT uMessage,WPARAM wParam,LPARAM lParam) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); TRACE(_T("PageDlgProc_avi(mes=%08x,wParam=%08x,lParam=%08x\r\n"),uMessage,wParam,lParam); LPCSHELLEXT lpcs = (CShellExt *)GetWindowLongPtr(hDlg,DWLP_USER); switch(uMessage){ case WM_INITDIALOG: { lpcs = (LPCSHELLEXT )((LPPROPSHEETPAGE )lParam)->lParam; lpcs->m_hwndPage = hDlg; SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)lpcs); lpcs->m_bApply = FALSE; //Ver情報 SetDlgItemText(hDlg,IDC_STATIC_VER_INFO,SOFT_NAME); //タイトル SetDlgItemText(hDlg,IDC_EDIT_FILENAME,getFileName(lpcs->m_strSelectFile)); //アイコンを表示 SHFILEINFO sfi; if(SHGetFileInfo(lpcs->m_strSelectFile,0,&sfi,sizeof(sfi),SHGFI_ICON)) { Static_SetImage_Icon(GetDlgItem(hDlg,IDC_ICON1),sfi.hIcon); } //オーナードローボタンの初期化 /* RECT rect; SetRect(&rect,145,208,145,75);//ボタン位置の基準 MapDialogRect(hDlg,&rect); SetWindowPos(GetDlgItem(hDlg,IDC_BUTTON_REW),NULL,rect.left+25*0,rect.top,23,23,SWP_NOZORDER | SWP_SHOWWINDOW); SetWindowPos(GetDlgItem(hDlg,IDC_BUTTON_PLAY),NULL,rect.left+25*1,rect.top,23,23,SWP_NOZORDER | SWP_SHOWWINDOW); SetWindowPos(GetDlgItem(hDlg,IDC_BUTTON_PAUSE),NULL,rect.left+25*2,rect.top,23,23,SWP_NOZORDER | SWP_SHOWWINDOW); SetWindowPos(GetDlgItem(hDlg,IDC_BUTTON_STOP),NULL,rect.left+25*3,rect.top,23,23,SWP_NOZORDER | SWP_SHOWWINDOW); SetWindowPos(GetDlgItem(hDlg,IDC_BUTTON_FFW),NULL,rect.left+25*4,rect.top,23,23,SWP_NOZORDER | SWP_SHOWWINDOW); */ //情報を表示 DispInfo(hDlg,lpcs); } break; case WM_TIMER: switch(wParam){ case REW_TIMER: SendMessage(hDlg,WM_COMMAND, MAKEWPARAM((UINT )IDC_BUTTON_REW,(UINT )BN_CLICKED), 0); break; case FFW_TIMER: SendMessage(hDlg,WM_COMMAND, MAKEWPARAM((UINT )IDC_BUTTON_FFW,(UINT )BN_CLICKED), 0); break; } break; // オーナー描画コントロール case WM_DRAWITEM: DrawControl(hDlg,(LPDRAWITEMSTRUCT )lParam); break; case WM_COMMAND: switch(LOWORD(wParam)){ case IDC_EDIT_NAM: case IDC_EDIT_ART: case IDC_EDIT_FILE: case IDC_EDIT_COP: case IDC_EDIT_CMT: if((HIWORD(wParam) == EN_CHANGE) && (IsWindowEnabled((HWND )lParam)) ) { PropSheet_Changed(GetParent(hDlg),hDlg); lpcs->m_bApply = TRUE; } break; case IDC_BUTTON_PLAY: { PlayWinamp(hDlg,lpcs->m_strSelectFile); break; } case IDC_BUTTON_PAUSE: { PauseWinamp(); break; } case IDC_BUTTON_STOP: { StopWinamp(); break; } case IDC_BUTTON_REW: { Rew5Winamp(); break; } case IDC_BUTTON_FFW: { Ffw5Winamp(); break; } case IDC_CHECK_AOT: if(IsDlgButtonChecked(hDlg,IDC_CHECK_AOT) == BST_CHECKED) { lpcs->m_bPropAOT = TRUE; SetWindowPos(GetParent(hDlg),HWND_TOPMOST,0,0,0,0, SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOSIZE); } else { lpcs->m_bPropAOT = FALSE; SetWindowPos(GetParent(hDlg),HWND_NOTOPMOST,0,0,0,0, SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOSIZE); } regSetDword(HKEY_CURRENT_USER,MP3INFP_REG_ENTRY,_T("PropAOT"),(DWORD )lpcs->m_bPropAOT); break; case IDC_SETUP: OpenConfigPage(hDlg,5); break; case IDC_HELPVIEW: lpcs->OpenHtmlHelp(hDlg,_T("extension.htm")); break; DLG_CLIPBOARD_MACRO(lpcs->m_strSelectFile); } break; // コンテキストメニュー case WM_CONTEXTMENU: DlgContextMenu(hDlg,lParam,lpcs->m_Vqf.IsEnable()); break; //状況依存ヘルプ case WM_HELP: OpenAboutDlg(hDlg); break; case WM_NOTIFY: switch(((NMHDR FAR *)lParam)->code){ // case PSN_SETACTIVE: // break; case PSN_APPLY: //保存 if(lpcs->m_bApply && lpcs->m_Vqf.IsEnable()) { //ファイルが書き込み可能か調べる if(GetFileAttributes(lpcs->m_strSelectFile) & (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY)) { //「このファイルは「読み込み専用」です」 AfxMessageBox(IDS_PAGE_THIS_READONLY,MB_ICONINFORMATION); //適用ボタンは引き続き有効 SetWindowLongPtr(hDlg,DWLP_MSGRESULT,PSNRET_INVALID); break; } lpcs->m_bApply = FALSE; CString strTmp; CWnd wnd; wnd.Attach(hDlg); wnd.GetDlgItemText(IDC_EDIT_NAM,strTmp); lpcs->m_Vqf.SetField('N','A','M','E',strTmp); wnd.GetDlgItemText(IDC_EDIT_ART,strTmp); lpcs->m_Vqf.SetField('A','U','T','H',strTmp); wnd.GetDlgItemText(IDC_EDIT_FILE,strTmp); lpcs->m_Vqf.SetField('F','I','L','E',strTmp); wnd.GetDlgItemText(IDC_EDIT_COP,strTmp); lpcs->m_Vqf.SetField('(','c',')',' ',strTmp); wnd.GetDlgItemText(IDC_EDIT_CMT,strTmp); lpcs->m_Vqf.SetField('C','O','M','T',strTmp); wnd.Detach(); //タイムスタンプを保存 lpcs->PushTimeStamp(lpcs->m_strSelectFile); DWORD dwRet = lpcs->m_Vqf.Save(lpcs->m_strSelectFile); if(dwRet != ERROR_SUCCESS) { lpcs->m_bApply = TRUE; if(dwRet == -1) //「ファイルを正しく更新できませんでした。」 AfxMessageBox(IDS_PAGE_BROKEN,MB_ICONINFORMATION); else //システムエラーを表示 errMessageBox(hDlg,dwRet); //適用ボタンは引き続き有効 SetWindowLongPtr(hDlg,DWLP_MSGRESULT,PSNRET_INVALID); break; } //タイムスタンプを復元 if(lpcs->m_bSaveTimeStamp) { lpcs->PopTimeStamp(lpcs->m_strSelectFile); } //情報を表示 DispInfo(hDlg,lpcs); SetWindowLongPtr(hDlg,DWLP_MSGRESULT,PSNRET_NOERROR); //シェルに変更を通知 SHChangeNotify(SHCNE_UPDATEITEM,SHCNF_PATH,lpcs->m_strSelectFile,NULL); } break; default: break; } break; default: return FALSE; } return TRUE; }
void CColorButtonCtrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { DrawControl(*pdc, (CRect&)rcBounds); }
// コントロールのオーナドロー void CButtonCx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { // 描画のCDC CDC *drawDC = CDC::FromHandle(lpDrawItemStruct->hDC); // 背景を取り込む。 LoadCtrlBg(drawDC); if(IsWindowEnabled()) { // ボタンが押されている? if(lpDrawItemStruct->itemState & ODS_SELECTED) { // 押されたボタンの描画 if(m_ImageCount >= 2) { DrawControl(drawDC, lpDrawItemStruct, m_CtrlBitmap, m_BgBitmap, 1);//2); } else { DrawControl(drawDC, lpDrawItemStruct, m_CtrlBitmap, m_BgBitmap, 0);//1); } } else { // ホバー状態? if(m_bHover) { // ホバー状態の描画。 if(m_ImageCount >= 2) { DrawControl(drawDC, lpDrawItemStruct, m_CtrlBitmap, m_BgBitmap, 1);//1); } else { DrawControl(drawDC, lpDrawItemStruct, m_CtrlBitmap, m_BgBitmap, 0);//1); } } // 選択中? else if(m_bSelected) { if(m_ImageCount >= 4) { DrawControl(drawDC, lpDrawItemStruct, m_CtrlBitmap, m_BgBitmap, 3);//1); } else { DrawControl(drawDC, lpDrawItemStruct, m_CtrlBitmap, m_BgBitmap, 1);//1); } } else { // フォーカスしている? if(m_bFocas) { // フォーカス状態の描画。 DrawControl(drawDC, lpDrawItemStruct, m_CtrlBitmap, m_BgBitmap, 0);//4); } else { // 通常状態の描画。 DrawControl(drawDC, lpDrawItemStruct, m_CtrlBitmap, m_BgBitmap, 0); } } } } else { // コントロールが無効 DrawControl(drawDC, lpDrawItemStruct, m_CtrlBitmap, m_BgBitmap, 0);//3); } }