BOOL wbIsWBObj(void *pwbo, BOOL bShowErrors)
{
	if(!pwbo) {
		if(bShowErrors)
			wbError(__FUNCTION__, MB_ICONWARNING, "NULL WinBinder object");
		return FALSE;
	}

	// Is pwbo a valid memory address?

	if(IsBadReadPtr(pwbo, sizeof(WBOBJ))) {
		if(bShowErrors)
			wbError(__FUNCTION__, MB_ICONWARNING, "Invalid memory address");
//		printf("%d\n", pwbo);
		return FALSE;
	}

	// A Windows or menu handle is not a WinBinder object

	if(IsWindow(pwbo) || IsMenu(pwbo)) {
		if(bShowErrors)
			wbError(__FUNCTION__, MB_ICONWARNING, "Not a WinBinder object");
		return FALSE;
	}

	// Does it have a valid handle?

	{
		PWBOBJ pwboTest = wbMalloc(sizeof(WBOBJ));
		if(pwboTest) {
			CopyMemory(pwboTest, pwbo, sizeof(WBOBJ));

			if(!pwboTest->hwnd) {
				wbFree(pwboTest);
				if(bShowErrors)
					wbError(__FUNCTION__, MB_ICONWARNING, "NULL WinBinder object handle");
				return FALSE;
			}
			wbFree(pwboTest);
		}
	}

	if(IsMenu((HMENU)((PWBOBJ)pwbo)->hwnd))
		return TRUE;

	if(IsWindow((HWND)((PWBOBJ)pwbo)->hwnd))
		return TRUE;

	if(bShowErrors)
		wbError(__FUNCTION__, MB_ICONWARNING, "Invalid WinBinder object");

	return FALSE;
}
Esempio n. 2
0
void CVMouseDlg::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
	if(lpMeasureItemStruct->CtlType == ODT_MENU)
	{
		if(IsMenu((HMENU)lpMeasureItemStruct->itemID) 
			&& IsMenu((HMENU)lpMeasureItemStruct->itemID))
		{
			m_trayIcon.m_menu.MeasureItem(lpMeasureItemStruct);
		}
	}
	CDialog::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}
