Esempio n. 1
0
static int onLButtonUp(HWND hwnd, int x, int y, UINT)
{
    bDrag = false;

    if (nVidFullscreen) {
        if (hwnd != hScrnWnd) {
            return 1;
        }

        if (useDialogs()) {
            RECT clientRect;
            GetWindowRect(hwnd, &clientRect);
            int clientx = clientRect.left + x;
            int clienty = clientRect.top + y;

            TrackPopupMenuEx(hMenuPopup, TPM_LEFTALIGN | TPM_TOPALIGN, clientx, clienty, hwnd, NULL);
            return 0;
        }
    } else {
        if (!bMenuEnabled) {
            RECT clientRect;
            GetWindowRect(hwnd, &clientRect);
            int clientx = clientRect.left + x;
            int clienty = clientRect.top + y;

            if ((nLeftButtonX - clientx) < nDragX && (nLeftButtonX - clientx) > -nDragX
                    && (nLeftButtonY - clienty) < nDragY && (nLeftButtonY - clienty) > -nDragY) {
                TrackPopupMenuEx(hMenuPopup, TPM_LEFTALIGN | TPM_TOPALIGN, clientx, clienty, hwnd, NULL);
                return 0;
            }
        }
    }

    return 1;
}
Esempio n. 2
0
void CtrlBreakpointList::showBreakpointMenu(int itemIndex, const POINT &pt)
{
	POINT screenPt(pt);
	ClientToScreen(wnd, &screenPt);

	bool isMemory;
	int index = getBreakpointIndex(itemIndex, isMemory);
	if (index == -1)
	{
		HMENU subMenu = GetSubMenu(g_hPopupMenus, POPUP_SUBMENU_ID_NEWBREAKPOINT);
		
		switch (TrackPopupMenuEx(subMenu, TPM_RIGHTBUTTON | TPM_RETURNCMD, screenPt.x, screenPt.y, wnd, 0))
		{
		case ID_DISASM_ADDNEWBREAKPOINT:
			{		
				BreakpointWindow bpw(wnd,cpu);
				if (bpw.exec()) bpw.addBreakpoint();
			}
			break;
		}
	} else {
		MemCheck mcPrev;
		BreakPoint bpPrev;
		if (isMemory) {
			mcPrev = displayedMemChecks_[index];
		} else {
			bpPrev = displayedBreakPoints_[index];
		}

		HMENU subMenu = GetSubMenu(g_hPopupMenus, POPUP_SUBMENU_ID_BREAKPOINTLIST);
		if (isMemory) {
			CheckMenuItem(subMenu, ID_DISASM_DISABLEBREAKPOINT, MF_BYCOMMAND | (mcPrev.result & MEMCHECK_BREAK ? MF_CHECKED : MF_UNCHECKED));
		} else {
			CheckMenuItem(subMenu, ID_DISASM_DISABLEBREAKPOINT, MF_BYCOMMAND | (bpPrev.enabled ? MF_CHECKED : MF_UNCHECKED));
		}

		switch (TrackPopupMenuEx(subMenu, TPM_RIGHTBUTTON | TPM_RETURNCMD, screenPt.x, screenPt.y, wnd, 0))
		{
		case ID_DISASM_DISABLEBREAKPOINT:
			if (isMemory) {
				CBreakPoints::ChangeMemCheck(mcPrev.start, mcPrev.end, mcPrev.cond, MemCheckResult(mcPrev.result ^ MEMCHECK_BREAK));
			} else {
				CBreakPoints::ChangeBreakPoint(bpPrev.addr, !bpPrev.enabled);
			}
			break;
		case ID_DISASM_EDITBREAKPOINT:
			editBreakpoint(index);
			break;
		case ID_DISASM_ADDNEWBREAKPOINT:
			{		
				BreakpointWindow bpw(wnd,cpu);
				if (bpw.exec()) bpw.addBreakpoint();
			}
			break;
		}
	}
}
int PopUpMenu(const MenuVec &menu_items, int selected_index, const void *hwnd)
{
    HMENU menu = CreatePopupMenu();

    if(menu)
    {
        for(int i=0; i < menu_items.size(); i++)
        {
            std::string label = menu_items[i];

            UINT flags = (i == selected_index ? (MF_STRING | MF_CHECKED) : MF_STRING);

            if(label == "(-")
            {
                flags |= MF_SEPARATOR;
            }
            else if(label == "$OCIO")
            {
                char *file = std::getenv("OCIO");

                if(file == NULL)
                    flags |= MF_GRAYED;
            }
            else if(label == "(nada)")
            {
                flags |= MF_GRAYED;

                char appdata_path[MAX_PATH];
                HRESULT result = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL,
                                                    SHGFP_TYPE_CURRENT, appdata_path);

                if(result == S_OK)
                {
                    label = "No configs in " + std::string(appdata_path) + "\\OpenColorIO\\";
                }
            }

            AppendMenu(menu, flags, i + 1, label.c_str());
        }

        POINT pos;
        GetCursorPos(&pos);

        int result = TrackPopupMenuEx(menu,
                            (TPM_NONOTIFY | TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD),
                            pos.x, pos.y, (HWND)hwnd, NULL);

        DestroyMenu(menu);

        if(result == 0)
        {
            // means the user clicked off the menu
            return selected_index;
        }
        else
            return result - 1;
    }
    else
        return selected_index;
}
Esempio n. 4
0
void CtrlMemView::onMouseUp(WPARAM wParam, LPARAM lParam, int button)
{
	if (button==2)
	{
		//popup menu?
		POINT pt;
		GetCursorPos(&pt);
		switch (TrackPopupMenuEx(GetSubMenu(g_hPopupMenus,0),TPM_RIGHTBUTTON|TPM_RETURNCMD,pt.x,pt.y,wnd,0))
		{
		case ID_MEMVIEW_DUMP:
			MessageBox(wnd,"This feature has not been implemented.","Sorry",0);
			break;

		case ID_MEMVIEW_COPYVALUE:
			{
				char temp[24];
				sprintf(temp,"%08x",Memory::ReadUnchecked_U32(selection));
				W32Util::CopyTextToClipboard(wnd,temp);
			}
			break;
		}
		return;
	}
	int x = LOWORD(lParam); 
	int y = HIWORD(lParam); 
	if (x>16)
	{
		curAddress=yToAddress(y);
		selecting=false;
		ReleaseCapture();
		redraw();
	}
}
Esempio n. 5
0
void ShowTrayMenu(HWND hwnd)
{
    POINT pt;
    GetCursorPos(&pt);
    HMENU hMenu;

    hMenu = CreatePopupMenu();

    if(hMenu)
    {
        if( IsWindowVisible(hwnd) )
            InsertMenu(hMenu, -1, MF_BYPOSITION, SWM_HIDE, TEXT("Hide"));
        else
            InsertMenu(hMenu, -1, MF_BYPOSITION, SWM_SHOW, TEXT("Show"));
        if (state == READY)
            InsertMenu(hMenu, -1, MF_BYPOSITION, SWM_CONN, TEXT("Connect"));
        else
            InsertMenu(hMenu, -1, MF_BYPOSITION, SWM_LOGOFF, TEXT("Log Off"));
        InsertMenu(hMenu, -1, MF_BYPOSITION, SWM_EXIT, TEXT("Exit"));
        // note:    must set window to the foreground or the
        //            menu won't disappear when it should
        SetForegroundWindow(hwnd);

        TrackPopupMenuEx(hMenu, TPM_BOTTOMALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON,
            pt.x, pt.y, hwnd, NULL );
        DestroyMenu(hMenu);
    }
}
Esempio n. 6
0
// Windows procedure override.
LRESULT Brainchild::WindowProc( UINT uMsg, WPARAM wParam, LPARAM lParam )
{
  // Evaluate the message...
	switch ( uMsg )
	{
		case	WM_KEYDOWN:
      /*if (wParam == 13)   // Return key
        m_pOwner->m_pFrame->SendMessage(WM_COMMAND, IDM_OPEN_SELECTED_PATH);*/

      // Pass on all keys except the Context menu key.
			if ( wParam != 0x5D )
				break;

		case	WM_RBUTTONUP:
		{
			// Open the context menu at the cursor position.
			ClsPoint pt;
			GetCursorPos( pt );
			TrackPopupMenuEx( m_pOwner->m_pFrame->m_ContextMenu, TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.X(), pt.Y(), *m_pOwner->m_pFrame, NULL );

			// If we got here because of a Context menu key
			// we return so that the brainchild control does
			// not get a chance to process it.
			if ( uMsg == WM_KEYDOWN && wParam == 0x5D ) return 0;
			break;
		}
	}
	return ClsBrainchild::WindowProc( uMsg, wParam, lParam );
}
void ShowContextMenu(HWND hwnd, POINT pt)
{
    HMENU hMenu = LoadMenu(g_hInst, MAKEINTRESOURCE(IDC_CONTEXTMENU));
    if (hMenu)
    {
        HMENU hSubMenu = GetSubMenu(hMenu, 0);
        if (hSubMenu)
        {
            // our window must be foreground before calling TrackPopupMenu or the menu will not disappear when the user clicks away
            SetForegroundWindow(hwnd);

            // respect menu drop alignment
            UINT uFlags = TPM_RIGHTBUTTON;
            if (GetSystemMetrics(SM_MENUDROPALIGNMENT) != 0)
            {
                uFlags |= TPM_RIGHTALIGN;
            }
            else
            {
                uFlags |= TPM_LEFTALIGN;
            }

            TrackPopupMenuEx(hSubMenu, uFlags, pt.x, pt.y, hwnd, NULL);
        }
        DestroyMenu(hMenu);
    }
}
//----------------------------------------------------------------------------------------------
//	ShowRightPopupMenu
//----------------------------------------------------------------------------------------------
VOID CStatusAreaIcon::ShowRightPopupMenu()
{
	//	プロパティ シートの状態を取得する
	BOOL	PropertySheetOpened	= PropertySheet->IsOpened();

	//	ポップアップ メニューを作成する
	HMENU	Menu		= LoadMenu( Instance, MAKEINTRESOURCE( IDR_MENU ) );
	HMENU	PopupMenu	= GetSubMenu( Menu, 0 );

	//	「プロパティ」をデフォルトにする
	MENUITEMINFO	ItemInfo;
	ZeroMemory( &ItemInfo, sizeof( ItemInfo ) );
	ItemInfo.cbSize	= sizeof( ItemInfo );
	GetMenuItemInfo( PopupMenu, IDM_PROPERTY, FALSE, &ItemInfo );
	ItemInfo.fMask	= MIIM_STATE;
	ItemInfo.fState	= MFS_ENABLED | MFS_DEFAULT;
	if( PropertySheetOpened == TRUE )
	{
		ItemInfo.fState	|= MFS_DISABLED;
	}
	SetMenuItemInfo( PopupMenu, IDM_PROPERTY, FALSE, &ItemInfo );

	//	「設定の自動切換え」のチェックを設定する
	GetMenuItemInfo( PopupMenu, IDM_AUTO_SETTING_CHANGE, FALSE, &ItemInfo );
	ItemInfo.fMask	= MIIM_STATE;
	ItemInfo.fState	= MFS_ENABLED;
	if( Setting->AutoSettingChange == TRUE )
	{
		ItemInfo.fState	|= MFS_CHECKED;
	}
	if( PropertySheetOpened == TRUE )
	{
		ItemInfo.fState	|= MFS_DISABLED;
	}
	SetMenuItemInfo( PopupMenu, IDM_AUTO_SETTING_CHANGE, FALSE, &ItemInfo );

	//	「終了」の有効・無効を設定する
	GetMenuItemInfo( PopupMenu, IDM_EXIT, FALSE, &ItemInfo );
	ItemInfo.fMask	= MIIM_STATE;
	ItemInfo.fState	= MFS_ENABLED;
	if( PropertySheetOpened == TRUE )
	{
		ItemInfo.fState	|= MFS_DISABLED;
	}
	SetMenuItemInfo( PopupMenu, IDM_EXIT, FALSE, &ItemInfo );

	//	ポップアップ メニューを表示する
	SetForegroundWindow( Wnd );
	POINT	CursorPos;
	GetCursorPos( &CursorPos );
	TrackPopupMenuEx(
		 PopupMenu
		,TPM_LEFTALIGN | TPM_RIGHTBUTTON
		,CursorPos.x
		,CursorPos.y
		,Wnd
		,NULL );
	DestroyMenu( Menu );
	PostMessage( Wnd, WM_NULL, 0, 0 );
}
Esempio n. 9
0
/**
 * name:	OnMenuPopup
 * class:	CAnnivEditCtrl
 * desc:	is called to show a popup menu for all anniversaries of a contact
 * param:	none
 * return:	nothing
 **/
