Exemplo n.º 1
0
HRESULT CWorkshareMenu::MenuMessageHandler( UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pResult )
{
	switch ( uMsg )
	{
	case WM_MEASUREITEM:
		return OnMeasureItem( (MEASUREITEMSTRUCT*) lParam, pResult );
		break;

	case WM_DRAWITEM:
		return OnDrawItem( (DRAWITEMSTRUCT*) lParam, pResult );
		break;
	}
	return S_OK;
}
Exemplo n.º 2
0
	int AddString(TCHAR *text, LPARAM data=0)
	{
		m_adding = true;
		int idx = CCtrlListBox::AddString(text, data);
		m_adding = false;
		if (idx == LB_ERR) return idx;

		MEASUREITEMSTRUCT mis = {0};
		mis.CtlType = ODT_LISTBOX;
		mis.CtlID = m_idCtrl;
		mis.itemID = idx;
		mis.itemData = data;
		OnMeasureItem(&mis);
		if (mis.itemHeight) SendMessage(m_hwnd, LB_SETITEMHEIGHT, idx, mis.itemHeight);
		return idx;
	}
Exemplo n.º 3
0
STDMETHODIMP CBmpCtxMenuExt::MenuMessageHandler ( UINT uMsg, WPARAM wParam,
                                                  LPARAM lParam, LRESULT* pResult )
{
    switch ( uMsg )
        {
        case WM_MEASUREITEM:
            {
            return OnMeasureItem ( (MEASUREITEMSTRUCT*) lParam, pResult );
            }
        break;

        case WM_DRAWITEM:
            {
            return OnDrawItem ( (DRAWITEMSTRUCT*) lParam, pResult );
            }
        break;
        }

    return S_OK;
}
Exemplo n.º 4
0
	LRESULT CustomWndProc(UINT msg, WPARAM wParam, LPARAM lParam)
	{
		if (msg == WM_SIZE) {
			SendMessage(m_hwnd, WM_SETREDRAW, FALSE, 0);
			int cnt = GetCount();
			for (int idx = 0; idx < cnt; ++idx) {
				MEASUREITEMSTRUCT mis = { 0 };
				mis.CtlType = ODT_LISTBOX;
				mis.CtlID = m_idCtrl;
				mis.itemID = idx;
				mis.itemData = GetItemData(idx);
				OnMeasureItem(&mis);
				if (mis.itemHeight) SendMessage(m_hwnd, LB_SETITEMHEIGHT, idx, mis.itemHeight);
			}
			SendMessage(m_hwnd, WM_SETREDRAW, TRUE, 0);
			RedrawWindow(m_hwnd, NULL, NULL, RDW_INVALIDATE);
		}

		return CSuper::CustomWndProc(msg, wParam, lParam);
	}