Esempio n. 3
0
void AFXAPI AfxUnmergeMenus(HMENU hMenuShared, HMENU hMenuSource,
	HMENU hHelpMenuPopup /* = NULL */)
{
	ASSERT(hMenuShared != NULL && IsMenu(hMenuShared));
	ASSERT(hMenuSource != NULL && IsMenu(hMenuSource));
	ASSERT(hHelpMenuPopup == NULL || IsMenu(hHelpMenuPopup));

	int cOurItems = GetMenuItemCount(hMenuSource);
	int cMenuItems = GetMenuItemCount(hMenuShared);

	for (int i = cMenuItems-1; i >= 0; i--)
	{
		// check out the popup menus
		HMENU hMenuPopup = ::GetSubMenu(hMenuShared, i);
		if (hMenuPopup != NULL)
		{
			// if we have a Help submenu, check to see if it appears in this
			// submenu someplace... this normally happens only in
			// DocObject frame windows

			if (hHelpMenuPopup != NULL)
			{
				int cPopupItems = ::GetMenuItemCount(hMenuPopup);
				for (int k = 0; k < cPopupItems; k++)
				{
					if (::GetSubMenu(hMenuPopup, k) == hHelpMenuPopup)
					{
						::RemoveMenu(hMenuPopup, k, MF_BYPOSITION);
						hHelpMenuPopup = NULL;  // can only have one
						break;
					}
				}
			}
			else
			{
				// if it is one of ours, remove it from the pMenuShared
				for (int j = 0; j < cOurItems; j++)
				{
					if (::GetSubMenu(hMenuSource, j) == hMenuPopup)
					{
						// remove the menu from pMenuShared
						RemoveMenu(hMenuShared, i, MF_BYPOSITION);
						break;
					}
				}
			}
		}
	}
}
Esempio n. 4
0
static int winSeparatorMapMethod(Ihandle* ih)
{
  int pos;
  MENUITEMINFO menuiteminfo;

  if (!ih->parent || !IsMenu((HMENU)ih->parent->handle))
    return IUP_ERROR;

  pos = IupGetChildPos(ih->parent, ih);
  ih->serial = iupMenuGetChildId(ih);

  menuiteminfo.cbSize = sizeof(MENUITEMINFO); 
  menuiteminfo.fMask = MIIM_FTYPE|MIIM_ID|MIIM_DATA; 
  menuiteminfo.fType = MFT_SEPARATOR; 
  menuiteminfo.wID = (UINT)ih->serial;
  menuiteminfo.dwItemData = (ULONG_PTR)ih; 

  if (!InsertMenuItem((HMENU)ih->parent->handle, pos, TRUE, &menuiteminfo))
    return IUP_ERROR;

  ih->handle = ih->parent->handle; /* gets the HMENU of the parent */
  winMenuUpdateBar(ih);

  return IUP_NOERROR;
}
Esempio n. 5
0
//
// Enter
//
// Called when the user hits the <Enter>/<Return> keys or presses the
// shortcut key. If this is a leaf item, the item's action will be executed.
// In either case, do nothing if the item is disabled.
//
nsMenuFrame*
nsMenuFrame::Enter()
{
  if (IsDisabled()) {
#ifdef XP_WIN
    // behavior on Windows - close the popup chain
    if (mMenuParent) {
      nsXULPopupManager* pm = nsXULPopupManager::GetInstance();
      if (pm) {
        nsIFrame* popup = pm->GetTopPopup(ePopupTypeAny);
        if (popup)
          pm->HidePopup(popup->GetContent(), PR_TRUE, PR_TRUE, PR_TRUE);
      }
    }
#endif   // #ifdef XP_WIN
    // this menu item was disabled - exit
    return nsnull;
  }

  if (!IsOpen()) {
    // The enter key press applies to us.
    if (!IsMenu() && mMenuParent)
      Execute(0);          // Execute our event handler
    else
      return this;
  }

  return nsnull;
}
Esempio n. 6
0
BOOL wbSetMenuItemSelected(PWBOBJ pwbo)
{
	if(!pwbo || !pwbo->hwnd || !IsMenu((HMENU)pwbo->hwnd))
		return FALSE;

	return CheckMenuRadioItem((HMENU)pwbo->hwnd, pwbo->id, pwbo->id, pwbo->id, MF_BYCOMMAND);
}
Esempio n. 7
0
CMenu::~CMenu(void)
{
	// Only destroy if not already. 
	// e.g. by the parent window.
	if (IsMenu(m_hMenu))
		DestroyMenu(m_hMenu);
}
Esempio n. 8
0
void CFavMenu::LoadIEFav(HMENU &fav_menu)
{
//	錯誤,這樣會把其他favorite和history的CFavMenu <-> HMENU對應刪除
//	favmenus.RemoveAll();
//	改成下列方式,因為上面已經 DestroyMenu( fav_menu ),所以可以很投機取巧的
//	利用 IsMenu 來檢查,移除 favmenu 中已經無效的 Handles
	int i;	//	此 i 在稍後的程式還有使用
	for (i = favmenus.GetSize() - 1;i >= 0;i--)	//搜尋看是否為CFavMenu
		if (!IsMenu(reinterpret_cast<HMENU>(favmenus[i])))
			favmenus.RemoveAt(i);
	//	刪除特定位置第i個 item 後,其後的array都會往前 shift 1,
	//	但是不用管他,因為是由後往前檢查,所以i後面的都已經檢查過

	DestroyMenu(fav_menu);
	web_fav.RemoveAll();

	CString favdir = GetIEFavDir();

	max_height = GetSystemMetrics(SM_CYSCREEN) - 64;
	item_height = GetSystemMetrics(SM_CYMENU);

	UINT id = ID_FIRST_WEB_FAVORITE;
	fav_menu = CreatePopupMenu();
	AddToIEFav(fav_menu, favdir, id);
}
Esempio n. 9
0
HMENU SetupKALPopupMenu()
{
    if (!IsMenu(hKALPpMainMenu))
        hKALPpMainMenu = LoadMenu(hInstDLL, MAKEINTRESOURCE(IDP_KALPOPUP));

    return hKALPpMainMenu;
}
Esempio n. 10
0
static int winItemMapMethod(Ihandle* ih)
{
  int pos;
  MENUITEMINFO menuiteminfo;

  if (!ih->parent || !IsMenu((HMENU)ih->parent->handle))
    return IUP_ERROR;

  pos = IupGetChildPos(ih->parent, ih);
  ih->serial = iupMenuGetChildId(ih);

  menuiteminfo.cbSize = sizeof(MENUITEMINFO); 
  menuiteminfo.fMask = MIIM_ID|MIIM_DATA|MIIM_STRING; 
  menuiteminfo.dwTypeData = ""; /* must set or it will be not possible to update */
  menuiteminfo.cch = 0;
  menuiteminfo.wID = (UINT)ih->serial;
  menuiteminfo.dwItemData = (ULONG_PTR)ih; 

  if (!InsertMenuItem((HMENU)ih->parent->handle, pos, TRUE, &menuiteminfo))
    return IUP_ERROR;

  ih->handle = ih->parent->handle; /* gets the HMENU of the parent */
  winMenuUpdateBar(ih);

  return IUP_NOERROR;
}
Esempio n. 11
0
void XMenuBar::removeFromMenuBar(HMENU menubar, XPopupMenu *p_Menu) {
	if ((int) m_vpXMenuBar.size() == 0)
		return;

	// If no menubar is specified, get current menubar.
	if (menubar == NULL) {
		menubar = GetMenu(Dcx::mIRC.getHWND());

		if (!IsMenu(menubar))
			return;
	}

	// Remove the menu from the vector list.
	VectorOfXPopupMenu::iterator itStart = this->m_vpXMenuBar.begin();
	VectorOfXPopupMenu::iterator itEnd = this->m_vpXMenuBar.end();

	while (itStart != itEnd) {
		if (*itStart == p_Menu) {
			this->m_vpXMenuBar.erase(itStart);
			break;
		}

		++itStart;
	}

	const int offset = findMenuOffset(menubar, p_Menu);

	if (offset > 0)
		RemoveMenu(menubar, offset, MF_BYPOSITION);

	DrawMenuBar(Dcx::mIRC.getHWND());
}
Esempio n. 12
0
static int winSubmenuMapMethod(Ihandle* ih)
{
  if (!ih->parent || !IsMenu((HMENU)ih->parent->handle))
    return IUP_ERROR;

  return iupBaseTypeVoidMapMethod(ih);
}
Esempio n. 13
0
static int winSubmenuMapMethod(Ihandle* ih)
{
  if (!ih->parent || !IsMenu((HMENU)ih->parent->handle))
    return IUP_ERROR;

  ih->handle = (InativeHandle*)-1; /* fake value just to indicate that it is already mapped */

  return IUP_NOERROR;
}
Esempio n. 14
0
File: Menu.c Progetto: xpika/winhugs
static void hugsprim_IsMenu_6(HugsStackPtr hugs_root)
{
    HsPtr arg1;
    HsBool res1;
    arg1 = hugs->getPtr();
    res1 = IsMenu(arg1);
    hugs->putBool(res1);
    hugs->returnIO(hugs_root,1);
}
Esempio n. 15
0
static int winSubmenuMapMethod(Ihandle* ih)
{
  if (!ih->parent || !IsMenu((HMENU)ih->parent->handle))
    return IUP_ERROR;

  /* will map as void here, but later when the "child" menu is mapped 
     the submenu handle receives the "parent" menu handle in winSubmenuAddToParent,
     because the submenu needs the child menu to be created in the native system. */
  return iupBaseTypeVoidMapMethod(ih);
}
Esempio n. 16
0
BOOL wbSetMenuItemText(PWBOBJ pwbo, LPCTSTR pszText)
{
	if(!pwbo || !pwbo->hwnd || !IsMenu((HMENU)pwbo->hwnd))
		return FALSE;

	if(pszText && *pszText)
		return ModifyMenu((HMENU)pwbo->hwnd, pwbo->id, MF_BYCOMMAND | MF_STRING, pwbo->id, pszText);
	else
		return FALSE;
}
Esempio n. 17
0
void
Test_NoParamRoutine_CreateMenu(void) /* 0 */
{
    HMENU hMenu;

    hMenu = (HMENU)NtUserCallNoParam(_NOPARAM_ROUTINE_CREATEMENU);
    TEST(IsMenu(hMenu) == TRUE);
    DestroyMenu(hMenu);

}
Esempio n. 18
0
BOOL wbSetMenuItemImage(PWBOBJ pwbo, HANDLE hImage)
{
	if(!pwbo || !pwbo->hwnd || !IsMenu((HMENU)pwbo->hwnd))
		return FALSE;

	if(hImage)
		return SetMenuItemBitmaps((HMENU)pwbo->hwnd, pwbo->id, MF_BYCOMMAND, (HBITMAP)hImage, (HBITMAP)hImage);
	else
		return FALSE;
}
Esempio n. 19
0
void CMainMenu::ResetMenu(void) 
{
	WriteTrace(TraceDebug,__FUNCTION__ ": Start");
	if (!g_Settings->LoadBool(UserInterface_InFullScreen))
	{
		//Create a new window with all the items
		WriteTrace(TraceDebug,__FUNCTION__ ": Create Menu");
		HMENU hMenu = (HMENU)CreateMenu();
		FillOutMenu(hMenu);
		WriteTrace(TraceDebug,__FUNCTION__ ": Create Menu Done");

		//save old menu to destroy latter
		HMENU OldMenuHandle;
		{
			CGuard Guard(m_CS);
			OldMenuHandle = m_MenuHandle;

			//save handle and re-attach to a window
			WriteTrace(TraceDebug,__FUNCTION__ ": Attach Menu");
			m_MenuHandle = hMenu;
		}
		_Gui->SetWindowMenu(this);

		WriteTrace(TraceDebug,__FUNCTION__ ": Remove plugin menu");
		if (g_Plugins->Gfx() != NULL && IsMenu((HMENU)g_Plugins->Gfx()->GetDebugMenu()))
		{
			RemoveMenu((HMENU)OldMenuHandle,(DWORD)g_Plugins->Gfx()->GetDebugMenu(), MF_BYCOMMAND); 
		}
		if (g_Plugins->RSP() != NULL && IsMenu((HMENU)g_Plugins->RSP()->GetDebugMenu()))
		{
			RemoveMenu((HMENU)OldMenuHandle,(DWORD)g_Plugins->RSP()->GetDebugMenu(), MF_BYCOMMAND); 
		}
		WriteTrace(TraceDebug,__FUNCTION__ ": Destroy Old Menu");

		//Destroy the old menu
		DestroyMenu((HMENU)OldMenuHandle); 
	}

	ResetAccelerators();

	WriteTrace(TraceDebug,__FUNCTION__ ": Done");
}
Esempio n. 20
0
INT_PTR StartupSilence()
{
	InitSettings();
	HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded);
	mir_forkthread((pThreadFunc)AdvSt, NULL);
	CreateServiceFunction(SS_SERVICE_NAME, SturtupSilenceEnabled);
	CreateServiceFunction(SS_SILENCE_CONNECTION, SilenceConnection);
	IsMenu();
	HookEvent(ME_OPT_INITIALISE, InitializeOptions);
	return 0;
}
Esempio n. 21
0
void CMymenuView::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct) 
{
	BOOL setflag=FALSE;
	if(lpMeasureItemStruct->CtlType==ODT_MENU){
		if(IsMenu((HMENU)lpMeasureItemStruct->itemID)&&BCMenu::IsMenu((HMENU)lpMeasureItemStruct->itemID)){
			popmenu.MeasureItem(lpMeasureItemStruct);
			setflag=TRUE;
		}
	}
	if(!setflag)CView::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}
