void InitListViewColumns( HWND hListView, const LISTVIEW_COLUMN * Cols, int numColumns, long style ) { HKEY hKey; DWORD valLength; TCHAR colName[32]; RECT rc; // Get window sizes rc.left = -1; rc.top = -1; RegCreateKey(HKEY_CURRENT_USER, _T("Software\\Sysinternals\\ShareEnum"), &hKey ); valLength = sizeof(DWORD); RegQueryValueEx( hKey, _T("x"), NULL, NULL, (LPBYTE) &rc.left, &valLength ); RegQueryValueEx( hKey, _T("y"), NULL, NULL, (LPBYTE) &rc.top, &valLength ); RegQueryValueEx( hKey, _T("w"), NULL, NULL, (LPBYTE) &rc.right, &valLength ); RegQueryValueEx( hKey, _T("h"), NULL, NULL, (LPBYTE) &rc.bottom, &valLength ); if( rc.left != -1 && rc.top != -1 ) MoveWindow( GetParent( hListView), rc.left, rc.top, rc.right, rc.bottom, TRUE ); // Set listview styles ListView_SetExtendedListViewStyleEx( hListView, style, style ); // Create columns for ( int i = 0; i < numColumns; ++i ) { LVCOLUMN col = { 0 }; col.mask = LVCF_TEXT | LVCF_WIDTH; col.pszText = (TCHAR *)Cols[i].Title; col.cx = Cols[i].Width; _stprintf( colName, _T("Column%d"), i ); DWORD val = -1; valLength = sizeof(DWORD); RegQueryValueEx( hKey,colName, NULL, NULL, (LPBYTE) &val, &valLength ); if ( val < 600 ) col.cx = val; ListView_InsertColumn( hListView, i, &col ); } RegCloseKey( hKey ); HINSTANCE hInstance = GetModuleHandle(NULL); // Create image list (order corresponds to LISTVIEW_IMG_* enumeration) HIMAGELIST hImageList = ImageList_Create( GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLORDDB, 10, 30 ); UINT loadFlags = LR_DEFAULTCOLOR | LR_LOADTRANSPARENT | LR_SHARED; ImageList_SetBkColor( hImageList, GetSysColor(COLOR_WINDOW) ); ImageList_AddIcon( hImageList, (HICON) LoadImage( hInstance, MAKEINTRESOURCE(IDI_FILE), IMAGE_ICON, 16, 16, loadFlags)); ImageList_SetBkColor( hImageList, GetSysColor(COLOR_BTNFACE) ); ImageList_AddIcon( hImageList, (HICON) LoadImage( hInstance, MAKEINTRESOURCE(IDI_DOWNARROW), IMAGE_ICON, 16, 16, loadFlags ) ); ImageList_AddIcon( hImageList, (HICON) LoadImage( hInstance, MAKEINTRESOURCE(IDI_UPARROW), IMAGE_ICON, 16, 16, loadFlags ) ); ImageList_SetBkColor( hImageList, GetSysColor(COLOR_WINDOW) ); ImageList_AddIcon( hImageList, (HICON) LoadImage( hInstance, MAKEINTRESOURCE(IDI_FILEGOOD), IMAGE_ICON, 16, 16, loadFlags ) ); ImageList_AddIcon( hImageList, (HICON) LoadImage( hInstance, MAKEINTRESOURCE(IDI_FILEBAD), IMAGE_ICON, 16, 16, loadFlags ) ); ListView_SetImageList( hListView, hImageList, LVSIL_SMALL ); }
/***************************************************************************** * SIC_Initialize [internal] */ BOOL SIC_Initialize(void) { HICON hSm, hLg; int cx_small, cy_small; int cx_large, cy_large; cx_small = GetSystemMetrics(SM_CXSMICON); cy_small = GetSystemMetrics(SM_CYSMICON); cx_large = GetSystemMetrics(SM_CXICON); cy_large = GetSystemMetrics(SM_CYICON); TRACE("\n"); if (sic_hdpa) /* already initialized?*/ return TRUE; sic_hdpa = DPA_Create(16); if (!sic_hdpa) { return(FALSE); } ShellSmallIconList = ImageList_Create(cx_small,cy_small,ILC_COLOR32|ILC_MASK,0,0x20); ShellBigIconList = ImageList_Create(cx_large,cy_large,ILC_COLOR32|ILC_MASK,0,0x20); ImageList_SetBkColor(ShellSmallIconList, CLR_NONE); ImageList_SetBkColor(ShellBigIconList, CLR_NONE); /* Load the document icon, which is used as the default if an icon isn't found. */ hSm = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(IDI_SHELL_DOCUMENT), IMAGE_ICON, cx_small, cy_small, LR_SHARED); hLg = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(IDI_SHELL_DOCUMENT), IMAGE_ICON, cx_large, cy_large, LR_SHARED); if (!hSm || !hLg) { FIXME("Failed to load IDI_SHELL_DOCUMENT icon!\n"); return FALSE; } SIC_IconAppend (swShell32Name, IDI_SHELL_DOCUMENT-1, hSm, hLg, 0); SIC_IconAppend (swShell32Name, -IDI_SHELL_DOCUMENT, hSm, hLg, 0); TRACE("hIconSmall=%p hIconBig=%p\n",ShellSmallIconList, ShellBigIconList); return TRUE; }
static VOID NcAreaInitializeImageList( _Inout_ PEDIT_CONTEXT Context ) { HBITMAP bitmapActive = NULL; HBITMAP bitmapInactive = NULL; Context->ImageWidth = 23; Context->ImageHeight = 20; Context->ImageList = ImageList_Create(32, 32, ILC_COLOR32 | ILC_MASK, 0, 0); ImageList_SetBkColor(Context->ImageList, Context->BackgroundColorRef); ImageList_SetImageCount(Context->ImageList, 2); // Add the images to the imagelist if (bitmapActive = LoadImageFromResources(Context->ImageWidth, Context->ImageHeight, MAKEINTRESOURCE(IDB_SEARCH_ACTIVE))) { ImageList_Replace(Context->ImageList, 0, bitmapActive, NULL); DeleteObject(bitmapActive); } else { PhSetImageListBitmap(Context->ImageList, 0, (HINSTANCE)PluginInstance->DllBase, MAKEINTRESOURCE(IDB_SEARCH_ACTIVE_BMP)); } if (bitmapInactive = LoadImageFromResources(Context->ImageWidth, Context->ImageHeight, MAKEINTRESOURCE(IDB_SEARCH_INACTIVE))) { ImageList_Replace(Context->ImageList, 1, bitmapInactive, NULL); DeleteObject(bitmapInactive); } else { PhSetImageListBitmap(Context->ImageList, 1, (HINSTANCE)PluginInstance->DllBase, MAKEINTRESOURCE(IDB_SEARCH_INACTIVE_BMP)); } }
Color ImageList::background ( const Color& color ) { const Color previous = ImageList_SetBkColor( handle(), color.value() ); return (previous); }
void InitIML() { int i; HIMAGELIST hImageList = ImageList_Create(16, 16, ILC_COLOR32, 3, 0); HBITMAP hbIcons = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 48, 16, LR_DEFAULTCOLOR); ImageList_Add(hImageList, hbIcons, NULL); for (i = 0; i != 3; i++) stateicons[i] = ImageList_GetIcon(hImageList, i, ILD_NORMAL); SendMessage(hWnd_Tab, TCM_SETIMAGELIST, LVSIL_SMALL, (LPARAM)hImageList); hCfgTabiml = ImageList_Create(16, 16, ILC_COLOR32, 6, 0); hbIcons = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP3), IMAGE_BITMAP, 96, 16, LR_DEFAULTCOLOR); ImageList_AddMasked(hCfgTabiml, hbIcons, 0); /////listview images hImageList = ImageList_Create(28, 14, ILC_COLOR32 | ILC_MASK, 32, 0); ImageList_SetBkColor(hImageList, CLR_NONE); lvwIML = hImageList; hbIcons = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP2), IMAGE_BITMAP, 896, 14, /*ILC_MASK |*/ LR_DEFAULTCOLOR); //ImageList_Remove(hImageList, -1); //char asdf[32]; //sprintf(asdf, "%d", CLR_INVALID == -1); //MessageBox(0,asdf,0,0); ImageList_AddMasked(hImageList, hbIcons, 0); for (i = 0; i != NUM_BNICONS; i++) bnicons[i] = ImageList_GetIcon(hImageList, i, ILD_NORMAL); }
INT CTreeCtrlEx::AddIcon(HICON hIcon) { ASSERT(hIcon); if(m_hImageList == 0) { m_hImageList = ImageList_Create(16, 16, ILC_COLOR16, 10, 256); ImageList_SetBkColor(m_hImageList, GetSysColor(COLOR_WINDOW)); PostMessage(TVM_SETIMAGELIST, 0, (LPARAM)m_hImageList); } return ImageList_AddIcon(m_hImageList, hIcon); }
static VALUE swinilist_setbkcolor(VALUE obj, VALUE bkc){ struct SwinImagelist* si; COLORREF c; Data_Get_Struct(obj,struct SwinImagelist,si); SWIN_IMAGELISTALIVECHECK(si) if(NIL_P(bkc)) c=CLR_NONE; else c = (COLORREF)NUM2UINT(bkc); c = ImageList_SetBkColor(si->himagelist,c); return obj; }
/***************************************************************************** * SIC_Initialize [internal] * * NOTES * hack to load the resources from the shell32.dll under a different dll name * will be removed when the resource-compiler is ready */ BOOL SIC_Initialize(void) { HICON hSm, hLg; UINT index; TRACE("\n"); if (sic_hdpa) /* already initialized?*/ return TRUE; sic_hdpa = pDPA_Create(16); if (!sic_hdpa) { return(FALSE); } ShellSmallIconList = ImageList_Create(16,16,ILC_COLORDDB | ILC_MASK,0,0x20); ShellBigIconList = ImageList_Create(32,32,ILC_COLORDDB | ILC_MASK,0,0x20); ImageList_SetBkColor(ShellSmallIconList, GetSysColor(COLOR_WINDOW)); ImageList_SetBkColor(ShellBigIconList, GetSysColor(COLOR_WINDOW)); for (index=1; index<39; index++) { hSm = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(index), IMAGE_ICON, 16, 16,LR_SHARED); hLg = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(index), IMAGE_ICON, 32, 32,LR_SHARED); if(!hSm) { hSm = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(0), IMAGE_ICON, 16, 16,LR_SHARED); hLg = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(0), IMAGE_ICON, 32, 32,LR_SHARED); } SIC_IconAppend ("shell32.dll", index, hSm, hLg); } TRACE("hIconSmall=%p hIconBig=%p\n",ShellSmallIconList, ShellBigIconList); return TRUE; }
/* * create_imagelist - イメージリストの作成 */ static HIMAGELIST create_imagelist(const HINSTANCE hInstance) { HIMAGELIST icon_list; icon_list = ImageList_Create(SICONSIZE, SICONSIZE, ILC_COLOR16 | ILC_MASK, 0, 0); ImageList_SetBkColor(icon_list, GetSysColor(COLOR_WINDOW)); imagelist_icon_add(hInstance, icon_list, IDI_ICON_REGIST); // フォルダ imagelist_fileicon_add(icon_list, work_path, 0); imagelist_fileicon_add(icon_list, work_path, SHGFI_OPENICON); return icon_list; }
void ShellBrowser::invalidate_cache() { (void)TreeView_SetImageList(_left_hwnd, _himl_old, TVSIL_NORMAL); ImageList_Destroy(_himl); _himl = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK|ILC_COLOR24, 2, 0); ImageList_SetBkColor(_himl, GetSysColor(COLOR_WINDOW)); _himl_old = TreeView_SetImageList(_left_hwnd, _himl, TVSIL_NORMAL); for(map<int,int>::const_iterator it=_image_map.begin(); it!=_image_map.end(); ++it) g_Globals._icon_cache.free_icon(it->first); _image_map.clear(); }
void Sample_Init ( void ) // All added init code { RECT rc; InitCommonControls(); // This MUST be called once per instance // to register the TreeView class. hCoasterImageList = ImageList_Create ( 32, 32, TRUE, 5, 1 ); iImageWood = ImageList_AddIcon ( hCoasterImageList, LoadIcon ( hInst, "WOOD" )); iImageSteel = ImageList_AddIcon ( hCoasterImageList, LoadIcon ( hInst, "STEEL" )); iImageOH = ImageList_AddIcon ( hCoasterImageList, LoadIcon ( hInst, "OH" )); iImageNY = ImageList_AddIcon ( hCoasterImageList, LoadIcon ( hInst, "NY" )); iImageCA = ImageList_AddIcon ( hCoasterImageList, LoadIcon ( hInst, "CA" )); iImageOH_OPEN= ImageList_AddIcon ( hCoasterImageList, LoadIcon ( hInst, "OH_OPEN")); iImageNY_OPEN= ImageList_AddIcon ( hCoasterImageList, LoadIcon ( hInst, "NY_OPEN")); iImageCA_OPEN= ImageList_AddIcon ( hCoasterImageList, LoadIcon ( hInst, "CA_OPEN")); iImageRider1 = ImageList_AddIcon ( hCoasterImageList, LoadIcon ( hInst, "RIDER1" )); iImageRider2 = ImageList_AddIcon ( hCoasterImageList, LoadIcon ( hInst, "RIDER2" )); GetClientRect ( ghWnd, &rc ); hWndTreeView = CreateWindow ( WC_TREEVIEW, "", WS_VISIBLE | WS_CHILD | WS_BORDER | TVS_HASLINES | TVS_EDITLABELS, 0, 0, rc.right, rc.bottom, ghWnd, (HMENU)NULL, hInst, NULL ); if (hWndTreeView) { TreeView_SetImageList ( hWndTreeView, hCoasterImageList, 0 ); ImageList_SetBkColor ( hCoasterImageList, GetSysColor ( COLOR_WINDOW )); FillTreeView ( hWndTreeView ); } }
// Draws the given image on a dc at the specified position. // If 'solidBackground' is true, Draw sets the image list background // colour to the background colour of the wxDC, to speed up // drawing by eliminating masked drawing where possible. bool wxImageList::Draw(int index, wxDC& dc, int x, int y, int flags, bool solidBackground) { wxDCImpl *impl = dc.GetImpl(); wxMSWDCImpl *msw_impl = wxDynamicCast( impl, wxMSWDCImpl ); if (!msw_impl) return false; HDC hDC = GetHdcOf(*msw_impl); wxCHECK_MSG( hDC, false, wxT("invalid wxDC in wxImageList::Draw") ); COLORREF clr = CLR_NONE; // transparent by default if ( solidBackground ) { const wxBrush& brush = dc.GetBackground(); if ( brush.IsOk() ) { clr = wxColourToRGB(brush.GetColour()); } } ImageList_SetBkColor(GetHImageList(), clr); UINT style = 0; if ( flags & wxIMAGELIST_DRAW_NORMAL ) style |= ILD_NORMAL; if ( flags & wxIMAGELIST_DRAW_TRANSPARENT ) style |= ILD_TRANSPARENT; if ( flags & wxIMAGELIST_DRAW_SELECTED ) style |= ILD_SELECTED; if ( flags & wxIMAGELIST_DRAW_FOCUSED ) style |= ILD_FOCUS; bool ok = ImageList_Draw(GetHImageList(), index, hDC, x, y, style) != 0; if ( !ok ) { wxLogLastError(wxT("ImageList_Draw()")); } return ok; }
//---------------------------------------------------------------------------------------------- // DRAW SCROBS //---------------------------------------------------------------------------------------------- bool cScrobMgrIm :: draw_scrobs ( HDC hdc ) { for ( cScrobIm * s = ScrobList.pHead; s; s = s->pNext ) // draw forwards, hit-test backwards { int iIndex = s->calc_image_index (); s->iImageIndex = iIndex; if ( s != pHitScrob ) { /* DEFAULT HERE */ ImageList_SetBkColor ( s->hIL, CLR_DEFAULT ); /* TRANSPARENT HERE */ BOOL iResult = ImageList_Draw ( s->hIL, iIndex, hdc, s->Pos.x, s->Pos.y, ILD_TRANSPARENT ); UNREFERENCED_PARAMETER(iResult); #if 0 IMAGELISTDRAWPARAMS ilp; ZeroMemory ( &ilp, sizeof(ilp) ); ilp.cbSize = sizeof(ilp); ilp.himl = s->hIL; ilp.i = iIndex; ilp.hdcDst = hdc; ilp.x = s->Pos.x; ilp.y = s->Pos.y; ilp.xBitmap = 0; ilp.yBitmap = 0; ilp.rgbBk = CLR_NONE; ilp.rgbFg = CLR_NONE; ilp.fStyle = ILD_ROP; // ILS_ALPHA; ilp.dwRop = SRCCOPY; ilp.fState = 0; ilp.Frame = 0; ilp.crEffect = 0; // 255; ImageList_DrawIndirect ( &ilp ); #endif } } return true; }
ShellBrowserChild::ShellBrowserChild(HWND hwnd, HWND left_hwnd, WindowHandle& right_hwnd, ShellPathInfo& create_info, CtxMenuInterfaces& cm_ifs) : _hwnd(hwnd), _hWndFrame(hwnd), _left_hwnd(left_hwnd), _right_hwnd(right_hwnd), _create_info(create_info), _cm_ifs(cm_ifs) { _pShellView = NULL; _pDropTarget = NULL; _last_sel = 0; // SDI integration _split_pos = DEFAULT_SPLIT_POS; _last_split = DEFAULT_SPLIT_POS; _cur_dir = NULL; _himl = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK|ILC_COLOR24, 2, 0); ImageList_SetBkColor(_himl, GetSysColor(COLOR_WINDOW)); }
ShellBrowser::ShellBrowser(HWND hwnd, HWND hwndFrame, HWND left_hwnd, WindowHandle& right_hwnd, ShellPathInfo& create_info, BrowserCallback* cb, CtxMenuInterfaces& cm_ifs) #ifndef __MINGW32__ // IShellFolderViewCB missing in MinGW (as of 25.09.2005) : super(IID_IShellFolderViewCB), #else : #endif _hwnd(hwnd), _hwndFrame(hwndFrame), _left_hwnd(left_hwnd), _right_hwnd(right_hwnd), _create_info(create_info), _callback(cb), _cm_ifs(cm_ifs) { _pShellView = NULL; _pDropTarget = NULL; _last_sel = 0; _cur_dir = NULL; _himl = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK|ILC_COLOR24, 2, 0); ImageList_SetBkColor(_himl, GetSysColor(COLOR_WINDOW)); }
BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static LPNMTTDISPINFO lpnmtdi; static PAINTSTRUCT ps; static RECT windowRect; static HDC hdc; switch (message) { case WM_DWMCOMPOSITIONCHANGED: ActivateGlass(hDlg); InvalidateRect(hDlg, NULL, true); break; case WM_ACTIVATE: ActivateGlass(hDlg); break; case WM_PAINT: hdc = OnPaint(hDlg, windowRect, hdc, ps, IDS_APP_TITLE); break; case WM_INITDIALOG: hInstance = (HINSTANCE) GetWindowLong (hDlg, GWL_HINSTANCE); // Set Icon hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON)); hIconSally = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_SALLY)); hIconWindow = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_MENU_WINDOW)); hIconConfig = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_MENU_CONFIG)); hIconApplication = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_PLUGIN_APPLICATION)); hIconLanguage = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_PLUGIN_LANGUAGE)); hIconTheme = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_PLUGIN_THEME)); hIconKeyboard = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_PLUGIN_KEYBORD)); SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM) hIcon); SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM) hIcon); // Menu himl = ImageList_Create(16, 16, ILC_COLOR32, 6, 0); ImageList_SetBkColor(himl, CLR_NONE); ImageList_AddIcon(himl, hIconWindow); ImageList_AddIcon(himl, hIconConfig); ImageList_AddIcon(himl, hIconApplication); ImageList_AddIcon(himl, hIconTheme); ImageList_AddIcon(himl, hIconLanguage); ImageList_AddIcon(himl, hIconKeyboard); hMenuView.SetHWND(GetDlgItem (hDlg, IDC_LIST_MENU)); hMenuView.SetImageList(himl, LVSIL_SMALL); ListView_SetExtendedListViewStyle(hMenuView.GetHwnd(), LVS_EX_FULLROWSELECT | WS_EX_LTRREADING); hMenuView.InitListViewColumns(0, "Settings", 190); hMenuView.AddItem(0, 0, GetLocalisation(IDS_MENU_CONFIG, hInstance), 1, 0); hMenuView.AddItem(1, 0, GetLocalisation(IDS_MENU_APPLICATIONS, hInstance), 2, 2); hMenuView.AddItem(2, 0, GetLocalisation(IDS_MENU_THEMES, hInstance), 3, 3); hMenuView.AddItem(3, 0, GetLocalisation(IDS_MENU_LANGUAGES, hInstance), 4, 4); hMenuView.AddItem(4, 0, GetLocalisation(IDS_MENU_KEYBOARDS, hInstance), 5, 5); // Tabs hWndTabConfig = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_CONFIG), hDlg, DlgProcConfig); ShowWindow(hWndTabConfig, SW_HIDE); hWndTabPlugins = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_PLUGINS), hDlg, DlgProcPlugins); ShowWindow(hWndTabPlugins, SW_HIDE); hWndTabThemes = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_THEMES), hDlg, DlgProcThemes); ShowWindow(hWndTabThemes, SW_HIDE); hWndTabLanguages = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_LANGUAGES), hDlg, DlgProcLanguages); ShowWindow(hWndTabLanguages, SW_HIDE); hWndTabKeyboards = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_KEYBOARDS), hDlg, DlgProcKeyboards); ShowWindow(hWndTabKeyboards, SW_HIDE); SelectMenu(0); hMenuView.SelectItem(0); break; case WM_NOTIFY: lpnmtdi = (LPNMTTDISPINFO) lParam; if (lpnmtdi->hdr.hwndFrom == hMenuView.GetHwnd()) { switch(lpnmtdi->hdr.code) { case LVN_ITEMCHANGED: LPNMLISTVIEW li; li = (LPNMLISTVIEW)lParam; if (li->uNewState != 3) break; case NM_CLICK: case NM_RCLICK: case NM_DBLCLK: case NM_RDBLCLK: SelectMenu(); break; } } break; case WM_SIZE: RECT windowRect; RECT menuViewRect; RECT tempViewRect; GetClientRect(hDlg, &windowRect); GetClientRect(hMenuView.GetHwnd(), &menuViewRect); MoveWindow(hMenuView.GetHwnd(), 7, TOP_BORDER_HEIGHT + 7, CONFIG_MENU_WIDTH - 7, windowRect.bottom - TOP_BORDER_HEIGHT - 14, TRUE); GetClientRect(hWndTabConfig, &tempViewRect); MoveWindow(hWndTabConfig, ((windowRect.right - CONFIG_MENU_WIDTH - tempViewRect.right) / 2) + CONFIG_MENU_WIDTH, ((windowRect.bottom - TOP_BORDER_HEIGHT - tempViewRect.bottom) / 2) + TOP_BORDER_HEIGHT, tempViewRect.right, tempViewRect.bottom, TRUE); MoveWindow(hWndTabPlugins, CONFIG_MENU_WIDTH, TOP_BORDER_HEIGHT, windowRect.right - CONFIG_MENU_WIDTH, windowRect.bottom - TOP_BORDER_HEIGHT, TRUE); MoveWindow(hWndTabThemes, CONFIG_MENU_WIDTH, TOP_BORDER_HEIGHT, windowRect.right - CONFIG_MENU_WIDTH, windowRect.bottom - TOP_BORDER_HEIGHT, TRUE); MoveWindow(hWndTabLanguages, CONFIG_MENU_WIDTH, TOP_BORDER_HEIGHT, windowRect.right - CONFIG_MENU_WIDTH, windowRect.bottom - TOP_BORDER_HEIGHT, TRUE); MoveWindow(hWndTabKeyboards, CONFIG_MENU_WIDTH, TOP_BORDER_HEIGHT, windowRect.right - CONFIG_MENU_WIDTH, windowRect.bottom - TOP_BORDER_HEIGHT, TRUE); SendMessage(hWndTabPlugins, WM_COMMAND, WM_SIZE, NULL); SendMessage(hWndTabThemes, WM_COMMAND, WM_SIZE, NULL); SendMessage(hWndTabLanguages, WM_COMMAND, WM_SIZE, NULL); SendMessage(hWndTabKeyboards, WM_COMMAND, WM_SIZE, NULL); break; case WM_COMMAND: switch (LOWORD (wParam)) { case IDCANCEL: EndDialog (hDlg, 0); return TRUE; } break; case WM_GETMINMAXINFO: LPMINMAXINFO(lParam)->ptMinTrackSize.x = 750; // kleinste Breite LPMINMAXINFO(lParam)->ptMinTrackSize.y = 520; // kleinste Höhe return 0; case WM_NCHITTEST: LRESULT lresult; lresult = DefWindowProc(hDlg, WM_NCHITTEST, wParam, lParam); if (lresult == HTCLIENT) { GetWindowRect(hDlg, &windowRect); int yPos; yPos = GET_Y_LPARAM(lParam); yPos = yPos - windowRect.top - GetSystemMetrics(SM_CYSIZE) - GetSystemMetrics(SM_CYBORDER); if (yPos <= TOP_BORDER_HEIGHT) lresult = HTCAPTION; } SetWindowLong( hDlg, DWL_MSGRESULT, lresult ); return (TRUE); } return FALSE ; }
//------------------------------------------------------------------------------ //init GUI configuration //------------------------------------------------------------------------------ DWORD WINAPI InitGUIConfig(LPVOID lParam) { if (GetFileAttributes(SQLITE_LOCAL_BDD) == INVALID_FILE_ATTRIBUTES)ExtractSQLITE_DB(); BOOL reinit = (BOOL)lParam; if (reinit) { //clean sqlite3_close(db_scan); } //hidden DOS form #ifndef DEV_DEBUG_MODE hideDOSForm(); #endif //global init B_AUTOSEARCH = FALSE; h_AUTOSEARCH = NULL; search_rootkit = FALSE; search_rootkit_process_tool= FALSE; ExportStart = FALSE; TRI_RESULT_VIEW = FALSE; TRI_PROCESS_VIEW = FALSE; TRI_REG_VIEW = FALSE; column_tri = -1; NB_TESTS = 0; pos_search = 0; pos_search_reg = 0; current_OS[0] = 0; current_OS_BE_64b = FALSE; nb_current_columns = 0; current_lang_id = 1; follow_sniff = FALSE; reg_file_start_process = FALSE; AVIRUSTTAL = FALSE; VIRUSTTAL = FALSE; SQLITE_FULL_SPEED = TRUE; B_SCREENSHOT = FALSE; B_SCREENSHOT_START = FALSE; enable_magic = FALSE; enable_remote = FALSE; DISABLE_GRID_LV_ALL = FALSE; h_Hexa = 0; last_search_mode = DEFAULT_MODE_SEARCH_HX; last_pos_hex_search = 0; use_proxy_advanced_settings = 0; use_other_proxy = 0; if (!reinit) { Trame_buffer = malloc(100*sizeof(TRAME_BUFFER)); hMutex_TRAME_BUFFER = CreateMutex(0,FALSE,0); } //open sqlite file if (sqlite3_open(SQLITE_LOCAL_BDD, &db_scan) != SQLITE_OK) { char local_path[MAX_PATH]="",file[MAX_PATH]; GetLocalPath(local_path, MAX_PATH); snprintf(file,MAX_PATH,"%s\\%s",local_path,DEFAULT_TM_SQLITE_FILE); //if tmp sqlite file exist free !! //for bug case if (GetFileAttributes(file) != INVALID_FILE_ATTRIBUTES) { DeleteFile(file); } sqlite3_open(SQLITE_LOCAL_BDD, &db_scan); } if (!reinit) { //Init language cb HANDLE H_ImagList = ImageList_Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON), ILC_COLOR32 , /*nb icones*/2, 0); ImageList_AddIcon(H_ImagList,(HICON)LoadIcon((HINSTANCE) hinst, MAKEINTRESOURCE(ICON_LANGUAGE_EN))); ImageList_AddIcon(H_ImagList,(HICON)LoadIcon((HINSTANCE) hinst, MAKEINTRESOURCE(ICON_LANGUAGE_FR))); ImageList_SetBkColor(H_ImagList, GetSysColor(COLOR_WINDOW)); SendMessage(hCombo_lang,CBEM_SETIMAGELIST,0,(LPARAM)H_ImagList); } //init la combo box des langues SendMessage(hCombo_lang, CB_RESETCONTENT,0,0); FORMAT_CALBAK_READ_INFO fcri; fcri.type = TYPE_SQLITE_FLAG_LANG_INIT; SQLITE_LireData(&fcri, SQLITE_LOCAL_BDD); SendMessage(hCombo_lang, CB_SETCURSEL,0,0);//default select English //list of sessions !!! SendMessage(hCombo_session, CB_RESETCONTENT,0,0); nb_session = 0; fcri.type = TYPE_SQLITE_FLAG_SESSIONS_INIT; SQLITE_LireData(&fcri, SQLITE_LOCAL_BDD); SendMessage(hCombo_session, CB_SETCURSEL,0,0); //icons for tests if (!reinit) { H_ImagList_icon = ImageList_Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON), ILC_COLOR32 , /*nb icon*/2, 0); ImageList_AddIcon(H_ImagList_icon,(HICON)LoadIcon((HINSTANCE) GetModuleHandle(0), MAKEINTRESOURCE(ICON_FOLDER))); ImageList_AddIcon(H_ImagList_icon,(HICON)LoadIcon((HINSTANCE) GetModuleHandle(0), MAKEINTRESOURCE(ICON_FILE))); ImageList_SetBkColor(H_ImagList_icon, GetSysColor(COLOR_WINDOW)); } //all others datas InitGlobalConfig(0, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE); //init help messages AddtoToolTip(htoolbar, htooltip, hinst, 2, NULL, cps[TXT_TOOLTIP_NEW_SESSION].c); AddtoToolTip(htoolbar, htooltip, hinst, 5, NULL, cps[TXT_TOOLTIP_SEARCH].c); //init load of externes tools or actions : LoadTools(); if (WINE_OS) { EnableMenuItem(GetMenu(h_main),IDM_TOOLS_PROCESS,MF_BYCOMMAND|MF_GRAYED); } CheckMenuItem(GetMenu(h_main),BT_SQLITE_FULL_SPEED,MF_BYCOMMAND|MF_CHECKED); sqlite3_exec(db_scan,"PRAGMA journal_mode = OFF;", NULL, NULL, NULL); //init dd menu to copy only driver in disk format char letter; char tmp[] = "C:\\"; for (letter='Z';letter>='A';letter--) { tmp[0] = letter; switch(GetDriveType(tmp)) { case DRIVE_FIXED: case DRIVE_REMOVABLE:break; default: RemoveMenu(GetSubMenu(GetSubMenu(GetMenu(h_main),2),5),letter-'A',MF_BYPOSITION); //-E au lieu de -A car 5 menus en + break; } } return 0; }
BOOL _ShellImageListInit(int cxIcon, int cyIcon, int cxSmIcon, int cySmIcon, UINT flags, BOOL fRestore) { int i; TCHAR szModule[MAX_PATH]; HKEY hkeyIcons; ASSERTCRITICAL; if (himlIcons == NULL) { himlIcons = ImageList_Create(cxIcon, cyIcon, ILC_MASK|ILC_SHARED|flags, 0, 32); } else { ImageList_Remove(himlIcons, -1); ImageList_SetIconSize(himlIcons, cxIcon, cyIcon); } if (himlIcons == NULL) { return FALSE; } if (himlIconsSmall == NULL) { himlIconsSmall = ImageList_Create(cxSmIcon, cySmIcon, ILC_MASK|ILC_SHARED|flags, 0, 32); } else { ImageList_Remove(himlIconsSmall, -1); ImageList_SetIconSize(himlIconsSmall, cxSmIcon, cySmIcon); } if (himlIconsSmall == NULL) { ImageList_Destroy(himlIcons); himlIcons = NULL; return FALSE; } // set the bk colors to COLOR_WINDOW since this is what will // be used most of the time as the bk for these lists (cabinet, tray) // this avoids having to do ROPs when drawing, thus making it fast ImageList_SetBkColor(himlIcons, GetSysColor(COLOR_WINDOW)); ImageList_SetBkColor(himlIconsSmall, GetSysColor(COLOR_WINDOW)); GetModuleFileName(HINST_THISDLL, szModule, ARRAYSIZE(szModule)); // WARNING: this code assumes that these icons are the first in // our RC file and are in this order and these indexes correspond // to the II_ constants in shell.h. hkeyIcons = SHGetExplorerSubHkey(HKEY_LOCAL_MACHINE, g_szShellIcons, FALSE); for (i = 0; i < ARRAYSIZE(c_SystemImageListIndexes); i++) { HICON hIcon=NULL; HICON hSmallIcon=NULL; int iIndex; // // Load all of the icons with fRestore == TRUE, or only the overlays // if fRestore == FALSE. // if (fRestore || (i >= II_OVERLAYFIRST && i <= II_OVERLAYLAST)) { // // check to see if icon is overridden in the registry // if (hkeyIcons) { TCHAR val[10]; TCHAR ach[MAX_PATH]; DWORD cb=MAX_PATH; int iIcon; wsprintf(val, g_szD, i); ach[0] = 0; RegQueryValueEx(hkeyIcons, val, NULL, NULL, (LPBYTE)ach, &cb); if (ach[0]) { HICON hIcons[2] = {0, 0}; iIcon = PathParseIconLocation(ach); ExtractIcons(ach, iIcon, MAKELONG(g_cxIcon,g_cxSmIcon), MAKELONG(g_cyIcon,g_cySmIcon), hIcons, NULL, 2, g_lrFlags); hIcon = hIcons[0]; hSmallIcon = hIcons[1]; if (hIcon) { DebugMsg(DM_TRACE, TEXT("ShellImageListInit: Got default icon #%d from registry: %s,%d"), i, ach, iIcon); } } } if (hIcon == NULL) { hIcon = LoadImage(HINST_THISDLL, MAKEINTRESOURCE(c_SystemImageListIndexes[i]), IMAGE_ICON, cxIcon, cyIcon, g_lrFlags); hSmallIcon = LoadImage(HINST_THISDLL, MAKEINTRESOURCE(c_SystemImageListIndexes[i]), IMAGE_ICON, cxSmIcon, cySmIcon, g_lrFlags); } if (hIcon) { iIndex = SHAddIconsToCache(hIcon, hSmallIcon, szModule, i, 0); Assert(iIndex == i); // assume index if (i >= II_OVERLAYFIRST && i <= II_OVERLAYLAST) { ImageList_SetOverlayImage(himlIcons, iIndex, i - II_OVERLAYFIRST + 1); ImageList_SetOverlayImage(himlIconsSmall, iIndex, i - II_OVERLAYFIRST + 1); } } } } if (hkeyIcons) RegCloseKey(hkeyIcons); return TRUE; }
BOOL CMainWindow::OnCreate(__in HINSTANCE hInstance) { // window caption SetWindowTextW(m_hDialog, pStrings->Get(IDS_XPI).c_str()); // XPIGUI m_pXPIGUI = new XPIGUI; ZeroMemory(m_pXPIGUI, sizeof(XPIGUI)); // XPIGUI - instance m_pXPIGUI->hInstance = hInstance; // XPIGUI - application icon m_pXPIGUI->hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(IDI_XPI)); if (m_pXPIGUI->hIcon != NULL) SendMessageW(m_hDialog, WM_SETICON, ICON_BIG, (LPARAM)m_pXPIGUI->hIcon); #ifdef _DEBUG else pLog->Write(LOG_WF_ERROR | LOG_WF_ECHODEBUG, L"Couldn't load XPI icon, continuing anyway. [LE=0x%08X]", GetLastError()); #endif // XPIGUI - small application icon m_pXPIGUI->hIconSmall = LoadIconW(hInstance, MAKEINTRESOURCEW(IDI_XPI_SMALL)); if (m_pXPIGUI->hIconSmall != NULL) SendMessageW(m_hDialog, WM_SETICON, ICON_SMALL, (LPARAM)m_pXPIGUI->hIconSmall); #ifdef _DEBUG else pLog->Write(LOG_WF_ERROR | LOG_WF_ECHODEBUG, L"Couldn't load small XPI icon, continuing anyway. [LE=0x%08X]", GetLastError()); #endif // XPIGUI - load Consolas from resource m_pXPIGUI->hMemFont = AddFontFromResource(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDR_CONSOLAS)); if (m_pXPIGUI->hMemFont == NULL) { } // XPIGUI - Consolas font handle m_pXPIGUI->hFont = CreateFontW(14, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_CHARACTER_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, L"Consolas"); if (m_pXPIGUI->hFont == NULL) { #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't create log font, aborting. [LE=0x%08X]", GetLastError()); #endif NotifyErrorUI(); return FALSE; } // XPIGUI - direction image list do { m_pXPIGUI->hImageList = ImageList_Create(16, 16, ILC_COLOR24 | ILC_MASK, 4, 0); ImageList_SetBkColor(m_pXPIGUI->hImageList, CLR_NONE); if (m_pXPIGUI->hImageList != NULL) { HBITMAP hBitmap = LoadBitmapW(m_pXPIGUI->hInstance, MAKEINTRESOURCEW(IDB_DIRECTIONS)); if (hBitmap != NULL) { if (ImageList_AddMasked(m_pXPIGUI->hImageList, hBitmap, RGB(255, 0, 255)) != -1) break; DeleteObject((HGDIOBJ)hBitmap); } } #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't create packet direction icons image-list, aborting."); #endif NotifyErrorUI(); return FALSE; } while (0); // XPIGUI - injection icons m_pXPIGUI->hInjectOut = (HICON)LoadImageW(m_pXPIGUI->hInstance, MAKEINTRESOURCEW(IDI_INJECT_OUT), IMAGE_ICON, 16, 16, 0); if (m_pXPIGUI->hInjectOut == NULL) { #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't load inject OUT icon, aborting. [LE=0x%08X]", GetLastError()); #endif NotifyErrorUI(); return FALSE; } m_pXPIGUI->hInjectIn = (HICON)LoadImageW(m_pXPIGUI->hInstance, MAKEINTRESOURCEW(IDI_INJECT_IN), IMAGE_ICON, 16, 16, 0); if (m_pXPIGUI->hInjectIn == NULL) { #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't load inject IN icon, aborting. [LE=0x%08X]", GetLastError()); #endif NotifyErrorUI(); return FALSE; } // XPIGUI - pause/resume icons m_pXPIGUI->hPauseIcon = (HICON)LoadImageW(m_pXPIGUI->hInstance, MAKEINTRESOURCEW(IDI_PAUSE), IMAGE_ICON, 16, 16, 0); if (m_pXPIGUI->hPauseIcon == NULL) { #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't load pause icon, aborting. [LE=0x%08X]", GetLastError()); #endif NotifyErrorUI(); return FALSE; } Static_SetIcon(GetDlgItem(m_hDialog, IDC_PAUSELOGGING), m_pXPIGUI->hPauseIcon); m_pXPIGUI->hResumeIcon = (HICON)LoadImageW(m_pXPIGUI->hInstance, MAKEINTRESOURCEW(IDI_RESUME), IMAGE_ICON, 16, 16, 0); if (m_pXPIGUI->hResumeIcon == NULL) { #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't load resume icon, aborting. [LE=0x%08X]", GetLastError()); #endif NotifyErrorUI(); return FALSE; } RECT rcClient; GetClientRect(m_hDialog, &rcClient); SetWindowPos(GetDlgItem(m_hDialog, IDC_PAUSELOGGING), NULL, rcClient.right - rcClient.left - UI_PAUSE_WIDTH - UI_PAUSE_PADDING, UI_PAUSE_PADDING, UI_PAUSE_WIDTH, UI_PAUSE_HEIGHT, 0); // XPIGUI - clear packets icon m_pXPIGUI->hClearIcon = (HICON)LoadImageW(m_pXPIGUI->hInstance, MAKEINTRESOURCEW(IDI_CLEAR), IMAGE_ICON, 16, 16, 0); if (m_pXPIGUI->hClearIcon == NULL) { #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't load clear icon, aborting. [LE=0x%08X]", GetLastError()); #endif NotifyErrorUI(); return FALSE; } Static_SetIcon(GetDlgItem(m_hDialog, IDC_CLEAR), m_pXPIGUI->hClearIcon); SetWindowPos(GetDlgItem(m_hDialog, IDC_CLEAR), NULL, rcClient.right - rcClient.left - UI_CLEAR_WIDTH - (UI_CLEAR_PADDING * 2) - UI_PAUSE_WIDTH, UI_CLEAR_PADDING, UI_CLEAR_WIDTH, UI_CLEAR_HEIGHT, 0); // XPIGUI - settings image list do { m_pXPIGUI->hSettingsImageList = ImageList_Create(16, 16, ILC_COLOR24 | ILC_MASK, 4, 0); ImageList_SetBkColor(m_pXPIGUI->hSettingsImageList, CLR_NONE); if (m_pXPIGUI->hSettingsImageList != NULL) { HBITMAP hBitmap = LoadBitmapW(m_pXPIGUI->hInstance, MAKEINTRESOURCEW(IDB_PACKET_STATES)); if (hBitmap != NULL) { if (ImageList_AddMasked(m_pXPIGUI->hSettingsImageList, hBitmap, RGB(255, 0, 255)) != -1) break; DeleteObject((HGDIOBJ)hBitmap); } } #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't create settings image-list, aborting."); #endif NotifyErrorUI(); return FALSE; } while (0); // XPIGUI - color icons for (INT i = 0; i < _countof(m_pXPIGUI->hColorIcon); i++) { HICON hTempIcon = LoadIcon(m_pXPIGUI->hInstance, MAKEINTRESOURCEW(g_XPIColors[i].wIcon)); m_pXPIGUI->hColorIcon[i] = MenuBitmapFromIcon(m_hDialog, hTempIcon, 16, 16); if (m_pXPIGUI->hColorIcon[i] == NULL) { #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't load color icon #%d, aborting. [LE=0x%08X]", i, GetLastError()); #endif NotifyErrorUI(); return FALSE; } DestroyIcon(hTempIcon); } // XPIGUI - formatted image list do { m_pXPIGUI->hFormattedImageList = ImageList_Create(16, 16, ILC_COLOR24 | ILC_MASK, 4, 0); if (m_pXPIGUI->hFormattedImageList != NULL) { ImageList_SetBkColor(m_pXPIGUI->hFormattedImageList, CLR_NONE); HBITMAP hBitmap = LoadBitmapW(m_pXPIGUI->hInstance, MAKEINTRESOURCEW(IDB_FORMATTED_LIST)); if (hBitmap != NULL) { if (ImageList_AddMasked(m_pXPIGUI->hFormattedImageList, hBitmap, RGB(255, 0, 255)) != -1) break; DeleteObject((HGDIOBJ)hBitmap); } } #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't create formatted image-list, aborting."); #endif NotifyErrorUI(); return FALSE; } while (0); // XPIGUI - stop icon m_pXPIGUI->hStop = (HICON)LoadImageW(m_pXPIGUI->hInstance, MAKEINTRESOURCEW(IDI_STOP), IMAGE_ICON, 16, 16, 0); if (m_pXPIGUI->hStop == NULL) { #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't load stop icon, aborting. [LE=0x%08X]", GetLastError()); #endif NotifyErrorUI(); return FALSE; } // shell notify icon ZeroMemory(&m_NotifyIconData, sizeof(m_NotifyIconData)); m_NotifyIconData.cbSize = sizeof(m_NotifyIconData); m_NotifyIconData.hWnd = m_hDialog; m_NotifyIconData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; m_NotifyIconData.hIcon = m_pXPIGUI->hIconSmall; m_NotifyIconData.uCallbackMessage = WM_SHELLNOTIFY; if (FAILED(StringCchCopyW(m_NotifyIconData.szTip, _countof(m_NotifyIconData.szTip), pStrings->Get(IDS_XPI).c_str()))) m_NotifyIconData.uFlags &= ~NIF_TIP; Shell_NotifyIconW(NIM_ADD, &m_NotifyIconData); // tooltips window (for icons) m_hIconTips = CreateWindowEx(0, TOOLTIPS_CLASS, L"", TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, m_hDialog, 0, m_pXPIGUI->hInstance, NULL); SetWindowPos(m_hIconTips, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); TOOLINFO ti; ti.cbSize = sizeof(ti); ti.uFlags = TTF_SUBCLASS | TTF_IDISHWND; ti.hwnd = m_hDialog; std::wstring wstrTemp; wstrTemp = pStrings->Get(IDS_CLEAR_ALL_PACKETS); ti.uId = (UINT_PTR)GetDlgItem(m_hDialog, IDC_CLEAR); ti.lpszText = (LPWSTR)wstrTemp.c_str(); SendMessage(m_hIconTips, TTM_ADDTOOL, 0, (LPARAM)&ti); wstrTemp = pStrings->Get(IDS_PAUSE_LOGGING); ti.uId = (UINT_PTR)GetDlgItem(m_hDialog, IDC_PAUSELOGGING); ti.lpszText = (LPWSTR)wstrTemp.c_str(); SendMessage(m_hIconTips, TTM_ADDTOOL, 0, (LPARAM)&ti); // tabs creation TAB_INFO Tabs[] = { { pStrings->Get(IDS_TAB_PLAIN), MAKEINTRESOURCEW(IDD_PLAINVIEW), CPlainView::DialogProc }, { pStrings->Get(IDS_TAB_FORMATTED), MAKEINTRESOURCEW(IDD_FORMATTEDVIEW), CFormattedView::DialogProc }, { pStrings->Get(IDS_TAB_SETTINGS), MAKEINTRESOURCEW(IDD_SETTINGS), CMainSettings::DialogProc } }; INT iCount = 0; foreach(const TAB_INFO& i, Tabs) { HWND hWnd = CreateDialogParamW(m_pXPIGUI->hInstance, i.lpwszTemplate, m_hDialog, i.DlgProc, (LPARAM)m_pXPIGUI); if (hWnd != NULL) { TCITEMW tci; tci.mask = TCIF_TEXT | TCIF_PARAM; tci.pszText = (LPWSTR)i.wstrCaption.c_str(); tci.lParam = (LPARAM)m_pXPIGUI; if (TabCtrl_InsertItem(GetDlgItem(m_hDialog, IDC_TAB), iCount++, &tci) != -1) { ShowWindow(hWnd, m_vhTabs.empty() ? SW_SHOW : SW_HIDE); m_vhTabs.push_back(hWnd); continue; } } #ifdef _DEBUG pLog->Write(LOG_WF_ERROR, L"Couldn't create tab ID %s, aborting.", i.wstrCaption); #endif NotifyErrorUI(); return FALSE; }
HIMAGELIST SdkCreateGrayImageList( IN HIMAGELIST himlNormal ) { int Count, i; int Width, Height; HIMAGELIST himlGray; HDC hdcDesktop; HDC hdcMem; RECT rc; COLORREF crMask; HPALETTE hpal; UINT index; HGDIOBJ hbm; HGDIOBJ hbmOld; COLORREF rgb; BYTE gray; HWND hWnd; int x, y; Count = ImageList_GetImageCount(himlNormal); if (Count == 0) { return NULL; } ImageList_GetIconSize(himlNormal, &Width, &Height); himlGray = ImageList_Create(Width, Height, ILC_COLOR24 | ILC_MASK, Count, 0); hdcDesktop = GetDC(NULL); hdcMem = CreateCompatibleDC(NULL); rc.top = rc.left = 0; rc.bottom = Height; rc.right = Width; crMask = RGB(200, 199, 200); if (GetDeviceCaps(hdcDesktop, BITSPIXEL) < 24) { hpal = (HPALETTE)GetCurrentObject(hdcDesktop, OBJ_PAL); index = GetNearestPaletteIndex(hpal, crMask); if (index != CLR_INVALID) { crMask = PALETTEINDEX(index); } } for (i = 0 ; i < Count; ++i) { hbm = CreateCompatibleBitmap(hdcDesktop, Width, Height); hbmOld = SelectObject(hdcMem, hbm); SdkFillSolidRect(hdcMem, crMask, &rc); ImageList_SetBkColor(himlNormal, crMask); ImageList_Draw(himlNormal, i, hdcMem, 0, 0, ILD_NORMAL); for (x = 0 ; x < Width; ++x) { for (y = 0; y < Height; ++y) { rgb = GetPixel(hdcMem, x, y); if (rgb != crMask) { gray = (BYTE) (95 + (GetRValue(rgb) * 3 + GetGValue(rgb) * 6 + GetBValue(rgb)) / 20); SetPixel(hdcMem, x, y, RGB(gray, gray, gray)); } } } hbm = SelectObject(hdcMem, hbmOld); ImageList_AddMasked(himlGray, (HBITMAP)hbm, crMask); DeleteObject(hbm); } DeleteDC(hdcMem); hWnd = WindowFromDC(hdcDesktop); ReleaseDC(hWnd, hdcDesktop); return himlGray; }