Exemplo n.º 5
0
//////////////////
// Virtual CSubclassWnd window proc. All messages come here before frame
// window. Isn't it cool? Just like in the old days!
//
LRESULT CCoolMenuManager::WindowProc(UINT msg, WPARAM wp, LPARAM lp)
{
	switch(msg) {
	case WM_SYSCOLORCHANGE:
	case WM_SETTINGCHANGE:
		Refresh();
		break;

	case WM_MEASUREITEM:
		if (OnMeasureItem((MEASUREITEMSTRUCT*)lp))
			return TRUE; // handled
		break;

	case WM_DRAWITEM:
		if (OnDrawItem((DRAWITEMSTRUCT*)lp))
			return TRUE; // handled
		break;

	case WM_INITMENUPOPUP:
		// Very important: must let frame window handle it first!
		// Because if someone calls CCmdUI::SetText, MFC will change item to
		// MFT_STRING, so I must change back to MFT_OWNERDRAW.
		//
		CSubclassWnd::WindowProc(msg, wp, lp);
		OnInitMenuPopup(CMenu::FromHandle((HMENU)wp),
			(UINT)LOWORD(lp), (BOOL)HIWORD(lp));
		return 0;

	case WM_MENUSELECT:
		OnMenuSelect((UINT)LOWORD(wp), (UINT)HIWORD(wp), (HMENU)lp);
		break;
	
	case WM_MENUCHAR:
		LRESULT lr = OnMenuChar((TCHAR)LOWORD(wp), (UINT)HIWORD(wp),
			CMenu::FromHandle((HMENU)lp));
		if (lr!=0)
			return lr;
		break;
	}
	return CSubclassWnd::WindowProc(msg, wp, lp);
}
Exemplo n.º 6
0
bool CChannelMenu::HandleMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pResult)
{
	if (m_hwnd==NULL || hwnd!=m_hwnd)
		return false;

	switch (uMsg) {
	case WM_MEASUREITEM:
		if (OnMeasureItem(hwnd,wParam,lParam)) {
			*pResult=TRUE;
			return true;
		}
		break;

	case WM_DRAWITEM:
		if (OnDrawItem(hwnd,wParam,lParam)) {
			*pResult=TRUE;
			return true;
		}
		break;

	case WM_UNINITMENUPOPUP:
		if (OnUninitMenuPopup(hwnd,wParam,lParam)) {
			*pResult=0;
			return true;
		}
		break;

	case WM_MENUSELECT:
		if (OnMenuSelect(hwnd,wParam,lParam)) {
			*pResult=0;
			return true;
		}
		break;
	}

	return false;
}
Exemplo n.º 7
0
/*------------------------------------------------
  dialog procedure
--------------------------------------------------*/
INT_PTR CALLBACK DlgProcSelectIcon(HWND hDlg, UINT message,
	WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
		case WM_INITDIALOG:
			if(!InitSelectIcon(hDlg))
				EndDialog(hDlg, IDCANCEL);
			return TRUE;
		case WM_MEASUREITEM:
			OnMeasureItem(hDlg, lParam);
			return TRUE;
		case WM_DRAWITEM:
			OnDrawItem(lParam);
			return TRUE;
		case WM_COMMAND:
		{
			WORD id;
			id = LOWORD(wParam);
			switch(id)
			{
				case IDC_SANSHOICON:
					OnBrowse(hDlg);
					break;
				case IDOK:
					OnOK(hDlg);
				case IDCANCEL:
					EndSelectIcon(hDlg);
					EndDialog(hDlg, id);
					break;
			}
			return TRUE;
		}
	}
	return FALSE;
}
Exemplo n.º 8
0
LRESULT APIENTRY GraphLegendWndProc (HWND hWnd,
                                     WORD wMsg,
                                     WPARAM wParam,
                                     LONG lParam)
   {  // GraphLegendWndProc
   BOOL           bCallDefProc ;
   LRESULT        lReturnValue ;


   bCallDefProc = FALSE ;
   lReturnValue = 0L ;

   switch (wMsg)
      {  // switch
      case WM_DELETEITEM:
         break ;

      case WM_COMMAND:
         switch (HIWORD (wParam))
            {  // switch
            case LBN_DBLCLK:
               OnDoubleClick (hWnd) ;
               break ;

            case LBN_SELCHANGE:
               OnSelectionChanged (hWnd) ;
               break ;

            default:
               break ;
            }  // switch
         break ;

      case WM_CREATE:
         OnLegendCreate (hWnd, (LPCREATESTRUCT) lParam) ;
         break ;

      case WM_DESTROY:
         OnDestroy (hWnd) ;
         break ;

      case WM_DRAWITEM:
         OnDrawLegendItem (hWnd, (LPDRAWITEMSTRUCT) lParam) ;
         break ;

      case WM_MEASUREITEM:
         OnMeasureItem (hWnd, (LPMEASUREITEMSTRUCT) lParam) ;
         break ;

      case WM_PAINT:
         OnPaint (hWnd) ;
         break ;

      case WM_SIZE:
         OnSize (hWnd, LOWORD (lParam), HIWORD (lParam)) ;
         break ;

      case WM_SETFOCUS:
         OnSetFocus (hWnd) ;
         break ;

      default:
         bCallDefProc = TRUE ;
      }  // switch


   if (bCallDefProc)
      lReturnValue = DefWindowProc (hWnd, wMsg, wParam, lParam) ;

   return (lReturnValue);
   }  // GraphLegendWndProc