void CAnnivEditCtrl::OnMenuPopup()
{
	POINT pt = { 0, 0 };
	RECT rc;
	HMENU hMenu;
	WORD i;

	if (hMenu = CreatePopupMenu()) {
		SetFocus(_hBtnMenu);

		MENUITEMINFO mii = { 0 };
		mii.cbSize = sizeof(mii);
		mii.fMask = MIIM_ID|MIIM_STRING|MIIM_STATE;

		// insert the items
		for (i = 0; i < _numDates; i++) {
			mii.fState = _pDates[i]->IsValid() ? MFS_CHECKED : MFS_UNCHECKED;
			mii.dwTypeData = (LPTSTR)_pDates[i]->Description();
			mii.wID = WM_USER + i;
			if (!InsertMenuItem(hMenu, i, TRUE, &mii)) {
				DestroyMenu(hMenu);
				return;
			}
		}
		ClientToScreen(_hBtnMenu, &pt);
		GetClientRect(_hBtnMenu, &rc);
		i = TrackPopupMenuEx(hMenu, TPM_RIGHTALIGN|TPM_RETURNCMD, pt.x + rc.right, pt.y + rc.bottom, _hwndDlg, NULL);
		DestroyMenu(hMenu);
		SendMessage(_hBtnMenu, BM_SETCHECK, NULL, NULL);
		if (i >= WM_USER) SetCurSel(i - WM_USER);
	}
}
Esempio n. 10
0
bool notify_handler_rclick(const std::map<int, std::string>& menu, HWND hwnd, int id, LPNMHDR lpNMHdr, is_enable_cb fn)
{
	if (id != listview_id) {
		return false;
	}
	LVITEM lvi;
	LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE)lpNMHdr;

	POINT point = {lpnmitem->ptAction.x, lpnmitem->ptAction.y};
	MapWindowPoints(lpNMHdr->hwndFrom, NULL, &point, 1);

	lvi.iItem = lpnmitem->iItem;
	lvi.mask = LVIF_PARAM;
	lvi.iSubItem = 0;
	ListView_GetItem(lpNMHdr->hwndFrom, &lvi);

	HMENU hpopup_candidate = CreatePopupMenu();
	for (std::map<int, std::string>::const_iterator it = menu.begin(); it != menu.end(); ++ it) {
		AppendMenu(hpopup_candidate, MF_STRING, it->first, utf8_2_ansi(it->second.c_str()));
		if (lpnmitem->iItem < 0 || (fn && !fn(hwnd, it->first, lvi.lParam))) {
			EnableMenuItem(hpopup_candidate, it->first, MF_BYCOMMAND | MF_GRAYED);
		}
	}

	TrackPopupMenuEx(hpopup_candidate, 0, 
		point.x, 
		point.y, 
		hwnd, 
		NULL);

	DestroyMenu(hpopup_candidate);

	lParam = lvi.lParam;
	return true;
}
Esempio n. 11
0
//-----------------------------------------------------------------------------
// Name: OnRightButtonUp()
// Desc: Pop up a context menu.
//-----------------------------------------------------------------------------
VOID OnRightButtonUp( HWND hWnd )
{
    // Place a popup menu where the mouse curent is
    POINT pt;
    pt.x = g_x;
    pt.y = g_y;
    ClientToScreen( hWnd, &pt );
    HMENU hMenuPopup = GetSystemMenu( hWnd, FALSE );

    // Hide the cursor while moving it so you don't get annoying flicker.
    ShowCursor( FALSE );
    InvalidateCursorRect( hWnd );

    // Unacquire the devices so the user can interact with the menu.
    g_bActive = FALSE;
    SetAcquire();

    // Put the Windows cursor at the same location as our virtual cursor.
    SetCursorPos( pt.x, pt.y );

    // Show the cursor now that it is moved 
    ShowCursor( TRUE );
    InvalidateCursorRect( hWnd );

    // Track the popup menu and return the menu item selected
    UINT iMenuID = TrackPopupMenuEx( hMenuPopup, TPM_RIGHTBUTTON|TPM_RETURNCMD,
                                     pt.x, pt.y, hWnd, 0 );

    if( 0 != iMenuID ) // If a menu item was selected
        PostMessage( hWnd, WM_SYSCOMMAND, iMenuID, 0L );
}
Esempio n. 12
0
void TrayIcon::showMenu(POINT pos) {
	// Create the pop-up menu for the icon.
	HMENU menu = CreatePopupMenu();
	if (!menu) {
		return;
	}

	// Populate the pop-up menu.
	AppendMenu(menu, (isEnabled() ? MF_CHECKED : 0) | MF_ENABLED | MF_STRING, IDM_ENABLE, _T("En&able Taekwindow"));
	AppendMenu(menu, MF_ENABLED | MF_STRING, IDM_CONFIGURE, _T("&Preferences..."));
	AppendMenu(menu, MF_SEPARATOR, 0, NULL);
	AppendMenu(menu, MF_ENABLED | MF_STRING, IDM_EXIT, _T("&Exit"));

	// Show the pop-up menu.
	// Set the foreground window, so that the menu will be closed when the user clicks elsewhere.
	// Post a dummy message to get it to show up the next time (I don't see this problem myself, but the KB says it).
	// See Microsoft KB article 135788: "PRB: Menus for Notification Icons Do Not Work Correctly".
	SetForegroundWindow(d_window.handle());
	TrackPopupMenuEx(menu,
		TPM_RIGHTBUTTON | (GetSystemMetrics(SM_MENUDROPALIGNMENT) ? TPM_RIGHTALIGN : TPM_LEFTALIGN),
		pos.x, pos.y, d_window.handle(), NULL);
	PostMessage(d_window.handle(), WM_NULL, 0, 0);

	DestroyMenu(menu);
}
Esempio n. 13
0
void FileBrowseMenu(int x, int y, HWND hwndToolbar)
{
    if (fileBrowseInfo)
    {
        FILEBROWSE *p = fileBrowseInfo;
        HMENU popup = CreatePopupMenu();    
        int i = 0, j;
        memset(ordered, 0, sizeof(ordered));
        while (p && i < MAX_BROWSE)
        {
            ordered[i++] = p;
            p = p->next;
        }
        qsort(ordered, i, sizeof(FILEBROWSE *), fbcomp);
    
        for (j=0; j < i;)
        {
            FILEBROWSE *cur = ordered[j];
            HMENU internalPop = CreatePopupMenu();
            for ( ;j < i && cur->info == ordered[j]->info; j++)
            {
                InsertMenu(internalPop, -1, MF_BYPOSITION | MF_STRING, j + ID_FILEBROWSE_LIST, GetName(j));
            }
            InsertMenu(popup, -1, MF_BYPOSITION | MF_POPUP | MF_STRING, (UINT_PTR)internalPop, cur->info->dwTitle);
        }
        InsertBitmapsInMenu(popup);
        TrackPopupMenuEx(popup, TPM_TOPALIGN | TPM_LEFTBUTTON, x, y, hwndFrame, NULL);
        DestroyMenu(popup);
    }
} 
Esempio n. 14
0
bool OsShell::openShellContextMenuForObjects(const std::vector<std::wstring>& objects, int xPos, int yPos, void * parentWindow)
{
	ComInitializer comInitializer;

	IContextMenu * imenu = 0;
	HMENU hMenu = NULL;
	if (!prepareContextMenuForObjects(objects, parentWindow, hMenu, imenu) || !hMenu || !imenu)
		return false;

	CComInterfaceReleaser menuReleaser(imenu);

	const int iCmd = TrackPopupMenuEx(hMenu, TPM_RETURNCMD, xPos, yPos, (HWND)parentWindow, NULL);
	if (iCmd > 0)
	{
		CMINVOKECOMMANDINFO info = { 0 };
		info.cbSize = sizeof(info);
		info.hwnd = (HWND)parentWindow;
		info.lpVerb  = MAKEINTRESOURCEA(iCmd - 1);
		info.nShow = SW_SHOWNORMAL;
		imenu->InvokeCommand((LPCMINVOKECOMMANDINFO)&info);
	}

	DestroyMenu(hMenu);

	return true;
}
Esempio n. 15
0
static VOID
OnContext(PMAIN_WND_INFO Info,
          LPARAM lParam)
{
    HTREEITEM hSelected;
    POINT pt;
    RECT rc;

    INT xPos = GET_X_LPARAM(lParam);
    INT yPos = GET_Y_LPARAM(lParam);

    hSelected = TreeView_GetSelection(Info->hTreeView);

    if (TreeView_GetItemRect(Info->hTreeView,
                         hSelected,
                         &rc,
                         TRUE))
    {
        if (GetCursorPos(&pt) &&
            ScreenToClient(Info->hTreeView, &pt) &&
            PtInRect(&rc, pt))
        {
            TrackPopupMenuEx(Info->hShortcutMenu,
                             TPM_RIGHTBUTTON,
                             xPos,
                             yPos,
                             Info->hMainWnd,
                             NULL);
        }
    }
}
Esempio n. 16
0
/*------------------------------------------------
  when the clock is right-clicked
  show pop-up menu
--------------------------------------------------*/
void OnContextMenu(HWND hwnd, HWND hwndClicked, int xPos, int yPos)
{
	WIN32_FIND_DATA fd;
	HANDLE hfind;
	TPMPARAMS tpmp;
	LPTPMPARAMS lptpmp = NULL;
	
	SendOnContextMenu();
	
	if(m_tcmenutxt[0] == 0 || !IsFile(m_tcmenutxt))
	{
		// common/tclang.c
		FindFileWithLangCode(m_tcmenutxt, GetUserDefaultLangID(), TCMENUTXT);
	}
	
	hfind = FindFirstFile(m_tcmenutxt, &fd);
	if(hfind != INVALID_HANDLE_VALUE)
	{
		FindClose(hfind);
		if(m_lasttime != fd.ftLastWriteTime.dwLowDateTime)
		{
			EndContextMenu();
			m_lasttime = fd.ftLastWriteTime.dwLowDateTime;
		}
	}
	else m_lasttime = 0;
	
	// create popup menu and append items from tcmenu.txt
	if(!m_hMenu)
	{
		m_hMenu = CreatePopupMenu();
		if(hfind != INVALID_HANDLE_VALUE)
			LoadMenuFromText(m_hMenu, m_tcmenutxt, &fd);
		else
			LoadMenuFromText(m_hMenu, NULL, NULL);
	}
	
	CheckMenu(m_hMenu);
	
	// get keyboard input
	SetFocusTClockMain(hwnd);
	
	// APP key
	if((xPos == -1) && (yPos == -1))
	{
		tpmp.cbSize = sizeof(tpmp);
		lptpmp = &tpmp;
		GetWindowRect(g_hwndClock, &tpmp.rcExclude);
		xPos = tpmp.rcExclude.right;
		yPos = tpmp.rcExclude.top;
	}
	
	// open popup menu
	TrackPopupMenuEx(m_hMenu, TPM_LEFTALIGN|TPM_RIGHTBUTTON,
		xPos, yPos, hwnd, lptpmp);
	
	PostMessage(hwnd, WM_NULL, 0, 0);
}
Esempio n. 17
0
void formation_notify_handler_rclick(HWND hdlgP, int DlgItem, LPNMHDR lpNMHdr)
{
	LVITEM					lvi;
	LPNMITEMACTIVATE		lpnmitem;
	int						icount;

	if (lpNMHdr->idFrom != IDC_TV_FORMATION_EXPLORER) {
		return;
	}

	// NM_表示对通用控件都通用,范围丛(0, 99)
	// TVN_表示只能TreeView通用,范围丛(400, 499)
	lpnmitem = (LPNMITEMACTIVATE)lpNMHdr;
	// 如果单击到的是复选框位置,把复选框状态置反
	// 当前定义的图标大小是16x16. ptAction反回的(x,y)是整个列表视图内的坐标,因而y值不大好判断
	// 认为如果x是小于16的就认为是击中复选框
	
	POINT point = {lpnmitem->ptAction.x, lpnmitem->ptAction.y};
	MapWindowPoints(lpNMHdr->hwndFrom, NULL, &point, 1);

	lvi.iItem = lpnmitem->iItem;
	lvi.mask = LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE;
	lvi.iSubItem = 0;
	lvi.pszText = gdmgr._menu_text;
	lvi.cchTextMax = _MAX_PATH;
	ListView_GetItem(lpNMHdr->hwndFrom, &lvi);

	icount = ListView_GetItemCount(lpNMHdr->hwndFrom);

	if (lpNMHdr->idFrom == IDC_TV_FORMATION_EXPLORER) {
		EnableMenuItem(gdmgr._hpopup_editor, IDM_ADD, MF_BYCOMMAND);
		if (lpnmitem->iItem < 0) {
			EnableMenuItem(gdmgr._hpopup_editor, IDM_EDIT, MF_BYCOMMAND | MF_GRAYED);
			EnableMenuItem(gdmgr._hpopup_editor, IDM_DELETE, MF_BYCOMMAND | MF_GRAYED);
		}

		TrackPopupMenuEx(gdmgr._hpopup_editor, 0, 
			point.x, 
			point.y, 
			hdlgP, 
			NULL);

		EnableMenuItem(gdmgr._hpopup_editor, IDM_ADD, MF_BYCOMMAND | MF_ENABLED);
		EnableMenuItem(gdmgr._hpopup_editor, IDM_EDIT, MF_BYCOMMAND | MF_ENABLED);
		EnableMenuItem(gdmgr._hpopup_editor, IDM_DELETE, MF_BYCOMMAND | MF_ENABLED);

		if (lpnmitem->iItem >= 0) {
			ns::clicked_formation = lpnmitem->iItem;
		}
		return;

	} 
	ns::type = DlgItem;
	ns::clicked_hero = lvi.lParam;

    return;
}
Esempio n. 18
0
LRESULT CWindow::OnRButtonUp(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    POINT pt = { LOWORD(lParam), HIWORD(lParam) };

    ClientToScreen(hWnd, &pt);
    TrackPopupMenuEx(m_hMenuPopup, 0, pt.x, pt.y, hWnd, NULL);

    return ERROR_SUCCESS;
}
Esempio n. 19
0
void CtrlMemView::onMouseUp(WPARAM wParam, LPARAM lParam, int button)
{
	if (button==2)
	{
		//popup menu?
		POINT pt;
		GetCursorPos(&pt);
		switch (TrackPopupMenuEx(GetSubMenu(g_hPopupMenus,0),TPM_RIGHTBUTTON|TPM_RETURNCMD,pt.x,pt.y,wnd,0))
		{
		case ID_MEMVIEW_DUMP:
     
			if (!Core_IsStepping()) // If emulator isn't paused
			{
				MessageBox(wnd,L"You have to pause the emulator first",0,0);
				break;
			}
			else
			{
				DumpMemoryWindow dump(wnd,debugger);
				dump.exec();
				break;
			}

		case ID_MEMVIEW_COPYVALUE:
			{
				char temp[24];

				// it's admittedly not really useful like this
				if (asciiSelected)
				{
					unsigned char c = Memory::IsValidAddress(curAddress) ? Memory::ReadUnchecked_U8(curAddress) : '.';
					if (c < 32|| c >= 128) c = '.';
					sprintf(temp,"%c",c);
				} else {
					sprintf(temp,"%02X",Memory::IsValidAddress(curAddress) ? Memory::ReadUnchecked_U8(curAddress) : 0xFF);
				}
				W32Util::CopyTextToClipboard(wnd,temp);
			}
			break;

		case ID_MEMVIEW_COPYADDRESS:
			{
				char temp[24];
				sprintf(temp,"0x%08X",curAddress);
				W32Util::CopyTextToClipboard(wnd,temp);
			}
			break;
		}
		return;
	}

	int x = LOWORD(lParam); 
	int y = HIWORD(lParam);
	ReleaseCapture();
	gotoPoint(x,y);
}
Esempio n. 20
0
void CAppWindow::ShowContextMenu()
{
	if (!AllowContextMenu())
	{
		return;
	}

	if (CPopupWindow::Instance() != NULL)
	{
		CPopupWindow::Instance()->CancelAll();
	}

	if (m_hPopupMenus != NULL)
	{
		DestroyMenu(m_hPopupMenus);
	}

	m_hPopupMenus = LoadMenu(CApp::Instance()->GetInstance(), MAKEINTRESOURCE(IDR_POPUP_MENUS));

	HMENU hSubMenu = GetSubMenu(m_hPopupMenus, 0);

	if (m_lpSession->GetState() == WSS_ONLINE || m_lpSession->GetState() == WSS_RECONNECTING)
	{
		DeleteMenu(hSubMenu, ID_TRAYICON_LOGIN, MF_BYCOMMAND);
	}
	else
	{
		DeleteMenu(hSubMenu, ID_TRAYICON_SIGNOUT, MF_BYCOMMAND);

		EnableMenuItem(hSubMenu, ID_TRAYICON_INBOX, MF_GRAYED | MF_BYCOMMAND);

		EnableMenuItem(hSubMenu, ID_TRAYICON_CHECKWAVESNOW, MF_GRAYED | MF_BYCOMMAND);
	}

	if (CVersion::Instance()->GetState() != VS_NONE)
	{
		EnableMenuItem(hSubMenu, ID_TRAYICON_CHECKFORUPDATESNOW, MF_GRAYED | MF_BYCOMMAND);
	}

	POINT p;

	GetCursorPos(&p);

	SetForegroundWindow(GetHandle());

	TrackPopupMenuEx(
		hSubMenu,
		TPM_VERTICAL | TPM_RIGHTALIGN,
		p.x,
		p.y,
		GetHandle(),
		NULL);

	PostMessage(WM_NULL);
}
Esempio n. 21
0
/*************************************************************************
 * FileMenu_TrackPopupMenuEx			[SHELL32.116]
 */
