// Procedure de creation de menu à partir d'une clé de registre HMENU InitLauncherMenu( char * Key ) { HMENU menu ; menu = CreatePopupMenu() ; char KeyName[1024] ; int nbitem = 0,i ; DeleteObject( bmpCheck ) ; bmpCheck = GetMyCheckBitmaps( 1 ) ; DeleteObject( bmpUnCheck ) ; bmpUnCheck = GetMyCheckBitmaps( 2 ) ; if( (IniFileFlag == SAVEMODE_REG)||(IniFileFlag == SAVEMODE_FILE) ) { sprintf( KeyName, "%s\\%s", TEXT(PUTTY_REG_POS), Key ) ; ReadSpecialMenu( menu, KeyName, &nbitem, 0 ) ; } else if( IniFileFlag == SAVEMODE_DIR ) { ReadSpecialMenu( menu, Key, &nbitem, 0 ) ; } if( GetMenuItemCount( menu ) > 0 ) AppendMenu( menu, MF_SEPARATOR, 0, 0 ) ; // Creation du menu bouton gauche DestroyMenu( HideMenu ) ; HideMenu = CreatePopupMenu() ; if( !IsUnique ) { AppendMenu( HideMenu, MF_ENABLED, IDM_LAUNCHER+3, "&Hide all" ) ; AppendMenu( HideMenu, MF_ENABLED, IDM_LAUNCHER+4, "&Unhide all" ) ; //AppendMenu( HideMenu, MF_ENABLED, IDM_LAUNCHER+5, "&Refresh list" ) ; AppendMenu( HideMenu, MF_ENABLED, IDM_LAUNCHER+6, "&Window unique" ) ; CheckMenuItem( HideMenu, IDM_LAUNCHER+6, MF_BYCOMMAND | MF_UNCHECKED) ; } else { AppendMenu( HideMenu, MF_ENABLED, IDM_LAUNCHER+6, "&Window unique" ) ; CheckMenuItem( HideMenu, IDM_LAUNCHER+6, MF_BYCOMMAND | MF_CHECKED) ; } //AppendMenu( HideMenu, MF_ENABLED, IDM_GONEXT, "&Next" ) ; //AppendMenu( HideMenu, MF_ENABLED, IDM_GOPREVIOUS, "&Previous" ) ; if( RefreshWinList( MainHwnd ) > 0 ) { AppendMenu( HideMenu, MF_SEPARATOR, 0, 0 ) ; for( i=0 ; i<NbWin ; i++ ) { AppendMenu( HideMenu, MF_ENABLED, IDM_GOHIDE+i, TabWin[i].name ) ; SetMenuItemBitmaps ( HideMenu, IDM_GOHIDE+i, MF_BYCOMMAND, bmpUnCheck, bmpCheck ) ; if( IsWindowVisible( TabWin[i].hwnd ) ) CheckMenuItem( HideMenu, IDM_GOHIDE+i, MF_BYCOMMAND | MF_CHECKED) ; else CheckMenuItem( HideMenu, IDM_GOHIDE+i, MF_BYCOMMAND | MF_UNCHECKED) ; } } AppendMenu( HideMenu, MF_SEPARATOR, 0, 0 ) ; AppendMenu( HideMenu, MF_ENABLED, IDM_ABOUT, "&About" ) ; AppendMenu( HideMenu, MF_ENABLED, IDM_QUIT, "&Quit" ) ; AppendMenu( menu, MF_POPUP, (UINT_PTR)HideMenu, "&Opened sessions" ) ; AppendMenu( menu, MF_SEPARATOR, 0, 0 ) ; AppendMenu( menu, MF_ENABLED, IDM_LAUNCHER+7, "&Refresh" ) ; AppendMenu( menu, MF_ENABLED, IDM_LAUNCHER+1, "&Configuration" ) ; AppendMenu( menu, MF_ENABLED, IDM_LAUNCHER+2, "&TTY-ed" ) ; AppendMenu( menu, MF_SEPARATOR, 0, 0 ) ; AppendMenu( menu, MF_ENABLED, IDM_ABOUT, "&About" ) ; AppendMenu( menu, MF_ENABLED, IDM_QUIT, "&Quit" ) ; return menu ; }
// // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) // // PURPOSE: Processes messages for the main window. // // WM_COMMAND - process the application menu // WM_PAINT - Paint the main window // WM_DESTROY - post a quit message and return // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; if (message == WM_TASKBARCREATED && !IsWindowVisible(g_hwnd)) { Minimize(); return 0; } switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_PRINT://create raport.txt file and print PRINTDLG pd; memset(&pd, 0, sizeof(PRINTDLG)); pd.lStructSize = sizeof(PRINTDLG); pd.hwndOwner = hWnd; pd.Flags = PD_RETURNDC; pd.hDevMode = NULL;//hInst.hDevMode; pd.hDevNames = NULL;//psd.hDevNames; if (PrintDlg(&pd)) { WORD wCopies; RECT rect; DOCINFO docInfo; FILE *file; errno_t err; LPDEVMODE lpDevMode = (LPDEVMODE)GlobalLock(pd.hDevMode); LPCWSTR lpszString = (LPCWSTR)L"This is a test"; memset(&docInfo , 0, sizeof(DOCINFO)); GetClientRect(hWnd, &rect); docInfo.cbSize = sizeof(DOCINFO); docInfo.lpszDocName = (LPCWSTR)L"report.txt"; err = fopen_s(&file, "report.txt", "w+"); if (StartDoc(pd.hDC, &docInfo) > 0) { for (wCopies = 0; wCopies < pd.nCopies; wCopies++) { StartPage(pd.hDC); TextOut(pd.hDC, 100, 100, LPCWSTR(lpszString), lstrlen(lpszString)); EndPage(pd.hDC); fclose(file); } EndDoc(pd.hDC); } GlobalUnlock(pd.hDevMode); DeleteDC(pd.hDC); } else if (CommDlgExtendedError() == 0x1008) MessageBox(hWnd, (LPCWSTR)L"No default printer selected.", (LPCWSTR)L"Print", MB_OK | MB_ICONSTOP); break;//IDM_PRINT case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code here... EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; //create menu - if push left button case WM_CREATE:// create the menu once. HBITMAP hbmpPie1, hbmpPie2; hbmpPie1 = (HBITMAP)LoadImage(NULL, TEXT("gnome_session_logout.bmp"), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_LOADFROMFILE); hbmpPie2 = (HBITMAP)LoadImage(NULL, TEXT("green_print.bmp"), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE); g_menu = CreatePopupMenu(); AppendMenu(g_menu, MF_STRING | MF_BYPOSITION | MF_POPUP, ID_TRAY_PRINT_CONTEXT_MENU_ITEM, TEXT(" Print Report")); SetMenuItemBitmaps(g_menu, ID_TRAY_PRINT_CONTEXT_MENU_ITEM, MF_BYCOMMAND, hbmpPie2, hbmpPie2); AppendMenu(g_menu, MF_SEPARATOR, NULL, NULL); InsertMenu(g_menu, -1, MF_STRING | MF_BYPOSITION | MF_POPUP, ID_TRAY_EXIT_CONTEXT_MENU_ITEM, _T(" Exit")); SetMenuItemBitmaps(g_menu, ID_TRAY_EXIT_CONTEXT_MENU_ITEM, MF_BITMAP | MF_BYCOMMAND, hbmpPie1, hbmpPie1); break; case WM_SYSCOMMAND: switch (wParam & 0xfff0) { case SC_MINIMIZE: case SC_CLOSE: // redundant to WM_CLOSE, it appears Minimize(); return 0; break; } case WM_TRAYICON: { if (lParam == WM_RBUTTONDOWN) // I'm using WM_RBUTTONDOWN here because { printf("Mmm. Let's get contextual. I'm showing you my context menu.\n"); POINT curPoint; GetCursorPos(&curPoint); SetForegroundWindow(hWnd); printf("calling track\n"); UINT clicked = TrackPopupMenu( g_menu, TPM_RETURNCMD | TPM_NONOTIFY, // don't send me WM_COMMAND messages about this window, instead return the identifier of the clicked menu item curPoint.x, curPoint.y, 0, hWnd, NULL ); if (clicked == ID_TRAY_EXIT_CONTEXT_MENU_ITEM) { // quit the application. printf("I have posted the quit message, biatch\n"); PostQuitMessage(0); } if (clicked == ID_TRAY_PRINT_CONTEXT_MENU_ITEM) { DialogBox(hInst, MAKEINTRESOURCE(IDD_REPORTBOX), hWnd, About); SendMessage(g_hwnd, WM_COMMAND, IDM_PRINT, lParam); return 0; } } } break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
PWBOBJ wbCreateMenu(PWBOBJ pwboParent, PWBITEM pitem[], int nItems) { int i; MENUITEMINFO mi; PWBOBJ pwbo; HMENU hMenu, hPopup = NULL; LPCTSTR pszLastPopup = NULL; if(!pwboParent || !pwboParent->hwnd || !IsWindow(pwboParent->hwnd)) return NULL; // Start building the menu hMenu = CreateMenu(); for(i = 0; i < nItems; i++) { if(!pitem[i]) { AppendMenu(hPopup, MF_SEPARATOR, 0, NULL); } else if(!pitem[i]->id) { if(pitem[i]->pszCaption && *pitem[i]->pszCaption) { // Attach a pop-up menu to a top-level menu if(hPopup && pszLastPopup) { AppendMenu(hMenu, MF_POPUP, (UINT)hPopup, pszLastPopup); } hPopup = CreateMenu(); pszLastPopup = pitem[i]->pszCaption; } else { // Separator AppendMenu(hPopup, MF_SEPARATOR, 0, NULL); } } else { if(pitem[i]->pszCaption && *pitem[i]->pszCaption) { // Create a submenu item AppendMenu(hPopup, MF_STRING, pitem[i]->id, pitem[i]->pszCaption); if(pitem[i]->pszImage && *pitem[i]->pszImage) { HBITMAP hImage = wbLoadImage(pitem[i]->pszImage, 0, 0); if(hImage) SetMenuItemBitmaps(hPopup, pitem[i]->id, MF_BYCOMMAND, hImage, hImage); } } } } // Create last first-level menu if(hPopup && pszLastPopup) { AppendMenu(hMenu, MF_POPUP, (UINT)hPopup, pszLastPopup); } // Attach the menu to the window pwbo = wbMalloc(sizeof(WBOBJ)); pwbo->hwnd = (HWND)hMenu; pwbo->id = 0; pwbo->uClass = Menu; pwbo->item = -1; pwbo->subitem = -1; pwbo->style = 0; pwbo->pszCallBackFn = NULL; pwbo->pszCallBackObj = NULL; pwbo->lparam = 0; pwbo->parent = pwboParent; // ********* DOESN'T WORK mi.dwItemData = (DWORD)pwbo; SetMenuItemInfo((HMENU)pwbo->hwnd, 0, TRUE, &mi); // ********* DOESN'T WORK SetMenu(pwboParent->hwnd, hMenu); return pwbo; }
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)); SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hDiff, m_hDiff); InsertMenu(SubMenu, i++, MF_STRING | MF_BYPOSITION, idCmdFirst + 12, _T("Compare")); m_hCompare = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_COMPARE)); SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hCompare, m_hCompare); InsertMenu(SubMenu, i++, MF_BYPOSITION | MF_STRING, idCmdFirst + 13, _T("Update Rely Files")); m_hDownload = ::LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_DOWNLOAD)); SetMenuItemBitmaps(SubMenu, i-1, MF_BYPOSITION, m_hDownload, m_hDownload); 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); } return MAKE_HRESULT(SEVERITY_SUCCESS, 0, USHORT(13 + 1)); }
// Called from the Windows notification handler thread, in its message loop LRESULT CALLBACK DesktopIndicatorHandler::WndProc (HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) { // Check for our special notification message if ((uMessage != WM_DESKTOPINDICATOR_CLICK)) { return DefWindowProc(hWnd, uMessage, wParam, lParam); } DesktopIndicatorHandler *pthis = (DesktopIndicatorHandler *) GetWindowLong(hWnd, GWL_USERDATA); switch (lParam) { case WM_LBUTTONDBLCLK: // Execute the default action of the right-click popup menu pthis->restoreApplication(); break; //case WM_LBUTTONDOWN: //case WM_RBUTTONDOWN: //case WM_LBUTTONUP: //break; case WM_RBUTTONUP: // Display popup menu on right click { SetForegroundWindow(hWnd); POINT pos; GetCursorPos(&pos); int cxMenuCheck = GetSystemMetrics(SM_CXMENUCHECK); int cyMenuCheck = GetSystemMetrics(SM_CYMENUCHECK); HMENU hMenu = CreatePopupMenu(); UAppendMenu(hMenu, MF_STRING, MNU_RESTORE, pthis->m_lpwszItemRestore); // L"Restore"; UAppendMenu(hMenu, MF_STRING, MNU_ABOUT, pthis->m_lpwszItemAbout); // L"About..."; UAppendMenu(hMenu, MF_SEPARATOR, 0, (LPCWSTR)NULL); UAppendMenu(hMenu, MF_STRING, MNU_EXIT_AFTER, pthis->m_lpwszItemExitLater); // L"Exit After Transfers"; UAppendMenu(hMenu, MF_STRING, MNU_EXIT, pthis->m_lpwszItemExit); // L"Exit"; //Load 15x15 bitmaps for unchecked state of menu options //Remap colors #000000, #808080, #C0C0C0, #DFDFDF, #FFFFFF //to 3D colors: DlgText, 3DDark, 3DFace, 3DLight, WindowBg HBITMAP hbmpRestore = (HBITMAP)LoadImageA( ::g_hInstance, MAKEINTRESOURCEA(IDB_RESTORE), IMAGE_BITMAP, cxMenuCheck, cyMenuCheck, LR_LOADMAP3DCOLORS); HBITMAP hbmpHelp = (HBITMAP)LoadImageA( ::g_hInstance, MAKEINTRESOURCEA(IDB_HELP), IMAGE_BITMAP, cxMenuCheck, cyMenuCheck, LR_LOADMAP3DCOLORS); HBITMAP hbmpWaitClose = (HBITMAP)LoadImageA( ::g_hInstance, MAKEINTRESOURCEA(IDB_WAITCLOSE), IMAGE_BITMAP, cxMenuCheck, cyMenuCheck, LR_LOADMAP3DCOLORS); HBITMAP hbmpClose = (HBITMAP)LoadImageA( ::g_hInstance, MAKEINTRESOURCEA(IDB_CLOSE), IMAGE_BITMAP, cxMenuCheck, cyMenuCheck, LR_LOADMAP3DCOLORS); SetMenuItemBitmaps(hMenu, MNU_RESTORE, MF_BYCOMMAND, hbmpRestore, (HBITMAP)NULL); SetMenuItemBitmaps(hMenu, MNU_ABOUT, MF_BYCOMMAND, hbmpHelp, (HBITMAP)NULL); SetMenuItemBitmaps(hMenu, MNU_EXIT_AFTER, MF_BYCOMMAND, hbmpWaitClose, (HBITMAP)NULL); SetMenuItemBitmaps(hMenu, MNU_EXIT, MF_BYCOMMAND, hbmpClose, (HBITMAP)NULL); SetMenuDefaultItem(hMenu, MNU_RESTORE, MF_BYCOMMAND); switch (TrackPopupMenu(hMenu, TPM_CENTERALIGN | TPM_BOTTOMALIGN | TPM_LEFTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD, /* return an item.wID instead of BOOL */ pos.x, pos.y, 0, hWnd, (LPCRECT)NULL)) { case MNU_RESTORE: pthis->restoreApplication(); break; case MNU_ABOUT: pthis->showAboutWindow(); break; case MNU_EXIT_AFTER: pthis->exitAfterTransfers(); break; case MNU_EXIT: pthis->exitApplication(); break; } DestroyMenu(hMenu); DeleteObject((HGDIOBJ)hbmpRestore); DeleteObject((HGDIOBJ)hbmpClose); } break; case WM_DESTROY: PostQuitMessage(0); break; } return 0; }