Exemplo n.º 9
0
wxCoord wxVListBox::OnGetLineHeight(size_t line) const
{
    return OnMeasureItem(line) + 2*m_ptMargins.y;
}
Exemplo n.º 10
0
wxCoord ContentBoxCtrol::OnGetLineHeight(size_t line) const
{
    return OnMeasureItem(line) + 2*m_ptMargins.y;
}
Exemplo n.º 11
0
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	static UINT s_uTaskBarCreated = 0;

	switch(uMsg)
	{
	case WM_CREATE:
		{
			g_hwndMain = hwnd;
			// Register task bar (re)creation in order to reload systray icons after explorer crashes
			s_uTaskBarCreated = RegisterWindowMessage(REGISTER_MESSAGE);

			// Set Icons
			SendMessage(hwnd, WM_SETICON, ICON_BIG, 
				(LONG)(LONG_PTR)LoadImage(g_hInst, MAKEINTRESOURCE(IDI_MAIN_ICON), IMAGE_ICON, 
				GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), LR_DEFAULTCOLOR));

			SendMessage(hwnd, WM_SETICON, ICON_SMALL, 
				(LONG)(LONG_PTR)LoadImage(g_hInst, MAKEINTRESOURCE(IDI_MAIN_ICON), IMAGE_ICON, 
				GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR));

			ShowWindow(hwnd, SW_HIDE);

			// Clear the list
			g_IconTray.clear();

			installHookKeyboard();

			// Open the configuration
			if (openConfig() == FALSE)
			{
				uninstallHookKeyboard();
				clearMenuSkin();

				MessageBox(g_hwndMain, L"Configuration file not found or invalid", ERR_MSGBOX_TITLE, NULL);

				PostQuitMessage(0);
				return 0;
			}

			// Retreive the version of Windows (in order to know if it is a win200 or superior)
			windowsVersion = GetWindowsVersion();

			// Initialisation of variables for menus
			InitMenuVars();

			// Add the system tray icons (depends of the configuration)
			ShowTrayIcons();

			// Show loading error messages
			if (g_loadingmessage != NULL) {
				ShowBalloon(ERR_MSGBOX_TITLE, g_loadingmessage, 0, NIIF_ERROR);
				free(g_loadingmessage);
				g_loadingmessage = NULL;
			}

			// Launch application in "autorun" mode
			fireEvent(PROG_EVENT_START);

			FlushMemory();
		}
		break;

	case WM_HOTKEY:
		if( (wParam >= IDH_HOTKEY_MENU) && (wParam <= (IDH_HOTKEY_MENU + g_portal->hotkeys.size()) ) )
		{
			// Detect application item or menu item in order to open a menu or launch the application
			PortalProg* l_sp = g_portal->hotkeys[ wParam - IDH_HOTKEY_MENU ];

			while( l_sp )
			{
				if( l_sp->progs.size() > 0 )
				{
					ShowTrayMenu(l_sp, PORTAL_MENU_HOTKEY);
				}
				else
				{
					l_sp->run(false);
					// Some commands could call quitPortal. In this case g_portal is set to NULL.
					if(g_portal == NULL)
						return 0;
				}
				l_sp = l_sp->nextSameHotkey;
			}
		}
		FlushMemory();
		break;

	case WM_DESTROY:
		{
			quitPortal();
		}
		break;

	case WM_MYTRAYMSG:
		if ((wParam >= IDI_MAIN_ICON) && g_portal && (wParam <= (IDI_MAIN_ICON + g_portal->menus.size())))
		{
			// Find the clicked systray
			int pos = (int)wParam - IDI_MAIN_ICON;
			if( ((UINT)lParam == WM_RBUTTONUP) || ((UINT)lParam == WM_LBUTTONUP) || ((UINT)lParam == WM_MOUSEMOVE) )
			{
				// Left click : minimalist menu
				// Right click : Complete menu (with About/Reload/Quit)
				// Auto Open : Complete menu (like right click) with a automatic dismiss
				int param = PORTAL_MENU_SYSTRAY;
				if((UINT)lParam == WM_RBUTTONUP)
				{
					param = PORTAL_MENU_SYSTRAY_CMD;
				}
				
				if( ((UINT)lParam == WM_MOUSEMOVE) )
				{
					if( (g_portal->menus[pos] != NULL) && (g_portal->menus[pos]->options & PROG_OPTION_AUTOOPEN) )
					{
						param = PORTAL_MENU_SYSTRAY_AUTO;
					}
					else
					{
						return 0;
					}
				}

				// Detect if the icon is for a menu or a application
				if( (g_portal->menus[pos] != NULL) && ( g_portal->menus[pos]->progs.size() > 0 ) )
				{
					ShowTrayMenu(g_portal->menus[pos], param);
					g_currentMenu = pos;
				}
				else if( (g_portal->menus[pos] != NULL) && (g_portal->menus[pos]->progExe != NULL ))
				{
					if((UINT)lParam == WM_LBUTTONUP)
					{
						g_portal->menus[pos]->run(true);
						g_currentMenu = pos;
					}
					else
					{
						ShowTrayMenu(g_portal->menus[pos], param);
						g_currentMenu = pos;
					}
				}
				else
				{
					ShowTrayMenu(NULL, param);
					g_currentMenu = 0;
				}
				FlushMemory();
			}
			else if( (UINT)lParam == NIN_BALLOONUSERCLICK )
			{
				if(g_aboutbaloon)
					checkGuiproVersion();
				FlushMemory();
				return 0;
			}
		}
		break;

	case WM_INITMENUPOPUP :
		OnInitMenuPopup(hwnd, wParam, lParam);
		break;

	case WM_UNINITMENUPOPUP:
		OnUninitMenuPopup(hwnd, wParam, lParam);
		break;

	case WM_MEASUREITEM :
		OnMeasureItem(hwnd, wParam, lParam);
		break;

	case WM_DRAWITEM :
		OnDrawItem(hwnd, wParam, lParam);
		break;

	case WM_MENUCHAR:
		return OnMenuCharItem(hwnd, wParam, lParam);

	case WM_COMMAND:
		// Retreive a menu command
		if( wParam == IDM_EXIT )
		{
			quitPortal();
		}
		else if( wParam == IDM_RELOAD )
		{
			reloadPortalConfig();
		}
		else if( wParam == IDM_ABOUT )
		{
			ShowAbout(g_currentMenu);
			FlushMemory();
		}
		else if( ((UINT)wParam >= (PORTAL_HK_ID)) && ( (UINT)wParam <= (UINT)(PORTAL_HK_ID + menuGetNbElem()) )  )
		{
			PortalProg* l_sp = menuGetElem( (int)(wParam - 1 - PORTAL_HK_ID) );
			l_sp->run(true);
			FlushMemory();
		}
		else if( ((UINT)wParam >= (PORTAL_FILE_ID)) && ( (UINT)wParam < (UINT)(PORTAL_FILE_ID + menuGetNbFiles()) ) )
		{
			PortalProg* l_sp = menuGetFile( (int)(wParam - PORTAL_FILE_ID) );
			l_sp->run(true);
			FlushMemory();

			for(PortalProgVector::iterator i = g_portal_files.begin(); i != g_portal_files.end(); i++)
			{
				delete (*i);
			}
			g_portal_files.clear();
		}
		break;

	default:
		if( uMsg == s_uTaskBarCreated )
		{
			// Traskbar (re)creation, we have to reset systray icons
			ReloadTrayIcons();
			FlushMemory();
		}
		else
		{
			return(DefWindowProc(hwnd, uMsg, wParam, lParam));
		}
		break;
	}
	return 0;
}
Exemplo n.º 12
0
	//--------------------------------------------------------------------------------
	bool CWinCtrlParentController::ProcessMessage( COSWindow& Window, Cmp_long_ptr& lResult, unsigned int uMsg, Cmp_uint_ptr wParam, Cmp_long_ptr lParam )
	{
		_WINQ_FCONTEXT( "CWinCtrlParentController:ProcessMessage" );
		bool bProcessed = ProcessHook( Window, lResult, uMsg, wParam, lParam );

		switch ( uMsg )
		{
		case COSWindow::wmCtlColorMsgBox:
			{
				CDeviceContext::refType refDC = CDeviceContext::FromHandle( CDCHandle( (CDCInternal*)0, (void*)( wParam ) ).Ref() );
				COSWindow::refType refMsgBox = COSWindow::FromHandle( CWindowHandle( 0, (void*)(lParam ) ).Ref() );
				lResult = reinterpret_cast< long >( OnCtlColourMsgBox( Window, refDC, refMsgBox )->Handle()->AsHandle().ptr() );
				bProcessed = true;
			}
			break;
		case COSWindow::wmCtlColorEdit:
			{
				CDeviceContext::refType refDC = CDeviceContext::FromHandle( CDCHandle( (CDCInternal*)0, (void*)( wParam ) ).Ref() );
				COSWindow::refType refEdit = COSWindow::FromHandle( CWindowHandle( 0, (void*)(lParam ) ).Ref() );
				lResult = reinterpret_cast< long >( OnCtlColour( Window, refDC, refEdit, COSWindow::wmCtlColorEdit )->Handle()->AsHandle().ptr() );
				bProcessed = true;
			}
			break;
		case COSWindow::wmCtlColorListBox:
			{
				CDeviceContext::refType refDC = CDeviceContext::FromHandle( CDCHandle( (CDCInternal*)0, (void*)( wParam ) ).Ref() );
				COSWindow::refType refListBox = COSWindow::FromHandle( CWindowHandle( 0, (void*)(lParam ) ).Ref() );
				lResult = reinterpret_cast< long >( OnCtlColour( Window, refDC, refListBox, COSWindow::wmCtlColorListBox )->Handle()->AsHandle().ptr() );
				bProcessed = true;
			}
			break;
		case COSWindow::wmCtlColorBtn:
			{
				CDeviceContext::refType refDC = CDeviceContext::FromHandle( CDCHandle( (CDCInternal*)0, (void*)( wParam ) ).Ref() );
				COSWindow::refType refButton = COSWindow::FromHandle( CWindowHandle( 0, (void*)(lParam ) ).Ref() );
				lResult = reinterpret_cast< long >( OnCtlColour( Window, refDC, refButton, COSWindow::wmCtlColorBtn )->Handle()->AsHandle().ptr() );
				bProcessed = true;
			}
			break;
		case COSWindow::wmCtlColorDlg:
			{
				CDeviceContext::refType refDC = CDeviceContext::FromHandle( CDCHandle( (CDCInternal*)0, (void*)( wParam ) ).Ref() );
				COSWindow::refType refDlg = COSWindow::FromHandle( CWindowHandle( 0, (void*)(lParam ) ).Ref() );
				lResult = reinterpret_cast< long >( OnCtlColourDialog( Window, refDC, refDlg )->Handle()->AsHandle().ptr() );
				bProcessed = true;
			}
			break;
		case COSWindow::wmCtlColorScrollbar:
			{
				CDeviceContext::refType refDC = CDeviceContext::FromHandle( CDCHandle( (CDCInternal*)0, (void*)( wParam ) ).Ref() );
				COSWindow::refType refScrollBar = COSWindow::FromHandle( CWindowHandle( 0, (void*)(lParam ) ).Ref() );
				lResult = reinterpret_cast< long >( OnCtlColour( Window, refDC, refScrollBar, COSWindow::wmCtlColorStatic )->Handle()->AsHandle().ptr() );
				bProcessed = true;
			}
			break;
		case COSWindow::wmCtlColorStatic:
			{
				CDeviceContext::refType refDC = CDeviceContext::FromHandle( CDCHandle( (CDCInternal*)0, (void*)( wParam ) ).Ref() );
				COSWindow::refType refStatic = COSWindow::FromHandle( CWindowHandle( 0, (void*)(lParam ) ).Ref() );
				lResult = reinterpret_cast< long >( OnCtlColour( Window, refDC, refStatic, COSWindow::wmCtlColorStatic )->Handle()->AsHandle().ptr() );
				bProcessed = true;
			}
			break;
		case COSWindow::wmDrawItem:
			{
					DrawItemStruct* pItemStruct = reinterpret_cast< DrawItemStruct* >( lParam );
					OnDrawItem( Window, wParam, pItemStruct );
					lResult = 1;
					bProcessed = true;
			}
			break;
		case COSWindow::wmCompareItem:
			{
				lResult = OnCompareItem( Window, wParam, reinterpret_cast< ComparisonItem* >( lParam ) );					
				bProcessed = true;
			}
			break;
		case COSWindow::wmMeasureItem:
			{
				nsWin32::MeasureItemStruct* pItemStruct = reinterpret_cast< nsWin32::MeasureItemStruct* >( lParam );
				OnMeasureItem( Window, wParam, pItemStruct );
				lResult = 1;
				bProcessed = true;
			}
			break;
		case COSWindow::wmDeleteItem:
			{
				nsWin32::DeleteItemStruct* pItemStruct = reinterpret_cast< nsWin32::DeleteItemStruct* >( lParam );
				OnDeleteItem( Window, wParam, pItemStruct );
				lResult = 1;
				bProcessed = true;
			}
			break;
		case COSWindow::wmVKeyToItem:
			{
				unsigned short wVKey = LoWord( wParam );
				unsigned short wPos = HiWord( wParam );
				COSWindow::refType refListBox = COSWindow::FromHandle( CWindowHandle( 0, (void*)( lParam ) ).Ref() );
				lResult = OnVKeyToItem( Window, wVKey, wPos, refListBox );
				bProcessed = true;
			}
			break;
		case COSWindow::wmCharToItem:
			{
				unsigned short wKey = LoWord( wParam );
				unsigned short wPos = HiWord( wParam );
				COSWindow::refType refListBox = COSWindow::FromHandle( CWindowHandle( 0, (void*)( lParam ) ).Ref() );
				lResult = OnCharToItem( Window, wKey, wPos, refListBox );
				bProcessed = true;
			}
			break;
		}			

		return bProcessed;
	}