BOOL WINAPI FileMenu_TrackPopupMenuEx (
	HMENU hMenu,
	UINT uFlags,
	int x,
	int y,
	HWND hWnd,
	LPTPMPARAMS lptpm)
{
	TRACE("%p 0x%08x 0x%x 0x%x %p %p\n",
	hMenu, uFlags, x, y, hWnd, lptpm);
	return TrackPopupMenuEx(hMenu, uFlags, x, y, hWnd, lptpm);
}
Esempio n. 22
0
void feature_notify_handler_rclick(HWND hdlgP, int DlgItem, LPNMHDR lpNMHdr)
{
	LVITEM					lvi;
	LPNMITEMACTIVATE		lpnmitem;

	if (lpNMHdr->idFrom != IDC_LV_FEATURE_COMPLEX) {
		return;
	}

	// NM_表示对通用控件都通用,范围丛(0, 99)
	// TVN_表示只能TreeView通用,范围丛(400, 499)
	lpnmitem = (LPNMITEMACTIVATE)lpNMHdr;
	// 如果单击到的是复选框位置,把复选框状态置反
	// 当前定义的图标大小是16x16. ptAction反回的(x,y)是整个列表视图内的坐标,因而y值不大好判断
	// 认为如果x是小于16的就认为是击中复选框
	
	POINT point = {lpnmitem->ptAction.x, lpnmitem->ptAction.y};
	MapWindowPoints(lpNMHdr->hwndFrom, NULL, &point, 1);

	lvi.iItem = lpnmitem->iItem;
	lvi.mask = LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE;
	lvi.iSubItem = 0;
	lvi.pszText = gdmgr._menu_text;
	lvi.cchTextMax = _MAX_PATH;
	ListView_GetItem(lpNMHdr->hwndFrom, &lvi);

	HMENU hpopup = CreatePopupMenu();

	if (lpNMHdr->idFrom == IDC_LV_FEATURE_COMPLEX) {
		AppendMenu(hpopup, MF_STRING, IDM_ADD, utf8_2_ansi(_("Append after it")));
		AppendMenu(hpopup, MF_STRING, IDM_EDIT, utf8_2_ansi(_("Edit...")));
		AppendMenu(hpopup, MF_STRING, IDM_DELETE, utf8_2_ansi(_("Delete...")));

		if (lpnmitem->iItem < 0) {
			EnableMenuItem(hpopup, IDM_ADD, MF_BYCOMMAND | MF_GRAYED);
			EnableMenuItem(hpopup, IDM_EDIT, MF_BYCOMMAND | MF_GRAYED);
			EnableMenuItem(hpopup, IDM_DELETE, MF_BYCOMMAND | MF_GRAYED);
		}
	}

	TrackPopupMenuEx(hpopup, 0, 
		point.x, 
		point.y, 
		hdlgP, 
		NULL);

	DestroyMenu(hpopup);

	ns::type = DlgItem;
	ns::clicked_feature = lpnmitem->iItem;

    return;
}
Esempio n. 23
0
static void
on_right_click(NMITEMACTIVATE *note)
{
	enum MenuOption {
		PRIVATE_CHAT = 1,
		IGNORE_USER,
		ALIAS
	};

	HMENU menu;
	LVITEM item;
	User *user;
	enum MenuOption menu_option;

	if (note->iItem < 0)
		return;

	item.mask = LVIF_PARAM;
	item.iItem = note->iItem;
	SendMessage(note->hdr.hwndFrom, LVM_GETITEM, 0, (intptr_t)&item);
	user = (User *)item.lParam;

	menu = CreatePopupMenu();
	AppendMenu(menu, 0, PRIVATE_CHAT, L"Private chat");
	AppendMenu(menu, user->ignore ? MF_CHECKED : 0, IGNORE_USER, L"Ignore");
	AppendMenu(menu, 0, ALIAS, L"Set alias");
	SetMenuDefaultItem(menu, 1, 0);
	ClientToScreen(note->hdr.hwndFrom, &note->ptAction);
	menu_option = TrackPopupMenuEx(menu, TPM_RETURNCMD, note->ptAction.x,
	    note->ptAction.y, GetParent(note->hdr.hwndFrom), NULL);
	DestroyMenu(menu);

	switch (menu_option) {

	case PRIVATE_CHAT:
		ChatTab_focus_private(user);
		return;

	case IGNORE_USER:
		user->ignore = !user->ignore;
		return;

	case ALIAS: {
		char title[128];
		char buf[MAX_NAME_LENGTH_NUL];

		sprintf(title, "Set alias for %s", user->name);
		if (!GetTextDialog_create(title, strcpy(buf, UNTAGGED_NAME(user->name)), MAX_NAME_LENGTH_NUL))
			strcpy(user->alias, buf);
		return;
	}
	}
}
Esempio n. 24
0
static VOID CALLBACK sttMenuThread(PVOID param)
{
	HMENU hMenu = (HMENU)CallService(MS_CLIST_MENUBUILDCONTACT, (WPARAM)param, 0);

	TPMPARAMS tpmp = { 0 };
	tpmp.cbSize = sizeof(tpmp);
	BOOL menuRet = TrackPopupMenuEx(hMenu, TPM_RETURNCMD, menuMousePoint.x, menuMousePoint.y, (HWND)CallService(MS_CLUI_GETHWND, 0, 0), &tpmp);

	CallService(MS_CLIST_MENUPROCESSCOMMAND, MAKEWPARAM(LOWORD(menuRet), MPCF_CONTACTMENU), (LPARAM)param);

	DestroyMenu(hMenu);
}
 void OnPopup(UINT uMsg, long x, long y)
 {
     if(m_MessageLookup.ContainsKey(uMsg))
     {
         if(m_MessageLookup[uMsg]->m_MenuHandle)
         {
             SetForegroundWindow(m_HWND);
             TrackPopupMenuEx(m_MessageLookup[uMsg]->m_MenuHandle,
                 TPM_RIGHTBUTTON | TPM_VERNEGANIMATION, x, y, m_HWND, 0);
         }
     }
 }
