Пример #1
0
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 );
}
Пример #2
0
/*****************************************************************************
 * 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;
}
Пример #3
0
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));
    }
}
Пример #4
0
 Color ImageList::background ( const Color& color )
 {
     const Color previous = ImageList_SetBkColor(
         handle(), color.value()
         );
     return (previous);
 }
Пример #5
0
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);
}
Пример #6
0
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);
}
Пример #7
0
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;
}
Пример #8
0
/*****************************************************************************
 * 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;
}
Пример #9
0
/*
 * 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;
}
Пример #10
0
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();
}
Пример #11
0
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 );
     }
}
Пример #12
0
// 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;
}
Пример #13
0
//----------------------------------------------------------------------------------------------
// 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;
}
Пример #14
0
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));
}
Пример #15
0
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));
}
Пример #16
0
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 ;
}
Пример #17
0
//------------------------------------------------------------------------------
//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;
}
Пример #18
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;
}
Пример #19
0
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;
	}
Пример #20
0
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; 
}