本文整理汇总了C++中DestroyMenu函数的典型用法代码示例。如果您正苦于以下问题:C++ DestroyMenu函数的具体用法?C++ DestroyMenu怎么用?C++ DestroyMenu使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了DestroyMenu函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switch
void StatusWnd::onCommand(UINT id, HIMC hIMC)
{
switch( id )
{
case ID_CHI_ENG:
toggleChiEngMode(hIMC);
break;
case ID_FULL_HALF:
toggleShapeMode(hIMC);
break;
case ID_MENU:
{
HMENU menu = LoadMenu( g_dllInst, LPCTSTR(IDR_POPUP));
HMENU popup = GetSubMenu( menu, 0 );
RECT rc;
GetWindowRect(hwnd, &rc);
rc.left += 9;
UINT flag;
long y;
if((rc.top * 2) > GetSystemMetrics(SM_CYSCREEN) )
{
y = rc.top;
flag = TPM_BOTTOMALIGN|TPM_LEFTALIGN;
}
else
{
y = rc.bottom;
flag = TPM_TOPALIGN|TPM_LEFTALIGN;
}
TrackPopupMenu( popup, flag, rc.left, y, 0, hwnd, NULL);
DestroyMenu(menu);
break;
}
case ID_CONFIG:
case ID_ABOUT:
try {
HWND top = hwnd;
HWND desktop = GetDesktopWindow(), parent = NULL;
while( (parent=GetParent(top)) != desktop && parent )
top = parent;
EnableWindow( hwnd, FALSE );
if( id == ID_CONFIG )
ConfigureChewingIME(top);
else
DialogBox(g_dllInst, LPCTSTR(IDD_ABOUT), top, (DLGPROC)AboutDlgProc);
EnableWindow( hwnd, TRUE );
} catch (...)
{
OutputDebugString("Using die wnd");
}
break;
case ID_WEBSITE:
ShellExecute( NULL, "open", _T("http://chewing.im/"), NULL, NULL, SW_SHOWNORMAL );
break;
case ID_GROUP:
ShellExecute( NULL, "open", _T("http://groups.google.com/group/chewing"), NULL, NULL, SW_SHOWNORMAL );
break;
case ID_BUGREPORT:
ShellExecute( NULL, "open", _T("http://code.google.com/p/chewing/issues"), NULL, NULL, SW_SHOWNORMAL );
break;
case ID_DICT_BUGREPORT:
ShellExecute( NULL, "open", _T("http://of.openfoundry.org/projects/436/rt"), NULL, NULL, SW_SHOWNORMAL );
break;
case ID_HASHED:
case ID_CHEWING_HELP:
case ID_CHECK_NEW_VER:
{
TCHAR path[MAX_PATH];
GetSystemDirectory( path, MAX_PATH );
_tcscat( path, _T("\\IME\\Chewing\\") );
int showcmd;
if( id == ID_CHEWING_HELP ) {
_tcscat( path, _T("Chewing.chm"));
showcmd = SW_SHOWMAXIMIZED;
}
else if( id == ID_CHECK_NEW_VER ) {
_tcscat( path, _T("Update.exe"));
showcmd = SW_SHOWNORMAL;
}
else {
_tcscat( path, _T("HashEd.exe"));
showcmd = SW_SHOWNORMAL;
}
ShellExecute( NULL, "open", path, NULL, NULL, showcmd );
break;
}
case ID_DICT:
case ID_SIMPDICT:
case ID_LITTLEDICT:
case ID_PROVERBDICT:
{
LPCTSTR url[]={
_T("http://dict.revised.moe.edu.tw/"),
_T("http://dict.concised.moe.edu.tw/main/cover/main.htm"),
_T("http://dict.mini.moe.edu.tw/"),
_T("http://dict.idioms.moe.edu.tw/sort_pho.htm")};
ShellExecute( NULL, "open", url[ id - ID_DICT ], NULL, NULL, SW_SHOWNORMAL );
break;
}
//.........这里部分代码省略.........
示例2: WndProc
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case TRAY_CALLBACK:
{
switch(lParam)
{
case WM_LBUTTONDBLCLK:
if (IsWindowVisible(hWnd))
ShowWindow(hWnd, SW_HIDE);
else
ShowWindow(hWnd, SW_RESTORE);
break;
case WM_MOUSEMOVE:
{
CString sInfoTip;
NOTIFYICONDATA SystemTray;
sInfoTip.Format(_T("Cached Directories : %ld\nWatched paths : %ld"),
CGitStatusCache::Instance().GetCacheSize(),
CGitStatusCache::Instance().GetNumberOfWatchedPaths());
SystemTray.cbSize = sizeof(NOTIFYICONDATA);
SystemTray.hWnd = hTrayWnd;
SystemTray.uID = TRAY_ID;
SystemTray.uFlags = NIF_TIP;
_tcscpy_s(SystemTray.szTip, sInfoTip);
Shell_NotifyIcon(NIM_MODIFY, &SystemTray);
}
break;
case WM_RBUTTONUP:
case WM_CONTEXTMENU:
{
POINT pt;
DWORD ptW = GetMessagePos();
pt.x = GET_X_LPARAM(ptW);
pt.y = GET_Y_LPARAM(ptW);
HMENU hMenu = CreatePopupMenu();
if(hMenu)
{
InsertMenu(hMenu, (UINT)-1, MF_BYPOSITION, TRAYPOP_EXIT, _T("Exit"));
SetForegroundWindow(hWnd);
TrackPopupMenu(hMenu, TPM_BOTTOMALIGN, pt.x, pt.y, 0, hWnd, NULL);
DestroyMenu(hMenu);
}
}
break;
}
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
RECT rect;
GetClientRect(hWnd, &rect);
// clear the background
HBRUSH background = CreateSolidBrush(::GetSysColor(COLOR_WINDOW));
HGDIOBJ oldbrush = SelectObject(hdc, background);
FillRect(hdc, &rect, background);
int line = 0;
SIZE fontsize = {0};
AutoLocker print(critSec);
GetTextExtentPoint32( hdc, szCurrentCrawledPath[0], (int)_tcslen(szCurrentCrawledPath[0]), &fontsize );
for (int i=nCurrentCrawledpathIndex; i<MAX_CRAWLEDPATHS; ++i)
{
TextOut(hdc, 0, line*fontsize.cy, szCurrentCrawledPath[i], (int)_tcslen(szCurrentCrawledPath[i]));
line++;
}
for (int i=0; i<nCurrentCrawledpathIndex; ++i)
{
TextOut(hdc, 0, line*fontsize.cy, szCurrentCrawledPath[i], (int)_tcslen(szCurrentCrawledPath[i]));
line++;
}
SelectObject(hdc,oldbrush);
EndPaint(hWnd, &ps);
DeleteObject(background);
return 0L;
}
break;
case WM_COMMAND:
{
WORD wmId = LOWORD(wParam);
switch (wmId)
{
case TRAYPOP_EXIT:
DestroyWindow(hWnd);
break;
}
return 1;
}
case WM_QUERYENDSESSION:
{
ATLTRACE("WM_QUERYENDSESSION\n");
if (CGitStatusCache::Instance().WaitToWrite(200))
{
//.........这里部分代码省略.........
示例3: MainWndProc
//.........这里部分代码省略.........
INT xPos = GET_X_LPARAM(lParam);
INT yPos = GET_Y_LPARAM(lParam);
GetCursorPos(&pt);
/* display popup when cursor is in the list view */
GetWindowRect(Info->hListView, &lvRect);
if (PtInRect(&lvRect, pt))
{
TrackPopupMenuEx(GetSubMenu(Info->hShortcutMenu, 0),
TPM_RIGHTBUTTON,
xPos,
yPos,
Info->hMainWnd,
NULL);
}
}
break;
case WM_COMMAND:
{
MainWndCommand(Info,
LOWORD(wParam),
(HWND)lParam);
goto HandleDefaultMessage;
}
case WM_MENUSELECT:
{
if (Info->hStatus != NULL)
{
if (!MainWndMenuHint(Info,
LOWORD(wParam),
MainMenuHintTable,
sizeof(MainMenuHintTable) / sizeof(MainMenuHintTable[0]),
IDS_HINT_BLANK))
{
MainWndMenuHint(Info,
LOWORD(wParam),
SystemMenuHintTable,
sizeof(SystemMenuHintTable) / sizeof(SystemMenuHintTable[0]),
IDS_HINT_BLANK);
}
}
}
break;
case WM_ENTERMENULOOP:
{
Info->bInMenuLoop = TRUE;
UpdateMainStatusBar(Info);
break;
}
case WM_EXITMENULOOP:
{
Info->bInMenuLoop = FALSE;
UpdateMainStatusBar(Info);
break;
}
case WM_CLOSE:
{
HeapFree(ProcessHeap,
0,
Info->pAllServices);
DestroyMenu(Info->hShortcutMenu);
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
{
HeapFree(ProcessHeap,
0,
Info);
SetWindowLongPtr(hwnd,
GWLP_USERDATA,
0);
PostQuitMessage(0);
}
break;
default:
{
HandleDefaultMessage:
Ret = DefWindowProc(hwnd,
msg,
wParam,
lParam);
}
break;
}
return Ret;
}
示例4: TaskManagerWndProc
//.........这里部分代码省略.........
case WM_RBUTTONDOWN:
{
POINT pt;
BOOL OnTop;
HMENU hMenu, hPopupMenu;
GetCursorPos(&pt);
OnTop = ((GetWindowLongPtrW(hMainWnd, GWL_EXSTYLE) & WS_EX_TOPMOST) != 0);
hMenu = LoadMenuW(hInst, MAKEINTRESOURCEW(IDR_TRAY_POPUP));
hPopupMenu = GetSubMenu(hMenu, 0);
if(IsWindowVisible(hMainWnd))
{
DeleteMenu(hPopupMenu, ID_RESTORE, MF_BYCOMMAND);
}
else
{
SetMenuDefaultItem(hPopupMenu, ID_RESTORE, FALSE);
}
if(OnTop)
{
CheckMenuItem(hPopupMenu, ID_OPTIONS_ALWAYSONTOP, MF_BYCOMMAND | MF_CHECKED);
} else
{
CheckMenuItem(hPopupMenu, ID_OPTIONS_ALWAYSONTOP, MF_BYCOMMAND | MF_UNCHECKED);
}
SetForegroundWindow(hMainWnd);
TrackPopupMenuEx(hPopupMenu, 0, pt.x, pt.y, hMainWnd, NULL);
DestroyMenu(hMenu);
break;
}
case WM_LBUTTONDBLCLK:
TaskManager_OnRestoreMainWindow();
break;
}
break;
case WM_NOTIFY:
pnmh = (LPNMHDR)lParam;
if ((pnmh->hwndFrom == hTabWnd) &&
(pnmh->idFrom == IDC_TAB) &&
(pnmh->code == TCN_SELCHANGE))
{
TaskManager_OnTabWndSelChange();
}
break;
#if 0
case WM_NCPAINT:
hdc = GetDC(hDlg);
GetClientRect(hDlg, &rc);
Draw3dRect(hdc, rc.left, rc.top, rc.right, rc.top + 2, GetSysColor(COLOR_3DSHADOW), GetSysColor(COLOR_3DHILIGHT));
ReleaseDC(hDlg, hdc);
break;
case WM_PAINT:
hdc = BeginPaint(hDlg, &ps);
GetClientRect(hDlg, &rc);
Draw3dRect(hdc, rc.left, rc.top, rc.right, rc.top + 2, GetSysColor(COLOR_3DSHADOW), GetSysColor(COLOR_3DHILIGHT));
EndPaint(hDlg, &ps);
break;
#endif
示例5: MENU_ITEM
//.........这里部分代码省略.........
if (rainmeter.m_Debug)
{
CheckMenuItem(menu, IDM_DEBUGLOG, MF_BYCOMMAND | MF_CHECKED);
}
HMENU allSkinsMenu = GetSubMenu(menu, 4);
if (allSkinsMenu)
{
if (!rainmeter.m_SkinRegistry.IsEmpty())
{
DeleteMenu(allSkinsMenu, 0, MF_BYPOSITION); // "No skins available" menuitem
CreateAllSkinsMenu(allSkinsMenu);
}
if (rainmeter.m_DisableDragging)
{
CheckMenuItem(allSkinsMenu, IDM_DISABLEDRAG, MF_BYCOMMAND | MF_CHECKED);
}
}
HMENU layoutMenu = GetSubMenu(menu, 5);
if (layoutMenu)
{
if (!rainmeter.m_Layouts.empty())
{
DeleteMenu(layoutMenu, 0, MF_BYPOSITION); // "No layouts available" menuitem
CreateLayoutMenu(layoutMenu);
}
}
if (meterWindow)
{
HMENU rainmeterMenu = menu;
menu = CreateSkinMenu(meterWindow, 0, allSkinsMenu);
InsertMenu(menu, IDM_CLOSESKIN, MF_BYCOMMAND | MF_POPUP, (UINT_PTR)rainmeterMenu, L"Rainmeter");
InsertMenu(menu, IDM_CLOSESKIN, MF_BYCOMMAND | MF_SEPARATOR, 0, nullptr);
}
else
{
InsertMenu(menu, 12, MF_BYPOSITION | MF_SEPARATOR, 0, nullptr);
// Create a menu for all active skins
int index = 0;
std::map<std::wstring, MeterWindow*>::const_iterator iter = rainmeter.m_MeterWindows.begin();
for (; iter != rainmeter.m_MeterWindows.end(); ++iter)
{
MeterWindow* mw = ((*iter).second);
HMENU skinMenu = CreateSkinMenu(mw, index, allSkinsMenu);
InsertMenu(menu, 12, MF_BYPOSITION | MF_POPUP, (UINT_PTR)skinMenu, mw->GetFolderPath().c_str());
++index;
}
// Add update notification item
if (rainmeter.m_NewVersion)
{
InsertMenu(menu, 0, MF_BYPOSITION, IDM_NEW_VERSION, GetString(ID_STR_UPDATEAVAILABLE));
HiliteMenuItem(rainmeter.GetTrayWindow()->GetWindow(), menu, 0, MF_BYPOSITION | MF_HILITE);
InsertMenu(menu, 1, MF_BYPOSITION | MF_SEPARATOR, 0, nullptr);
}
}
HWND hWnd = WindowFromPoint(pos);
if (hWnd != nullptr)
{
MeterWindow* mw = rainmeter.GetMeterWindow(hWnd);
if (mw)
{
// Cancel the mouse event beforehand
mw->SetMouseLeaveEvent(true);
}
}
// Set the window to foreground
hWnd = meterWindow ? meterWindow->GetWindow() : rainmeter.m_TrayWindow->GetWindow();
HWND hWndForeground = GetForegroundWindow();
if (hWndForeground != hWnd)
{
const DWORD foregroundThreadID = GetWindowThreadProcessId(hWndForeground, nullptr);
const DWORD currentThreadID = GetCurrentThreadId();
AttachThreadInput(currentThreadID, foregroundThreadID, TRUE);
SetForegroundWindow(hWnd);
AttachThreadInput(currentThreadID, foregroundThreadID, FALSE);
}
// Show context menu
TrackPopupMenu(
menu,
TPM_RIGHTBUTTON | TPM_LEFTALIGN | (*GetString(ID_STR_ISRTL) == L'1' ? TPM_LAYOUTRTL : 0),
pos.x,
pos.y,
0,
hWnd,
nullptr);
DestroyMenu(menu);
m_MenuActive = false;
}
示例6: ContactListSubclassProc
//.........这里部分代码省略.........
else {
TreeView_SetItemState(hWnd, hItem, 0, TVIS_SELECTED);
dat->SelectedItems.RemoveElem(nIndex);
}
dat->SelectGroups(hItem, nIndex == -1);
NMCLIST nm;
nm.hdr.code = MCLN_SELCHANGED;
nm.hdr.hwndFrom = hWnd;
nm.hdr.idFrom = GetDlgCtrlID(hWnd);
nm.OldSelection = &OldSelection;
nm.NewSelection = &dat->SelectedItems;
SendMessage(GetParent(hWnd), WM_NOTIFY, 0, (LPARAM)&nm);
return 0;
}
// if it was a click on the selected item and there's need to do something in this case, then send SELCHANGED notification by ourselves, as the tree control doesn't do anything
if (hItem == TreeView_GetSelection(hWnd) && (dat->SelectedItems.GetSize() != 1 || (dat->SelectedItems.GetSize() == 1 && dat->SelectedItems[0] != hItem))) {
TreeView_SetItemState(hWnd, hItem, TVIS_SELECTED, TVIS_SELECTED);
NMTREEVIEW nm = { 0 };
nm.hdr.code = TVN_SELCHANGED;
nm.hdr.hwndFrom = hWnd;
nm.hdr.idFrom = GetDlgCtrlID(hWnd);
nm.itemOld.hItem = TreeView_GetSelection(hWnd);
nm.itemOld.mask = TVIF_HANDLE | TVIF_STATE | TVIF_PARAM;
TreeView_GetItem(hWnd, &nm.itemOld);
nm.itemNew = nm.itemOld;
SendMessage(GetParent(hWnd), WM_NOTIFY, 0, (LPARAM)&nm);
}
}
}
break;
case WM_SETFOCUS:
case WM_KILLFOCUS:
for (int i = 0; i < dat->SelectedItems.GetSize(); i++) {
RECT rc;
if (TreeView_GetItemRect(hWnd, dat->SelectedItems[i], &rc, false))
InvalidateRect(hWnd, &rc, false);
}
break;
case WM_SIZE:
case WM_HSCROLL:
InvalidateRect(hWnd, NULL, false);
break;
case WM_MEASUREITEM:
if (!wParam) // if the message was sent by a menu
return Menu_MeasureItem((LPMEASUREITEMSTRUCT)lParam);
break;
case WM_DRAWITEM:
if (!wParam) // if the message was sent by a menu
return Menu_DrawItem((LPDRAWITEMSTRUCT)lParam);
break;
case WM_CONTEXTMENU:
{
POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
HTREEITEM hItem = NULL;
if (pt.x == -1 && pt.y == -1) {
if (dat->SelectedItems.GetSize() == 1) {
hItem = dat->SelectedItems[0];
TreeView_EnsureVisible(hWnd, hItem);
RECT rc;
TreeView_GetItemRect(hWnd, hItem, &rc, true);
pt.x = rc.left;
pt.y = rc.bottom;
}
}
else {
DWORD hitFlags;
ScreenToClient(hWnd, &pt);
hItem = dat->HitTest(&pt, &hitFlags);
if (!(hitFlags & MCLCHT_ONITEM))
hItem = NULL;
}
if (hItem) {
MCONTACT hContact = dat->GetItemData(hItem).hContact;
if (IsHContactContact(hContact)) {
HMENU hMenu = Menu_BuildContactMenu(hContact);
if (hMenu) {
ClientToScreen(hWnd, &pt);
CallService(MS_CLIST_MENUPROCESSCOMMAND, MAKEWPARAM(TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, hWnd, NULL), MPCF_CONTACTMENU), hContact);
DestroyMenu(hMenu);
return 0;
}
}
}
}
break;
case WM_DESTROY:
if (dat->ExtraImageList)
ImageList_Destroy(dat->ExtraImageList);
dat->SelectedItems.RemoveAll();
dat->Items.RemoveAll();
break;
}
return CallWindowProc(dat->OrigTreeViewProc, hWnd, Msg, wParam, lParam);
}
示例7: PopupMenu
//.........这里部分代码省略.........
ppsz_varnames[i] = "fullscreen";
pi_objects[i++] = p_object;
ppsz_varnames[i] = "zoom";
pi_objects[i++] = p_object;
ppsz_varnames[i] = "deinterlace-mode";
pi_objects[i++] = p_object;
ppsz_varnames[i] = "aspect-ratio";
pi_objects[i++] = p_object;
ppsz_varnames[i] = "crop";
pi_objects[i++] = p_object;
ppsz_varnames[i] = "video-on-top";
pi_objects[i++] = p_object;
ppsz_varnames[i] = "directx-wallpaper";
pi_objects[i++] = p_object;
ppsz_varnames[i] = "video-snapshot";
pi_objects[i++] = p_object;
p_dec_obj = (vlc_object_t *)vlc_object_find( p_object,
VLC_OBJECT_DECODER,
FIND_PARENT );
if( p_dec_obj != NULL )
{
ppsz_varnames[i] = "ffmpeg-pp-q";
pi_objects[i++] = p_dec_obj;
vlc_object_release( p_dec_obj );
}
vlc_object_release( p_object );
}
/* Audio menu */
if( i != i_last_separator ) ppsz_varnames[i++] = NULL; /* Separator */
i_last_separator = i;
p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_AOUT,
FIND_ANYWHERE );
if( p_object != NULL )
{
ppsz_varnames[i] = "audio-device";
pi_objects[i++] = p_object;
ppsz_varnames[i] = "audio-channels";
pi_objects[i++] = p_object;
ppsz_varnames[i] = "visual";
pi_objects[i++] = p_object;
ppsz_varnames[i] = "equalizer";
pi_objects[i++] = p_object;
vlc_object_release( p_object );
}
interfacemenu:
/* Interface menu */
if( i != i_last_separator ) ppsz_varnames[i++] = NULL; /* Separator */
i_last_separator = i;
/* Build menu */
vector<MenuItemExt*> popup_menu;
HMENU hmenu = CreatePopupMenu();
RefreshMenu( p_intf, &popup_menu, hmenu, i,
ppsz_varnames, pi_objects, PopupMenu_Events );
MenuItemExt::ClearList( &popup_menu );
/* Add static entries */
if( p_input != NULL )
{
vlc_value_t val;
AppendMenu( hmenu, MF_SEPARATOR, 0, _T("") );
AppendMenu( hmenu, MF_STRING, StopStream_Event, _T("Stop") );
AppendMenu( hmenu, MF_STRING, PrevStream_Event, _T("Previous") );
AppendMenu( hmenu, MF_STRING, NextStream_Event, _T("Next") );
var_Get( p_input, "state", &val );
if( val.i_int == PAUSE_S )
AppendMenu( hmenu, MF_STRING, PlayStream_Event, _T("Play") );
else
AppendMenu( hmenu, MF_STRING, PlayStream_Event, _T("Pause") );
vlc_object_release( p_input );
}
else
{
playlist_t * p_playlist = pl_Hold( p_intf );
if( p_playlist && !playlist_IsEmpty( p_playlist ) )
{
AppendMenu( hmenu, MF_SEPARATOR, 0, _T("") );
AppendMenu( hmenu, MF_STRING, PlayStream_Event, _T("Play") );
}
if( p_playlist ) pl_Release( p_intf );
}
AppendMenu( hmenu, MF_POPUP|MF_STRING, (UINT)MiscMenu( p_intf ),
_T("Miscellaneous") );
AppendMenu( hmenu, MF_POPUP|MF_STRING, (UINT)OpenStreamMenu( p_intf ),
_T("Open") );
TrackPopupMenu( hmenu, 0, point.x, point.y, 0, p_parent, 0 );
PostMessage( p_parent, WM_NULL, 0, 0 );
DestroyMenu( hmenu );
}
示例8: CtrlContactWndProc
//.........这里部分代码省略.........
SendMessage(cbex->hBtnEdit, BM_SETIMAGE, IMAGE_ICON, (LPARAM)cbex->pItems[cbex->iSelectedItem].hIcon);
}
return 0;
}
case WM_COMMAND:
switch (LOWORD(wParam)) {
/**
* name: BTN_MENU
* desc: the button to dropdown the list to show all items is pressed
**/
case BTN_MENU:
if (HIWORD(wParam) == BN_CLICKED) {
POINT pt = { 0, 0 };
RECT rc;
int i, nItems;
HMENU hMenu;
if (!(hMenu = CreatePopupMenu())) return 0;
SetFocus((HWND)lParam);
MENUITEMINFO mii = { 0 };
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_ID|MIIM_STRING|MIIM_FTYPE|MIIM_STATE;
mii.fType = MFT_STRING;
// insert the items
for (i = nItems = 0; i < cbex->numItems; i++) {
if ((cbex->pItems[i].wFlags & CBEXIF_DELETED) || *cbex->pItems[i].szCat == 0) continue;
mii.fState = (cbex->pItems[i].pszVal && *cbex->pItems[i].pszVal) ? MFS_CHECKED : MFS_UNCHECKED;
mii.wID = CBEXM_MENIITEMFIRST + i;
mii.dwTypeData = cbex->pItems[i].szCat;
if (!InsertMenuItem(hMenu, i, TRUE, &mii)) {
DestroyMenu(hMenu);
return 0;
}
nItems++;
}
// add separator between default and custom items
if (nItems > 3) {
mii.fMask = MIIM_FTYPE;
mii.fType = MFT_SEPARATOR;
mii.wID = 0;
mii.dwItemData = 0;
InsertMenuItem(hMenu, 3, TRUE, &mii);
}
ClientToScreen((HWND)lParam, &pt);
GetClientRect((HWND)lParam, &rc);
i = TrackPopupMenuEx(hMenu, TPM_RIGHTALIGN|TPM_RETURNCMD, pt.x + rc.right, pt.y + rc.bottom, hwnd, NULL);
SendMessage(cbex->hBtnMenu, BM_SETCHECK, NULL, NULL);
if (i >= CBEXM_MENIITEMFIRST && i < CBEXM_MENIITEMFIRST + cbex->numItems) {
CtrlContactWndProc(hwnd, CBEXM_SETCURSEL, (WPARAM)i - CBEXM_MENIITEMFIRST, NULL);
}
DestroyMenu(hMenu);
return 0;
}
break;
/**
* name: BTN_ADD
* desc: the button to add a new entry is pressed
**/
case BTN_ADD:
if (HIWORD(wParam) == BN_CLICKED) {
DLGPROC dlgProc;
WORD dlgID;
示例9: WindowProc
//.........这里部分代码省略.........
{
int wTimerID = wParam;
if( AnimFile.isAnimation == 1 && wTimerID == 2 )
{
UpdateMNG();
SendMessage( hPicWin, WM_PAINT, 0, 0 );
}
}
break;
case WM_COMMAND:
switch( LOWORD(wParam) )
{
case FILE_OPEN:
LoadOFN(hwnd);
break;
case FILE_SAVE:
SaveSFN(hwnd);
break;
case FILE_EXIT:
DestroyWindow( hPicWin );
break;
case HELP_ABOUT:
Warning(
"MNGView Sample Application for VC6.\n" \
"This Code is Public Domain.\n" \
"Created by Nikolaus Brennig."
);
break;
}
break;
case WM_ERASEBKGND:
return 0L;
case WM_PAINT:
// GetDC:
GetClientRect( hPicWin, &rcRect );
hdc = GetDC( hPicWin );
if( MemDC == 0 )
{
BitBlt( hdc, 0, 0, rcRect.right, rcRect.bottom, MemDC, 0, 0, BLACKNESS );
ReleaseDC( hPicWin, hdc );
break;
}
// Erase:
// Upper area...
BitBlt( hdc, 0, 0, rcRect.right, (0+dy), MemDC, 0, 0, BLACKNESS );
// Lower area...
BitBlt( hdc, 0, (0+dy)+H, rcRect.right, rcRect.bottom - ((0+dy)+H), MemDC, 0, 0, BLACKNESS );
// Left area...
BitBlt( hdc, 0, 0, (0+dx), rcRect.bottom, MemDC, 0, 0, BLACKNESS );
// Right area...
BitBlt( hdc, (0+dx)+W, 0, rcRect.right, rcRect.bottom, MemDC, 0, 0, BLACKNESS );
// Show Imageframe:
BitBlt( hdc, dx, dy, W, H, MemDC, 0, 0, SRCCOPY );
// Release DC...
ReleaseDC( hPicWin, hdc );
break;
case WM_HSCROLL:
{
int nScrollCode = (int) LOWORD(wParam); // scroll bar value
if( nScrollCode == SB_LINELEFT ) dx += 10;
if( nScrollCode == SB_LINERIGHT ) dx -= 10;
SendMessage( hwnd, WM_PAINT, 0, 0 );
}
break;
case WM_VSCROLL:
{
int nScrollCode = (int) LOWORD(wParam); // scroll bar value
if( nScrollCode == SB_LINEUP ) dy += 10;
if( nScrollCode == SB_LINEDOWN ) dy -= 10;
SendMessage( hwnd, WM_PAINT, 0, 0 );
}
break;
case WM_GETMINMAXINFO:
((MINMAXINFO*)lParam)->ptMinTrackSize.x = 550;
((MINMAXINFO*)lParam)->ptMinTrackSize.y = 450;
return 0L;
case WM_DESTROY:
if( AnimFile.isAnimation == 1 )
CleanUpMNG();
if( hMenu ) DestroyMenu( hMenu );
PostQuitMessage(0);
return 0L;
}
return DefWindowProc( hwnd, message, wParam, lParam );
}
示例10: CreatePopupMenu
HRESULT STDMETHODCALLTYPE CPopupMenu::QueryContextMenu(THIS_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
{
if(!IsWorkCopy(&m_Files, m_NumFiles, m_WcPath)){
if(m_NumFiles >= 2){
}
else{
if (FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(m_Files[0].c_str())){
int i = 0;
HMENU SubMenu = CreatePopupMenu();
m_hInstance = GetModuleHandle("TeamExplorerShellMenu.dll");
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 1, _T("Set Environment"));
m_hSetEnv = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_SETENV));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hSetEnv, m_hSetEnv);
InsertMenu(hmenu, indexMenu, MF_SEPARATOR | MF_BYPOSITION, 0, NULL);
InsertMenu(hmenu, indexMenu+1, MF_POPUP | MF_BYPOSITION, (UINT)SubMenu, _T("Team Explorer"));
m_hPopupMenu = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_POPUPMENU));
SetMenuItemBitmaps(hmenu, indexMenu+1, MF_BYPOSITION, m_hPopupMenu, m_hPopupMenu);
InsertMenu(hmenu, indexMenu+2, MF_SEPARATOR | MF_BYPOSITION, 0, NULL);
DestroyMenu(SubMenu);
}
}
}
else{
if(!IsTeamExplorer(m_WcPath)){
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, USHORT(13 + 1));
}
int i = 0;
HMENU SubMenu = CreatePopupMenu();
m_hInstance = GetModuleHandle("TeamExplorerShellMenu.dll");
if(IsProductOrTags(m_WcPath)){
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 2, _T("Update"));
m_hUpdate = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_UPDATE));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hUpdate, m_hUpdate);
}
else{
if(CouldWrite(&m_Files, &m_WriteFiles, m_NumFiles)){
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 3, _T("Check out"));
m_hCheckout = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_CHECKOUT));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hCheckout, m_hCheckout);
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 4, _T("Commit"));
m_hCommit = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_COMMIT));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hCommit, m_hCommit);
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 5, _T("Check in"));
m_hCheckin = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_CHECKIN));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hCheckin, m_hCheckin);
InsertMenu(SubMenu, i++, MF_SEPARATOR | MF_BYPOSITION, 0, NULL);
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 2, _T("Update"));
m_hUpdate = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_UPDATE));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hUpdate, m_hUpdate);
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 6, _T("Cancel"));
m_hCancel = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_CANCEL));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hCancel, m_hCancel);
InsertMenu(SubMenu, i++, MF_SEPARATOR | MF_BYPOSITION, 0, NULL);
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 8, _T("Revert"));
m_hRevert = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_REVERT));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hRevert, m_hRevert);
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 9, _T("Merge"));
m_hMerge = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_MERGE));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hMerge, m_hMerge);
}
else{
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 3, _T("Check out"));
m_hCheckout = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_CHECKOUT));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hCheckout, m_hCheckout);
InsertMenu(SubMenu, i++, MF_SEPARATOR | MF_BYPOSITION, 0, NULL);
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 7, _T("Add"));
m_hAdd = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_ADD));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hAdd, m_hAdd);
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 2, _T("Update"));
m_hUpdate = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_UPDATE));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hUpdate, m_hUpdate);
}
}
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 10, _T("Show log"));
m_hShowLog = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_SHOWLOG));
SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hShowLog, m_hShowLog);
InsertMenu(SubMenu, i++, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 11, _T("Diff"));
m_hDiff = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_DIFF));
//.........这里部分代码省略.........
示例11: WndProc
static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
enum
{
WM_APP_TRAYICON = WM_APP_RELOAD + 1,
};
static NOTIFYICONDATA nid;
static HMENU hMenu;
switch (uMsg) {
case WM_APP_TRAYICON:
switch (lParam) {
case WM_RBUTTONDOWN:
SetCapture(hWnd);
break;
case WM_RBUTTONUP:
ReleaseCapture();
{
RECT rc;
POINT pt;
GetCursorPos(&pt);
GetWindowRect(GetDesktopWindow(), &rc);
SetForegroundWindow(hWnd);
TrackPopupMenu(GetSubMenu(hMenu, 0),
(pt.x < (rc.left + rc.right) / 2 ? TPM_LEFTALIGN : TPM_RIGHTALIGN) |
(pt.y < (rc.top + rc.bottom) / 2 ? TPM_TOPALIGN : TPM_BOTTOMALIGN) |
TPM_RIGHTBUTTON, pt.x, pt.y, 0, hWnd, NULL);
PostMessage(hWnd, WM_NULL, 0, 0);
}
break;
case NIN_BALLOONHIDE:
case NIN_BALLOONTIMEOUT:
case NIN_BALLOONUSERCLICK:
/* error message closed */
DestroyWindow(hWnd);
break;
}
return 0;
case WM_APP_RELOAD:
{
Config_Load();
}
return 0;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case ID_CONF:
{
TCHAR cmd[MAX_PATH];
GetModuleFileName(NULL, cmd, ARRAYSIZE(cmd));
lstrcpy(cmd + lstrlen(cmd) - 4, TEXT("cf"));
Exec(cmd);
}
break;
case ID_QUIT:
DestroyWindow(hWnd);
break;
}
break;
case WM_CREATE:
{
HINSTANCE hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
Config_Load();
/* menu */
hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDM_MAIN));
/* tray icon */
ZeroMemory(&nid, sizeof nid);
nid.cbSize = sizeof nid;
nid.hWnd = hWnd;
nid.uID = 100;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = WM_APP_TRAYICON;
nid.hIcon = Global.hIconLarge;
lstrcpy(nid.szTip, App.Title);
Shell_NotifyIcon(NIM_ADD, &nid);
/* error message balloon tip */
nid.uFlags = NIF_INFO;
nid.dwInfoFlags = NIIF_WARNING;
LoadString(hInstance, IDS_DEVICE_NOT_FOUND, nid.szInfo, ARRAYSIZE(nid.szInfo));
lstrcpy(nid.szInfoTitle, App.Title);
/* low level keyboard hook */
Global.hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
if (!SpecialKey_Prepare())
Shell_NotifyIcon(NIM_MODIFY, &nid);
}
break;
case WM_DESTROY:
{
SpecialKey_Cleanup();
UnhookWindowsHookEx(Global.hHook);
Shell_NotifyIcon(NIM_DELETE, &nid);
DestroyMenu(hMenu);
}
PostQuitMessage(0);
return 0;
}
//.........这里部分代码省略.........
示例12: text_ExitInstance
/****************************************************************************
* text_ExitInstance
* Result: void
*
* Effect:
* Does whatever cleanup is necessary. In this case, destroys the
* menu handle.
****************************************************************************/
void text_ExitInstance()
{
DestroyMenu(TextMenu);
DestroyMenu(TextContextMenu);
}
示例13: DlgProfileSelect
//.........这里部分代码省略.........
if (ListView_HitTest(hwndList, &lvht) < 0) {
if (lParam != -1)
break;
lvht.iItem = ListView_GetSelectionMark(hwndList);
RECT rc = { 0 };
if (!ListView_GetItemRect(hwndList, lvht.iItem, &rc, LVIR_LABEL))
break;
lvht.pt.x = rc.left;
lvht.pt.y = rc.bottom;
ClientToScreen(hwndList, &lvht.pt);
}
else {
lvht.pt.x = GET_X_LPARAM(lParam);
lvht.pt.y = GET_Y_LPARAM(lParam);
}
HMENU hMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING, 1, TranslateT("Run"));
AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
if (ServiceExists(MS_DB_CHECKPROFILE)) {
AppendMenu(hMenu, MF_STRING, 2, TranslateT("Check database"));
AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
}
AppendMenu(hMenu, MF_STRING, 3, TranslateT("Delete"));
int index = TrackPopupMenu(hMenu, TPM_RETURNCMD, lvht.pt.x, lvht.pt.y, 0, hwndDlg, NULL);
switch (index) {
case 1:
SendMessage(GetParent(hwndDlg), WM_COMMAND, IDOK, 0);
break;
case 2:
CheckProfile(hwndList, lvht.iItem, dat);
break;
case 3:
DeleteProfile(hwndList, lvht.iItem, dat);
break;
}
DestroyMenu(hMenu);
}
break;
case WM_NOTIFY:
LPNMHDR hdr = (LPNMHDR)lParam;
if (hdr && hdr->code == PSN_INFOCHANGED)
break;
if (hdr && hdr->idFrom == IDC_PROFILELIST) {
switch (hdr->code) {
case LVN_ITEMCHANGED:
EnableWindow(dat->hwndOK, ListView_GetSelectedCount(hwndList) == 1);
case NM_DBLCLK:
if (dat != NULL) {
TCHAR profile[MAX_PATH];
LVITEM item = { 0 };
item.mask = LVIF_TEXT;
item.iItem = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED | LVNI_ALL);
item.pszText = profile;
item.cchTextMax = SIZEOF(profile);
if (ListView_GetItem(hwndList, &item)) {
// profile is placed in "profile_name" subfolder
TCHAR tmpPath[MAX_PATH];
mir_sntprintf(tmpPath, SIZEOF(tmpPath), _T("%s\\%s.dat"), dat->pd->szProfileDir, profile);
HANDLE hFile = CreateFile(tmpPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (hFile == INVALID_HANDLE_VALUE)
mir_sntprintf(dat->pd->szProfile, MAX_PATH, _T("%s\\%s\\%s.dat"), dat->pd->szProfileDir, profile, profile);
else
_tcscpy(dat->pd->szProfile, tmpPath);
CloseHandle(hFile);
if (hdr->code == NM_DBLCLK) EndDialog(GetParent(hwndDlg), 1);
}
}
return TRUE;
case LVN_KEYDOWN:
if (((LPNMLVKEYDOWN)lParam)->wVKey == VK_DELETE)
DeleteProfile(hwndList, ListView_GetNextItem(hwndList, -1, LVNI_SELECTED | LVNI_ALL), dat);
break;
case LVN_GETINFOTIP:
NMLVGETINFOTIP *pInfoTip = (NMLVGETINFOTIP *)lParam;
if (pInfoTip != NULL) {
TCHAR profilename[MAX_PATH], fullpath[MAX_PATH];
struct _stat statbuf;
ListView_GetItemText(hwndList, pInfoTip->iItem, 0, profilename, MAX_PATH);
mir_sntprintf(fullpath, SIZEOF(fullpath), _T("%s\\%s\\%s.dat"), dat->pd->szProfileDir, profilename, profilename);
_tstat(fullpath, &statbuf);
mir_sntprintf(pInfoTip->pszText, pInfoTip->cchTextMax, _T("%s\n%s: %s\n%s: %s"), fullpath, TranslateT("Created"), rtrimt(NEWTSTR_ALLOCA(_tctime(&statbuf.st_ctime))), TranslateT("Modified"), rtrimt(NEWTSTR_ALLOCA(_tctime(&statbuf.st_mtime))));
}
}
}
break;
}
return FALSE;
}
示例14: DestroyMenu
VOID CMainWnd::OnDestroy(WPARAM wParam, LPARAM lParam)
{
DestroyMenu(hCurMenu);//销毁菜单资源
PostQuitMessage(0);//如果破坏窗体,则退出主线程
return;
}
示例15: TRACE_FUNCTION
//.........这里部分代码省略.........
}
break;
default:
{
}
}
}
m_pidlManager.Delete( pItem );
pItem = NULL;
}
}
else if( pNmhdr->code == NM_RCLICK )
{
LPITEMIDLIST* ppIdl = NULL;
int nSelCount = ListView_GetSelectedCount(m_hWnd);
if ( nSelCount > 0 )
{
ppIdl = (LPITEMIDLIST*)_Module.m_Allocator.Alloc( sizeof(LPITEMIDLIST)*nSelCount );
int iIndex = ListView_GetNextItem( m_hWnd, -1, LVIS_SELECTED );
LV_ITEM item = {0};
item.iSubItem = 0;
item.mask = LVIF_PARAM;
int _i = 0;
while( iIndex >= 0
&& _i < nSelCount )
{
item.iItem = iIndex;
ListView_GetItem( m_hWnd, &item );
ppIdl[_i] = m_pidlManager.Copy( ITEMLISTPTR(item.lParam) );
++_i;
iIndex = ListView_GetNextItem( m_hWnd, -1, LVIS_SELECTED );
}
}
LPCONTEXTMENU pMenu = NULL;
HRESULT hr = E_FAIL;
hr = m_pFolder->GetUIObjectOf( m_hWnd, nSelCount, \
(LPCITEMIDLIST*)ppIdl, IID_IContextMenu, NULL, (void**)&pMenu );
if ( FAILED(hr)
|| !pMenu)
{
LOG(_T("IID_IContextMenu Failed"));
if ( nSelCount > 0 )
{
for ( int _i = 0; _i < nSelCount; ++_i )
{
m_pidlManager.Delete( ppIdl[_i] );
}
_Module.m_Allocator.Free( ppIdl );
}
return S_OK;
}
HMENU hMenu = ::CreatePopupMenu();
if ( !hMenu )
{
if ( nSelCount > 0 )
{
for ( int _i = 0; _i < nSelCount; ++_i )
{
m_pidlManager.Delete( ppIdl[_i] );
}
_Module.m_Allocator.Free( ppIdl );
}
return S_OK;
}
hr = pMenu->QueryContextMenu( hMenu, 0, 10, 32767, CMF_NORMAL | CMF_EXPLORE );
if ( FAILED(hr) )
{
if ( nSelCount > 0 )
{
for ( int _i = 0; _i < nSelCount; ++_i )
{
m_pidlManager.Delete( ppIdl[_i] );
}
_Module.m_Allocator.Free( ppIdl );
}
DestroyMenu( hMenu );
return hr;
}
POINT point = {0};
GetCursorPos( &point );
UINT command = (UINT)TrackPopupMenu ( hMenu, TPM_RETURNCMD | TPM_LEFTALIGN, point.x, point.y, 0, m_hWnd, NULL );
CMINVOKECOMMANDINFO cmi = {0};
cmi.cbSize = sizeof (CMINVOKECOMMANDINFO);
cmi.lpVerb = (LPSTR) MAKEINTRESOURCE (command-10);
cmi.nShow = SW_SHOWNORMAL;
pMenu->InvokeCommand( &cmi );
pMenu->Release();
if ( nSelCount > 0 )
{
for ( int _i = 0; _i < nSelCount; ++_i )
{
m_pidlManager.Delete( ppIdl[_i] );
}
_Module.m_Allocator.Free( ppIdl );
}
DestroyMenu( hMenu );
}
}
TRACE_RETURN S_OK;
}