//----------------------------------------------------------------------------------------------
//	ShowLeftPopupMenu
//----------------------------------------------------------------------------------------------
VOID CStatusAreaIcon::ShowLeftPopupMenu()
{
	//	プロパティ シートの状態を取得する
	BOOL	PropertySheetOpened	= PropertySheet->IsOpened();

	//	ポップアップ メニューを作成する
	HMENU	PopupMenu	= CreatePopupMenu();

	//	コントローラーの設定を表示する
	for( LONG Index = 0; Index < Setting->SettingCount; Index ++ )
	{
		MENUITEMINFO	ItemInfo;
		ZeroMemory( &ItemInfo, sizeof( ItemInfo ) );
		ItemInfo.cbSize	= sizeof( ItemInfo );
		ItemInfo.fMask	= MIIM_TYPE | MIIM_STATE | MIIM_ID;
		ItemInfo.fType	= MFT_STRING;
		ItemInfo.fState	= MFS_ENABLED;
		if( PropertySheetOpened == TRUE )
		{
			ItemInfo.fState	|= MFS_DISABLED;
		}
		ItemInfo.wID	= IDM_SETTING + Index;
		if( Setting->CurrentSettingIndex == Index )
		{
			ItemInfo.fState		|= MFS_CHECKED;
		}
		WCHAR	SettingName[MAX_PATH * 2];
		wcscpy_s( SettingName, Setting->SettingName[Index] );
		//	変更済みフラグが上がっていれば「(変更済み)」を設定する
		if( Setting->ModifiedFlag == TRUE && Setting->CurrentSettingIndex == Index )
		{
			WCHAR	Modified[MAX_PATH];
			LoadString( Instance, IDS_MODIFIED, Modified, MAX_PATH );
			wcscat_s( SettingName, Modified );
		}
		ItemInfo.dwTypeData	= SettingName;
		InsertMenuItem( PopupMenu, Index, TRUE, &ItemInfo );
	}

	//	ポップアップ メニューを表示する
	SetForegroundWindow( Wnd );
	POINT	CursorPos;
	GetCursorPos( &CursorPos );
	TrackPopupMenuEx(
		 PopupMenu
		,TPM_LEFTALIGN | TPM_RIGHTBUTTON
		,CursorPos.x
		,CursorPos.y
		,Wnd
		,NULL );
	DestroyMenu( PopupMenu );
	PostMessage( Wnd, WM_NULL, 0, 0 );
}
Esempio n. 27
0
void CtrlRegisterList::onMouseUp(WPARAM wParam, LPARAM lParam, int button)
{
	if (button==2)
	{
		//popup menu?
		int cat = category;
		int reg = selection;
		if (selection >= cpu->GetNumRegsInCategory(cat))
			return;
		POINT pt;
		GetCursorPos(&pt);
		u32 val = cpu->GetRegValue(cat,reg);			
		switch(TrackPopupMenuEx(GetSubMenu(g_hPopupMenus,3),TPM_RIGHTBUTTON|TPM_RETURNCMD,pt.x,pt.y,wnd,0))
		{
		case ID_REGLIST_GOTOINMEMORYVIEW:
			for (int i=0; i<numCPUs; i++)
				if (memoryWindow[i])
					memoryWindow[i]->Goto(val);
			break;
		case ID_REGLIST_GOTOINDISASM:
			for (int i=0; i<numCPUs; i++)
				if (disasmWindow[i])
					disasmWindow[i]->Goto(val);
			break;
		case ID_REGLIST_COPYVALUE:
			{
				char temp[24];
				sprintf(temp,"%08x",val);
				W32Util::CopyTextToClipboard(wnd,temp);
			}
			break;
		case ID_REGLIST_CHANGE:
			{
				if (InputBox_GetHex(GetModuleHandle(NULL),wnd,"Set new value",val,val))
				{
					cpu->SetRegValue(cat,reg,val);
					redraw();
				}
			}
			break;
		}
		return;
	}
	int x = LOWORD(lParam); 
	int y = HIWORD(lParam); 
	if (x>16)
	{
		selection=yToIndex(y);
		selecting=false;
		ReleaseCapture();
		redraw();
	}
}
Esempio n. 28
0
LRESULT MFTreeView::OnRClick(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
{
   HMENU ctxMenu = CreatePopupMenu();

   WTL::CTreeItem item = GetDropHilightItem();
   if (item.IsNull())
   {
      item = GetSelectedItem();
   }
   MFTreeViewItem* pItem = (MFTreeViewItem*)item.GetData();

   if (pItem == NULL)
   {
      DestroyMenu(ctxMenu);
      return 0;
   }

   unsigned int nextID = pItem->AppendMenuCmd(ctxMenu, 1, item);

   if (GetMenuItemCount(ctxMenu) > 0)
   {
      AppendMenu(ctxMenu, MF_SEPARATOR, 0, NULL);
   }
   unsigned int refreshID = nextID++;
   nextID = AppendMenu(ctxMenu, MF_STRING, refreshID, _T("Refresh"));

   if (GetMenuItemCount(ctxMenu) == 0)
   {
      DestroyMenu(ctxMenu);
      return 0;
   }

   POINT pos;
   GetCursorPos(&pos);

   int command = TrackPopupMenuEx(ctxMenu, TPM_NONOTIFY | TPM_RETURNCMD, pos.x, pos.y, pnmh->hwndFrom, NULL);

   if (!pItem->HandleMenuCmd(command, item))
   {
      if (command == refreshID)
      {
         WTL::CTreeItem parent = item.GetParent();
         parent.Expand(TVE_COLLAPSE | TVE_COLLAPSERESET);
         parent.Expand();
      }
   }

   DestroyMenu(ctxMenu);

   return 1;
}
Esempio n. 29
0
static void
menubar_perform_dropdown(menubar_t* mb)
{
    int item;
    DWORD btn_state;
    TPMPARAMS pmparams = {0};
    MENUBAR_TRACE("menubar_perform_dropdown(%p)", mb);

    pmparams.cbSize = sizeof(TPMPARAMS);

    mb->is_dropdown_active = TRUE;
    menubar_ht_enable(mb);
    SetFocus(mb->win);

    while(mb->pressed_item >= 0) {
        item = mb->pressed_item;

        if(mb->select_from_keyboard) {
            keybd_event(VK_DOWN, 0, 0, 0);
            keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
        }

        mb->select_from_keyboard = FALSE;
        mb->continue_hot_track = FALSE;

        MENUBAR_SENDMSG(mb->win, TB_SETHOTITEM, item, 0);
        btn_state = MENUBAR_SENDMSG(mb->win, TB_GETSTATE, item, 0);
        MENUBAR_SENDMSG(mb->win, TB_SETSTATE, item,
                        MAKELONG(btn_state | TBSTATE_PRESSED, 0));

        MENUBAR_SENDMSG(mb->win, TB_GETITEMRECT, item, &pmparams.rcExclude);
        MapWindowPoints(mb->win, HWND_DESKTOP, (POINT*)&pmparams.rcExclude, 2);

        MENUBAR_TRACE("menubar_perform_dropdown: ENTER TrackPopupMenuEx()");
        TrackPopupMenuEx(GetSubMenu(mb->menu, item),
                         TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL,
                         pmparams.rcExclude.left, pmparams.rcExclude.bottom,
                         mb->win, &pmparams);
        MENUBAR_TRACE("menubar_perform_dropdown: LEAVE TrackPopupMenuEx()");

        MENUBAR_SENDMSG(mb->win, TB_SETSTATE, item, MAKELONG(btn_state, 0));

        if(!mb->continue_hot_track)
            mb->pressed_item = -1;
    }

    menubar_reset_hot_item(mb);
    menubar_ht_disable(mb);
    mb->is_dropdown_active = FALSE;
    SetFocus(mb->old_focus);
}
Esempio n. 30
0
LRESULT CExtractDlg::OnNMClickLinkMolCount(int idCtrl, LPNMHDR pNMHDR, BOOL& bHandled)
{
	PNMLINK link = (PNMLINK) pNMHDR;
	switch(link->item.iLink)
	{
	case 0:		// Extract Count
		DisplayGroup(1);
		break;

	case 1:		// Select Output Directory
		if(!SUCCEEDED(Utils::DoFolderDialog(m_hWnd, _T("Extract Molecules to Folder..."), 
			m_params.folderPath, m_params.folderPath)))
		{
			//TODO: log
		}
		break;

	case 3:		// File Format
		DisplayGroup(2);
		break;

	case 2:
	case 4:
		POINT point;
		if(GetCursorPos(&point))
		{
			HMENU hMenu = LoadMenu(_AtlBaseModule.m_hInst, MAKEINTRESOURCE(IDR_EXTRACTMENU));
			if(hMenu)
			{
				int subMenuId = (link->item.iLink == 2) ? 0 : 1;
				HMENU hSubMenu = GetSubMenu(hMenu, subMenuId);

				//WORKAROUND: To be removed when provider issues with RXN -> CML, CDXML are fixed
				// disable CML,CDXML if source is reaction to avoid crash due to provider issue
				if((m_params.exportFormat == fmtRXNV2) || (m_params.exportFormat == fmtRXNV3))
				{
					EnableMenuItem(hSubMenu, ID_EXTRACTFORMAT_CML, MF_DISABLED);
					EnableMenuItem(hSubMenu, ID_EXTRACTFORMAT_CDXML, MF_DISABLED);
				}

				TrackPopupMenuEx(hSubMenu, TPM_LEFTALIGN, point.x, point.y, m_hWnd, NULL);
				DestroyMenu(hMenu);
			}
		}
		break;
	}

	UpdateLinkText();

	return 0;
}