Esempio n. 22
0
INT
Test_NoParamRoutine_CreatePopupMenu(PTESTINFO pti) /* 1 */
{
	HMENU hMenu;

	hMenu = (HMENU)NtUserCallNoParam(_NOPARAM_ROUTINE_CREATEMENUPOPUP);
	TEST(IsMenu(hMenu) == TRUE);
	DestroyMenu(hMenu);

	return APISTATUS_NORMAL;
}
Esempio n. 23
0
void Element::RemoveElement(Element *pChild)
	{
	// child removed: forward to parent
	if (pParent)
		pParent->RemoveElement(pChild);
	else if (this != Screen::GetScreenS())
		// always ensure removal from screen!
		if (Screen::GetScreenS())
			// but not if this is the context menu, to avoid endless flip-flop!
			if (!IsMenu())
				Screen::GetScreenS()->RemoveElement(pChild);
	}
Esempio n. 24
0
BOOL wbGetMenuItemChecked(PWBOBJ pwbo)
{
	MENUITEMINFO mi;

	if(!pwbo || !pwbo->hwnd || !IsMenu((HMENU)pwbo->hwnd))
		return FALSE;

	mi.cbSize = sizeof(MENUITEMINFO);
	mi.fMask = MIIM_STATE;

	GetMenuItemInfo((HMENU)pwbo->hwnd, pwbo->id, FALSE, &mi);
	return mi.fState ? TRUE : FALSE;
}
Esempio n. 25
0
void CButtonST::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct) 
{
	BOOL bSetFlag = FALSE;
	if (lpMeasureItemStruct->CtlType == ODT_MENU)
	{
		if (IsMenu((HMENU)lpMeasureItemStruct->itemID) && BCMenu::IsMenu((HMENU)lpMeasureItemStruct->itemID))
		{
			m_menuPopup.MeasureItem(lpMeasureItemStruct);
			bSetFlag = TRUE;
		} // if
	} // if
	if (!bSetFlag) CButton::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
} // End of OnMeasureItem
Esempio n. 26
0
BOOL CNewPropertySheet::OnInitDialog()
{
  BOOL bRetval = CPropertySheet::OnInitDialog();

  HMENU hMenu = m_SystemNewMenu.Detach();
  HMENU hSysMenu = ::GetSystemMenu(m_hWnd,FALSE);
  if(hMenu!=hSysMenu)
  {
    if(IsMenu(hMenu))
    {
      ::DestroyMenu(hMenu);
    }
  }
  m_SystemNewMenu.Attach(hSysMenu);
  m_DefaultNewMenu.LoadMenu(::GetMenu(m_hWnd));

  if(IsMenu(m_DefaultNewMenu.m_hMenu))
  {
    UpdateMenuBarColor(m_DefaultNewMenu);
  }

  return bRetval;
}
Esempio n. 27
0
TaskButton::TaskButton(IPane *parent, IPainter *backgroundPainter, IPainter *textPainter,
    IEventHandler *eventHandler, HWND window, TaskData &taskData)
  : mEventHandler(eventHandler)
  , mIconPainter(nullptr)
  , mMenu(nullptr)
  , mMenuWindow(nullptr)
  , mOverlayIconPainter(nullptr)
  , mTaskData(taskData)
  , mFlashInterval(0)
  , mWindow(window)
{
  mIconPosition = NRECT(NLENGTH(0, 0, 0), NLENGTH(0, 0, 0), NLENGTH(0, 0, 32), NLENGTH(0, 0, 32));
  mIconPainter = nCore::CreateImagePainter();
  mIconPainter->SetPosition(mIconPosition, nullptr);
  mIconPainter->SetImage(nCore::GetWindowIcon(window, 32));

  mOverlayIconPosition =
    NRECT(NLENGTH(0, 0, 16), NLENGTH(0, 0, 16), NLENGTH(0, 0, 32), NLENGTH(0, 0, 32));
  mOverlayIconPainter = nCore::CreateImagePainter();
  mOverlayIconPainter->SetPosition(mOverlayIconPosition, nullptr);

  PaneInitData initData;
  ZeroMemory(&initData, sizeof(PaneInitData));
  initData.cbSize = sizeof(PaneInitData);
  initData.messageHandler = this;
  IPainter *painters[] = { backgroundPainter, textPainter, mIconPainter, mOverlayIconPainter };
  initData.painters = painters;
  initData.numPainters = _countof(painters);
  initData.states = gButtonStates;
  initData.numStates = gNumButtonStates;
  mPane = parent->CreateChild(&initData);

  if (IsIconic(window)) {
    ActivateState(State::Minimized);
  }
  if (window == gActiveWindow) {
    ActivateState(State::Active);
  }

  wchar_t windowText[256];
  GetWindowText(window, windowText, 256);
  mPane->SetText(windowText);

  // Reset the system menu for the window
  mMenu = GetSystemMenu(mWindow, FALSE);
  if (!IsMenu(mMenu)) {
    GetSystemMenu(mWindow, TRUE);
    mMenu = GetSystemMenu(mWindow, FALSE);
  }
}
void CDCGFFrameWindow::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct) 
{
	BOOL setflag=FALSE;
	if(lpMeasureItemStruct->CtlType==ODT_MENU){
		if(IsMenu((HMENU)lpMeasureItemStruct->itemID)){
			CMenu* cmenu = 
				CMenu::FromHandle((HMENU)lpMeasureItemStruct->itemID);
			
			if(m_Menu.IsMenu(cmenu)||m_DefaultMenu.IsMenu(cmenu)){
				m_Menu.MeasureItem(lpMeasureItemStruct);
				setflag=TRUE;
			}
		}
	}
	
	if(!setflag)CMDIFrameWnd::OnMeasureItem(nIDCtl, lpMeasureItemStruct);	
}
Esempio n. 29
0
BOOL wbSetMenuItemChecked(PWBOBJ pwbo, BOOL bState)
{
	if(!pwbo || !pwbo->hwnd || !IsMenu((HMENU)pwbo->hwnd))
		return FALSE;

	/*
	MENUITEMINFO mi;

	mi.cbSize = sizeof(MENUITEMINFO);
	mi.fMask = MIIM_STATE;
	mi.fState = bState ? MFS_CHECKED : MFS_UNCHECKED;

	return SetMenuItemInfo(pwbo->hwnd, pwbo->id, FALSE, &mi);
	*/

	return (CheckMenuItem((HMENU)pwbo->hwnd, pwbo->id, bState ? MF_CHECKED : MF_UNCHECKED) != 0xFFFFFFFF);
}
Esempio n. 30
0
UINT SMenu::TrackPopupMenu(
    UINT uFlags,
    int x,
    int y,
    HWND hWnd,
    LPCRECT prcRect
)
{
    SASSERT(IsMenu(m_hMenu));

    SMenuODWnd menuOwner(hWnd);
    *(static_cast<SMenuAttr*>(&menuOwner))=m_menuAttr;
    menuOwner.Create(NULL,WS_POPUP,WS_EX_NOACTIVATE,0,0,0,0,NULL,NULL);
    UINT uNewFlags=uFlags|TPM_RETURNCMD;
    UINT uRet=::TrackPopupMenu(m_hMenu,uNewFlags,x,y,0,menuOwner.m_hWnd,prcRect);
    menuOwner.DestroyWindow();
    if(uRet && !(uFlags&TPM_RETURNCMD)) ::SendMessage(hWnd,WM_COMMAND,uRet,0);
    return uRet;
}