void SAX::OnUpdateMenu(CCmdUI* pCmdUI) { CMenu *pMainMenu = GetMenu(); if (pMainMenu) { const MenuId2CmdNum* pmi2cn; for (pmi2cn = g_MenuId2CmdNum; pmi2cn->id; ++pmi2cn) { // Update for menu items that are either checked or unchecked if (m_sbpro.IsMenuCommandChecked(pmi2cn->cmd)) pMainMenu->CheckMenuItem(pmi2cn->id, MF_CHECKED); else pMainMenu->CheckMenuItem(pmi2cn->id, MF_UNCHECKED); // Update for menu items that are either enabled or disabled if (m_sbpro.IsMenuCommandEnabled(pmi2cn->cmd)) pMainMenu->EnableMenuItem(pmi2cn->id, MF_ENABLED); else pMainMenu->EnableMenuItem(pmi2cn->id, MF_GRAYED); } } DrawMenuBar(); }
/* * SpellsExit: Free spells when game exited. */ void SpellsExit(void) { int i; for (i=0; i < num_schools; i++) { if (submenus[i]) DestroyMenu(submenus[i]); } // Remove "Spells" menu if (spell_menu != NULL) { RemoveMenu(cinfo->main_menu, MENU_POSITION_SPELLS, MF_BYPOSITION); DrawMenuBar(cinfo->hMain); DestroyMenu(spell_menu); } spell_menu = NULL; SafeFree(submenus); submenus = NULL; FreeSpells(); }
static void text_OnMDIActivate( HWND hwnd, BOOL active, HWND hActivate, HWND hDeactivate) { #if WIN_MCW #pragma unused(hActivate) #pragma unused(hDeactivate) #endif CheckMenuItem(TextMenu,GetWindowWord(hwnd,0), (unsigned) (active ? MF_CHECKED : MF_UNCHECKED)); if (active) { text_OnUpdateMenu(hwnd,GetMenu(hMainFrame)); if (FORWARD_WM_MDISETMENU(MDIClientWnd,TRUE,TextMenu, TextWindowMenu,SendMessage) != 0) { DrawMenuBar(hMainFrame); PostMessage(hMainFrame,UWM_UPDATE_TOOLBAR,0,0); } } }
static int mh_addsubitem (lua_State* l) { menu* m = lua_touserdata(l,1); if (!m->sub) return 0; int k = 2, pos = 0; if (lua_isnumber(l,k)) pos = lua_tointeger(l,k++); if (pos==0) pos=-1; else if (pos>0) pos--; else if (pos<-1) pos += GetMenuItemCount(m->menu); const char* str = luaL_checkstring(l,k++); const wchar_t* wstr = strcvt(str, CP_UTF8, CP_UTF16, NULL); HMENU h = CreateMenu(); InsertMenu(m->menu, pos, MF_BYPOSITION | MF_STRING | MF_POPUP, h, wstr); DrawMenuBar(win); free(wstr); menu it; it.sub = TRUE; it.parent = m->menu; it.origin = m->origin; it.position = GetMenuItemCount(m->menu) -1; it.menu = h; lua_settop(l,0); lua_pushfulluserdata(l, &it, sizeof(it), "menuhandle"); return 1; }
LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch( uMsg ) { case WM_COMMAND : switch( LOWORD( wParam ) ) { case IDM_TEST : // Add new menu option on a new line. //................................... AppendMenu( GetMenu( hWnd ), MFT_STRING | MFT_MENUBARBREAK, 120, "New Item" ); DrawMenuBar( hWnd ); break; case IDM_ABOUT : DialogBox( hInst, "AboutBox", hWnd, (DLGPROC)About ); break; case IDM_EXIT : DestroyWindow( hWnd ); break; } break; case WM_DESTROY : PostQuitMessage(0); break; default : return( DefWindowProc( hWnd, uMsg, wParam, lParam ) ); } return( 0L ); }
LRESULT CMainFrame::EnableDisableCloseItem(bool bActivate) { HMENU hMenu = ::GetMenu(m_hwnd); UINT EnableFlag; if (bActivate) { EnableFlag = MF_ENABLED; } else { EnableFlag = MF_GRAYED; } EnableMenuItem(hMenu, 1, MF_BYPOSITION | EnableFlag); HMENU hFileMenu = ::GetSubMenu(hMenu, 0); ::EnableMenuItem(hFileMenu, IDM_FILE_CLOSE, MF_BYCOMMAND | EnableFlag); ::EnableMenuItem(hFileMenu, IDM_WINDOW_CLOSE_ALL, MF_BYCOMMAND | EnableFlag); DrawMenuBar(); return 0; }
void setup_console_window() { auto hOut = GetStdHandle(STD_OUTPUT_HANDLE); // Disable close button in console to avoid shutdown without cleanup. EnableMenuItem(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE , MF_GRAYED); DrawMenuBar(GetConsoleWindow()); //SetConsoleCtrlHandler(HandlerRoutine, true); // Configure console size and position. auto coord = GetLargestConsoleWindowSize(hOut); coord.X /= 2; SetConsoleScreenBufferSize(hOut, coord); SMALL_RECT DisplayArea = {0, 0, 0, 0}; DisplayArea.Right = coord.X-1; DisplayArea.Bottom = (coord.Y-1)/2; SetConsoleWindowInfo(hOut, TRUE, &DisplayArea); change_icon(::LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(101))); // Set console title. std::wstringstream str; str << "CasparCG Server " << caspar::env::version(); #ifdef COMPILE_RELEASE str << " Release"; #elif COMPILE_PROFILE str << " Profile"; #elif COMPILE_DEVELOP str << " Develop"; #elif COMPILE_DEBUG str << " Debug"; #endif SetConsoleTitle(str.str().c_str()); }
int SimulatorWin::run() { auto player = player::PlayerWin::create(); INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); parseCocosProjectConfig(_project); // load project config from command line args vector<string> args; for (int i = 0; i < __argc; ++i) { wstring ws(__wargv[i]); string s; s.assign(ws.begin(), ws.end()); args.push_back(s); } _project.parseCommandLine(args); if (_project.getProjectDir().empty()) { if (args.size() == 2) { // for Code IDE before RC2 _project.setProjectDir(args.at(1)); _project.setDebuggerType(kCCRuntimeDebuggerCodeIDE); } } // create the application instance _app = new AppDelegate(); _app->setProjectConfig(_project); // create console window if (_project.isShowConsole()) { AllocConsole(); _hwndConsole = GetConsoleWindow(); if (_hwndConsole != NULL) { ShowWindow(_hwndConsole, SW_SHOW); BringWindowToTop(_hwndConsole); freopen("CONOUT$", "wt", stdout); freopen("CONOUT$", "wt", stderr); HMENU hmenu = GetSystemMenu(_hwndConsole, FALSE); if (hmenu != NULL) { DeleteMenu(hmenu, SC_CLOSE, MF_BYCOMMAND); } } } // log file if (_project.isWriteDebugLogToFile()) { const string debugLogFilePath = _project.getDebugLogFilePath(); _writeDebugLogFile = fopen(debugLogFilePath.c_str(), "w"); if (!_writeDebugLogFile) { CCLOG("Cannot create debug log file %s", debugLogFilePath.c_str()); } } // set environments SetCurrentDirectoryA(_project.getProjectDir().c_str()); FileUtils::getInstance()->setDefaultResourceRootPath(_project.getProjectDir()); FileUtils::getInstance()->setWritablePath(_project.getWritableRealPath().c_str()); // check screen DPI HDC screen = GetDC(0); int dpi = GetDeviceCaps(screen, LOGPIXELSX); ReleaseDC(0, screen); // set scale with DPI // 96 DPI = 100 % scaling // 120 DPI = 125 % scaling // 144 DPI = 150 % scaling // 192 DPI = 200 % scaling // http://msdn.microsoft.com/en-us/library/windows/desktop/dn469266%28v=vs.85%29.aspx#dpi_and_the_desktop_scaling_factor // // enable DPI-Aware with DeclareDPIAware.manifest // http://msdn.microsoft.com/en-us/library/windows/desktop/dn469266%28v=vs.85%29.aspx#declaring_dpi_awareness float screenScale = 1.0f; if (dpi >= 120 && dpi < 144) { screenScale = 1.25f; } else if (dpi >= 144 && dpi < 192) { screenScale = 1.5f; } else if (dpi >= 192) { screenScale = 2.0f; } CCLOG("SCREEN DPI = %d, SCREEN SCALE = %0.2f", dpi, screenScale); // create opengl view Size frameSize = _project.getFrameSize(); float frameScale = 1.0f; if (_project.isRetinaDisplay()) { frameSize.width *= screenScale; frameSize.height *= screenScale; } else { frameScale = screenScale; } const Rect frameRect = Rect(0, 0, frameSize.width, frameSize.height); const bool isResize = _project.isResizeWindow(); std::stringstream title; title << "Cocos Simulator - " << ConfigParser::getInstance()->getInitViewName(); initGLContextAttrs(); auto glview = GLViewImpl::createWithRect(title.str(), frameRect, frameScale); _hwnd = glview->getWin32Window(); DragAcceptFiles(_hwnd, TRUE); //SendMessage(_hwnd, WM_SETICON, ICON_BIG, (LPARAM)icon); //SendMessage(_hwnd, WM_SETICON, ICON_SMALL, (LPARAM)icon); //FreeResource(icon); auto director = Director::getInstance(); director->setOpenGLView(glview); director->setAnimationInterval(1.0 / 60.0); // set window position if (_project.getProjectDir().length()) { setZoom(_project.getFrameScale()); } Vec2 pos = _project.getWindowOffset(); if (pos.x != 0 && pos.y != 0) { RECT rect; GetWindowRect(_hwnd, &rect); MoveWindow(_hwnd, pos.x, pos.y, rect.right - rect.left, rect.bottom - rect.top, FALSE); } // path for looking Lang file, Studio Default images FileUtils::getInstance()->addSearchPath(getApplicationPath().c_str()); // init player services initServices(); setupUI(); DrawMenuBar(_hwnd); // prepare FileUtils::getInstance()->setPopupNotify(false); _project.dump(); auto app = Application::getInstance(); g_oldWindowProc = (WNDPROC)SetWindowLong(_hwnd, GWL_WNDPROC, (LONG)SimulatorWin::windowProc); // update window size RECT rect; GetWindowRect(_hwnd, &rect); MoveWindow(_hwnd, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top + GetSystemMetrics(SM_CYMENU), FALSE); // startup message loop return app->run(); }
// funkcja okna zawieraj¹ca obs³ugê meldunków przesy³anych do okna LRESULT CALLBACK WndProc (HWND Okno, UINT KodMeldunku, WPARAM wParam, LPARAM lParam) { // deklaracja zmiennych HMENU mGlowne, mPlik, mInfo; // obs³uga meldunku w zale¿noœci od kodu meldunku switch (KodMeldunku) { case WM_CREATE: // obs³uga utworzenia okna - stworzenie menu mPlik = CreateMenu(); AppendMenu(mPlik, MF_STRING, 100, "&Gong..."); AppendMenu(mPlik, MF_SEPARATOR, 0, ""); AppendMenu(mPlik, MF_STRING, 101, "&Koniec"); mInfo = CreateMenu(); AppendMenu(mInfo, MF_STRING, 102, "&Autor..."); mGlowne = CreateMenu(); AppendMenu(mGlowne, MF_POPUP, (UINT_PTR) mPlik, "&Plik"); AppendMenu(mGlowne, MF_POPUP, (UINT_PTR) mInfo, "&Info"); SetMenu(Okno, mGlowne); DrawMenuBar(Okno); return 0; case WM_COMMAND: // obs³uga wyboru opcji z menu switch (wParam) { case 100: if(MessageBox(Okno, "Czy wygenerowaæ gong?", "Gong", MB_YESNO) == IDYES) MessageBeep(0); break; case 101: DestroyWindow(Okno); // wymuszenie meldunku WM_DESTROY break; case 102: MessageBox(Okno, "imiê i nazwisko:\nnumer indeksu: ", "Student PJWSTK", MB_OK); } return 0; case WM_PAINT: // obs³uga odœwie¿enia okna { PAINTSTRUCT Paint; HDC Kontekst = BeginPaint(Okno, &Paint); HPEN Pioro = CreatePen(PS_SOLID, 15, RGB(255,0,0)); // czerwone pióro o gruboœci 15 HBRUSH Pedzel = CreateSolidBrush(RGB(255,0,0)); // czerwony pêdzel SelectObject(Kontekst, Pioro); // SelectObject(Kontekst, GetStockObject(WHITE_BRUSH)); // standardowy bia³y pêdzel Ellipse(Kontekst, 100, 100, 300, 300); // narysowanie okrêgu za pomoc¹ aktywnych pióra i pêdzla SelectObject(Kontekst, Pedzel); POINT wielokat[] = {{106, 200}, {118, 248}, {152, 282}, {200, 294}, {248, 282}, {282, 248}, {294, 200}}; Polygon(Kontekst, wielokat, 7); // narysowanie wielok¹ta wype³niaj¹cego doln¹ po³owê okrêgu na czerwono SetBkMode(Kontekst, TRANSPARENT); // wypisanie tekstu SetTextAlign(Kontekst, TA_CENTER | TA_BOTTOM); // SetTextColor(Kontekst, RGB(0,0,0)); TextOut(Kontekst, 200, 200, "P J W S T K", 11); DeleteObject(Pioro); // usuniêcie niepotrzebnych przyborów graficznych DeleteObject(Pedzel); EndPaint(Okno, &Paint); } return 0; case WM_DESTROY: // obs³uga zamkniêcia okna - wygenerowanie meldunku WM_QUIT PostQuitMessage (0) ; return 0; default: // standardowa obs³uga wszystkich pozosta³ych meldunków return DefWindowProc(Okno, KodMeldunku, wParam, lParam); } }
void DeleteMenuItem ( int iMenuID ) { DeleteItem ( iMenuID ); DrawMenuBar ( hwndOriginalParent ); }
/* 向被注入进程添加额外的菜单 */ void AddMenu() { assert(g_hCalc != NULL); int nCount = 0; HMENU hMenu = NULL; HMENU hSubMenu = NULL; hMenu = GetMenu(g_hCalc); if (NULL == hMenu) { return; } if (g_bUnicode) { #define AppendMenu AppendMenuW #define TEXT(quote) __TEXT(quote) // r_winnt } else { #define AppendMenu AppendMenuA #define __TEXT(quote) quote } BOOL bRet = AppendMenu(hMenu, MF_POPUP | MF_STRING, (UINT)hMenu, TEXT("插件") ); if (!bRet) { goto ERROR_CLEAN; } nCount = GetMenuItemCount(hMenu); if (-1 == nCount) { goto ERROR_CLEAN; } //SAVE g_nMenus = nCount; g_hMenu = hMenu; hSubMenu = GetSubMenu(hMenu, nCount - 1); if (NULL == hSubMenu) { goto ERROR_CLEAN; } bRet = AppendMenu(hSubMenu, MF_STRING, MYMSG_FEATURE, TEXT("功能")); if (!bRet) { CloseHandle(hSubMenu); hSubMenu = NULL; goto ERROR_CLEAN; } bRet = AppendMenu(hSubMenu, MF_STRING, MYMSG_ABOUT, TEXT("关于")); if (!bRet) { CloseHandle(hSubMenu); hSubMenu = NULL; goto ERROR_CLEAN; } DrawMenuBar(g_hCalc); CloseHandle(hSubMenu); hSubMenu = NULL; ERROR_CLEAN: CloseHandle(hMenu); hMenu = NULL; return; }
void QMenuBarPrivate::wceRefresh() { DrawMenuBar(wce_menubar->menubarHandle); }
EXPORT(sqInt) primitiveDrawMenuBar(void) { DrawMenuBar(); return null; }
VOID DoCreateStatusBar(VOID) { RECT rc; RECT rcstatus; BOOL bStatusBarVisible; /* Check if status bar object already exists. */ if (Globals.hStatusBar == NULL) { /* Try to create the status bar */ Globals.hStatusBar = CreateStatusWindow(WS_CHILD | WS_VISIBLE | WS_EX_STATICEDGE, NULL, Globals.hMainWnd, CMD_STATUSBAR_WND_ID); if (Globals.hStatusBar == NULL) { ShowLastError(); return; } /* Load the string for formatting column/row text output */ LoadString(Globals.hInstance, STRING_LINE_COLUMN, Globals.szStatusBarLineCol, MAX_PATH - 1); /* Set the status bar for single-text output */ SendMessage(Globals.hStatusBar, SB_SIMPLE, (WPARAM)TRUE, (LPARAM)0); } /* Set status bar visiblity according to the settings. */ if (Globals.bWrapLongLines == TRUE || Globals.bShowStatusBar == FALSE) { bStatusBarVisible = FALSE; ShowWindow(Globals.hStatusBar, SW_HIDE); } else { bStatusBarVisible = TRUE; ShowWindow(Globals.hStatusBar, SW_SHOW); SendMessage(Globals.hStatusBar, WM_SIZE, 0, 0); } /* Set check state in show status bar item. */ if (bStatusBarVisible) { CheckMenuItem(Globals.hMenu, CMD_STATUSBAR, MF_BYCOMMAND | MF_CHECKED); } else { CheckMenuItem(Globals.hMenu, CMD_STATUSBAR, MF_BYCOMMAND | MF_UNCHECKED); } /* Update menu mar with the previous changes */ DrawMenuBar(Globals.hMainWnd); /* Sefety test is edit control exists */ if (Globals.hEdit != NULL) { /* Retrieve the sizes of the controls */ GetClientRect(Globals.hMainWnd, &rc); GetClientRect(Globals.hStatusBar, &rcstatus); /* If status bar is currently visible, update dimensions of edit control */ if (bStatusBarVisible) rc.bottom -= (rcstatus.bottom - rcstatus.top); /* Resize edit control to right size. */ MoveWindow(Globals.hEdit, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE); } /* Update content with current row/column text */ DIALOG_StatusBarUpdateCaretPos(); }
void CMainFrame::OnInitMenu(CMenu* pMenu) { CMDIFrameWnd::OnInitMenu(pMenu); // CG: This block added by 'Tip of the Day' component. { // TODO: This code adds the "Tip of the Day" menu item // on the fly. It may be removed after adding the menu // item to all applicable menu items using the resource // editor. // Add Tip of the Day menu item on the fly! static CMenu* pSubMenu = NULL; CString strHelp; strHelp.LoadString(CG_IDS_TIPOFTHEDAYHELP); CString strMenu; int nMenuCount = pMenu->GetMenuItemCount(); BOOL bFound = FALSE; for (int i=0; i < nMenuCount; i++) { pMenu->GetMenuString(i, strMenu, MF_BYPOSITION); if (strMenu == strHelp) { pSubMenu = pMenu->GetSubMenu(i); bFound = TRUE; ASSERT(pSubMenu != NULL); } } CString strTipMenu; strTipMenu.LoadString(CG_IDS_TIPOFTHEDAYMENU); if (!bFound) { // Help menu is not available. Please add it! if (pSubMenu == NULL) { // The same pop-up menu is shared between mainfrm and frame // with the doc. static CMenu popUpMenu; pSubMenu = &popUpMenu; pSubMenu->CreatePopupMenu(); pSubMenu->InsertMenu(0, MF_STRING|MF_BYPOSITION, CG_IDS_TIPOFTHEDAY, strTipMenu); } pMenu->AppendMenu(MF_STRING|MF_BYPOSITION|MF_ENABLED|MF_POPUP, (UINT)pSubMenu->m_hMenu, strHelp); DrawMenuBar(); } else { // Check to see if the Tip of the Day menu has already been added. pSubMenu->GetMenuString(0, strMenu, MF_BYPOSITION); if (strMenu != strTipMenu) { // Tip of the Day submenu has not been added to the // first position, so add it. pSubMenu->InsertMenu(0, MF_BYPOSITION); // Separator pSubMenu->InsertMenu(0, MF_STRING|MF_BYPOSITION, CG_IDS_TIPOFTHEDAY, strTipMenu); } } } }
void showMenuBar() { if(menuHandle == NULL) return; SetMenu(mainPtr.getSystemHandle(), menuHandle); DrawMenuBar(mainPtr.getSystemHandle()); }
SetUpMenus() { /*================================================*/ /* Get the Apple menu from the resource file, add */ /* the names of available desk accessories, and */ /* install it at the end of the menu bar. */ /*================================================*/ AppleMenu = GetMenu(AppleID); AddResMenu(AppleMenu,'DRVR'); InsertMenu(AppleMenu,0); /*==============================================*/ /* Get the File menu from the resource file and */ /* install it at the end of the menu bar. */ /*==============================================*/ FileMenu = GetMenu(FileID); InsertMenu(FileMenu,0); /*==============================================*/ /* Get the Edit menu from the resource file and */ /* install it at the end of the menu bar. */ /*==============================================*/ EditMenu = GetMenu(EditID); InsertMenu(EditMenu,0); /*============================================*/ /* Get the Buffer menu from the resource file */ /* and install it at the end of the menu bar. */ /*============================================*/ BufferMenu = GetMenu(BufferID); InsertMenu(BufferMenu,0); /*===============================================*/ /* Get the Execution menu from the resource file */ /* and install it at the end of the menu bar. */ /*===============================================*/ ExecutionMenu = GetMenu(ExecutionID); InsertMenu(ExecutionMenu,0); /*============================================*/ /* Get the Watch menu from the resource file */ /* and install it at the end of the menu bar. */ /*============================================*/ WatchMenu = GetMenu(WatchID); InsertMenu(WatchMenu,0); /*============================================*/ /* Get the Browse menu from the resource file */ /* and install it at the end of the menu bar. */ /*============================================*/ BrowseMenu = GetMenu(BrowseID); InsertMenu(BrowseMenu,0); /*======================================*/ /* Show the new menu bar on the screen. */ /*======================================*/ DrawMenuBar(); }
void Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { static BOOL s_fProcesses = TRUE; switch (id) { case IDCANCEL: EndDialog(hwnd, id); break; /* Restart the application when we are not running * as Elevated Administrator. */ case IDC_BTN_SYSTEM_PROCESSES: { /* Hide ourself before trying to start the same application * but with elevated privileges. */ ShowWindow(hwnd, SW_HIDE); TCHAR szApplication[MAX_PATH]; DWORD cchLength = _countof(szApplication); /* Retrieves the full name of the executable * image for the specified process. * hProcess [in] * A handle to the process. * This handle must be created with the PROCESS_QUERY_INFORMATION * or PROCESS_QUERY_LIMITED_INFORMATION access right. * For more information, see Process Security and Access Rights. * dwFlags [in] * This parameter can be one of the following values. * 0 The name should use the Win32 path format. * The name should use the native system path format. * lpExeName [out] * The path to the executable image. * If the function succeeds, this string is null-terminated. * lpdwSize [in, out] * On input, specifies the size of the lpExeName buffer, in characters. * On success, receives the number of characters written to the buffer, * not including the null-terminating character. */ QueryFullProcessImageName( GetCurrentProcess(), 0, szApplication, &cchLength); DWORD dwStatus = StartElevatedProcess(szApplication, NULL); if (dwStatus == S_OK) { /* not need to keep on working under lower privileges. */ ExitProcess(0); } /* In case of error, show up again. */ ShowWindow(hwnd, SW_SHOWNORMAL); } break; case ID_PROCESSES: s_fProcesses = TRUE; EnableMenuItem(GetMenu(hwnd), ID_VMMAP, MF_BYCOMMAND | MF_ENABLED); DrawMenuBar(hwnd); Dlg_PopulateProcessList(hwnd); break; case ID_MODULES: EnableMenuItem(GetMenu(hwnd), ID_VMMAP, MF_BYCOMMAND | MF_GRAYED); DrawMenuBar(hwnd); s_fProcesses = FALSE; Dlg_PopulateModuleList(hwnd); break; case IDC_PROCESSMODULELIST: if (codeNotify == CBN_SELCHANGE) { DWORD dw = ComboBox_GetCurSel(hwndCtl); if (s_fProcesses) { dw = (DWORD) ComboBox_GetItemData(hwndCtl, dw); // Process ID ShowProcessInfo(GetDlgItem(hwnd, IDC_RESULTS), dw); } else { // Index in helper listbox of full path dw = (DWORD) ComboBox_GetItemData(hwndCtl, dw); TCHAR szModulePath[1024]; ListBox_GetText(GetDlgItem(hwnd, IDC_MODULEHELP), dw, szModulePath); ShowModuleInfo(GetDlgItem(hwnd, IDC_RESULTS), szModulePath); } } break; case ID_VMMAP: { TCHAR szCmdLine[32]; HWND hwndCB = GetDlgItem(hwnd, IDC_PROCESSMODULELIST); DWORD dwProcessId = (DWORD) ComboBox_GetItemData(hwndCB, ComboBox_GetCurSel(hwndCB)); StringCchPrintf(szCmdLine, _countof(szCmdLine), TEXT("%d"), dwProcessId); DWORD dwStatus = StartElevatedProcess(TEXT("\"14-VMMap.exe\""), szCmdLine); if (dwStatus == ERROR_CANCELLED) { chMB("Failed to run 14-VMMap.exe: you refused access."); } } break; } }
HRESULT InitInstance(HINSTANCE hInstance, LPSTR lpCmdLine, long nCmdShow, DWORD dwWidth, DWORD dwHeight) { // grab the ini file name from the command line char buf[256] = ".\\"; if( !lpCmdLine || !strlen(lpCmdLine) ) strcat( buf, g_szDefaultIni ); else strcat( buf, lpCmdLine ); // load main .ini file and create keyboard control const char szGroupName[] = "MODELS"; g_pKeyboardControl = new KeyboardControl( buf, szGroupName ); g_iNumModels = g_pKeyboardControl->GetInt( szGroupName, "NumModels", 0 ); if( g_iNumModels ) { g_szMenuModelNames = new LPSTR[g_iNumModels]; g_szModelFileNames = new LPSTR[g_iNumModels]; char buffer[256],mName[256], fName[256]; for(int i=1; i <= g_iNumModels; i++) { wsprintf(buffer,"Model%d",i); strcpy(mName, g_pKeyboardControl->GetString( buffer, "Name", "Robot" ) ); strcpy( fName, ".\\" ); strcat(fName, g_pKeyboardControl->GetString( buffer, "File", "Robot" ) ); g_szMenuModelNames[i-1] = new char[strlen(mName)+1]; g_szModelFileNames[i-1] = new char[strlen(fName)+1]; strcpy(g_szMenuModelNames[i-1],mName); strcpy(g_szModelFileNames[i-1],fName); } // select the first in the list strcat( g_szHandFileName, g_szModelFileNames[0] ); } delete g_pKeyboardControl; g_pKeyboardControl = NULL; // create window WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; // Class style(s). wc.lpfnWndProc = (WNDPROC)WndProc; // Window Procedure wc.cbClsExtra = 0; // No per-class extra data. wc.cbWndExtra = 0; // No per-window extra data. wc.hInstance = hInstance; // Owner of this class wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_HAND_ICON)); // Icon name from .RC wc.hCursor = LoadCursor(NULL, IDC_ARROW);// Cursor wc.hbrBackground = (HBRUSH)(BLACK_BRUSH); // Default color wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAIN_MENU); // menu name from .RC wc.lpszClassName = g_szClassName; // Name to register as if(!RegisterClass(&wc)) return ERR_INIT; // Create a main window for this application instance. // adjust the size of the window so that the client size is the requested size RECT rcRect; SetRect(&rcRect, 0,0,dwWidth, dwHeight); DWORD dwStyle = WS_CAPTION | WS_BORDER | WS_THICKFRAME | WS_SYSMENU; AdjustWindowRectEx(&rcRect, dwStyle, TRUE,0); dwWidth = rcRect.right - rcRect.left; dwHeight = rcRect.bottom - rcRect.top; // create a window of this new size g_hWnd = CreateWindowEx( 0, g_szClassName, g_szTitle, dwStyle, 0, 0, dwWidth, dwHeight, NULL, NULL, hInstance, NULL ); // If window could not be created, return "failure" if (! g_hWnd) { return(ERR_INIT); } // Make the window visible; update its client area; and return "success" ShowWindow (g_hWnd, SW_SHOW); // Show the window UpdateWindow(g_hWnd); g_hInstance = hInstance; g_hMenu = GetMenu(g_hWnd); if (g_hMenu) { if (g_iNumModels > 0) { HMENU hModelMenu = CreateMenu(); for(int i=1; i <= g_iNumModels; i++) { AppendMenu(hModelMenu,MF_STRING,500+i,g_szMenuModelNames[i-1]); } AppendMenu(g_hMenu,MF_POPUP|MF_STRING,(unsigned int)hModelMenu,"Model"); DrawMenuBar(g_hWnd); } } return S_OK; // We succeeded... }
void GFrame::UpdateMenu() { if (ShowMenuBar) DrawMenuBar(); }
Boolean MCScreenDC::open() { owndnd = False; mouseMoveRgn = NewRgn(); SetRectRgn(mouseMoveRgn, 0, 0, 1, 1); //create a invisible window, and set port to this window //so that later on at the very first time MC select and set font //will only affect in this invisible window, not other apps on the desk top, // when MC is first started. The size of the window is random. // Rect invisibleWinRect; Rect invisibleWinRect; SetRect(&invisibleWinRect, 0, 0, 20, 20); invisibleWin = NewCWindow(nil, &invisibleWinRect, "\p", False, kUtilityWindowClass, (WindowRef)(-1L), False, 0); long response; if (Gestalt(gestaltSystemVersion, &response) == noErr) { if (response >= 0x1030 && response < 0x1040) MCantialiasedtextworkaround = True; else MCantialiasedtextworkaround = False; } SetGWorld(GetWindowPort(invisibleWin), GetMainDevice()); vis = new MCVisualInfo; devdepth = 32; black_pixel.red = black_pixel.green = black_pixel.blue = 0; //black pixel white_pixel.red = white_pixel.green = white_pixel.blue = 0xFFFF; //white pixel black_pixel.pixel = 0; white_pixel.pixel = 0xFFFFFF; redbits = greenbits = bluebits = 8; redshift = 16; greenshift = 8; blueshift = 0; vis->red_mask = 0x00FF0000; vis->green_mask = 0x0000FF00; vis->blue_mask = 0x000000FF; MCzerocolor = MCbrushcolor = white_pixel; alloccolor(MCbrushcolor); MCselectioncolor = MCpencolor = black_pixel; alloccolor(MCselectioncolor); alloccolor(MCpencolor); gray_pixel.red = gray_pixel.green = gray_pixel.blue = 0x8888; alloccolor(gray_pixel); background_pixel.red = background_pixel.green = background_pixel.blue = 0xffff; alloccolor(background_pixel); //query the system for the hilited text color, and set ours RGBColor hiliteRGB; LMGetHiliteRGB(&hiliteRGB); MChilitecolor.red = hiliteRGB.red; MChilitecolor.green = hiliteRGB.green; MChilitecolor.blue = hiliteRGB.blue; alloccolor(MChilitecolor); MCColor *syscolors = getaccentcolors(); if (syscolors != NULL) MCaccentcolor = syscolors[4]; else { MCaccentcolor.red = MCaccentcolor.green = 0x0000; MCaccentcolor.blue = 0x8080; } alloccolor(MCaccentcolor); grabbed = False; tripleclick = doubleclick = False; MCdoubletime = GetDblTime() * 1000 / 60; opened = True; mousewindow = new _Drawable; activewindow = new _Drawable; lastactivewindow = new _Drawable; mousewindow->type = activewindow->type = lastactivewindow->type = DC_WINDOW; mousewindow->handle.window = activewindow->handle.window = lastactivewindow->handle.window = 0; //get handle of application menu bar menuBar = GetMenuBar(); SetMenuBar(menuBar); //set menu bar as current menulist //create Apple menu appleMenu = NewMenu(mApple, "\p\024"); //menu title is an apple icon InsertMenuItem(appleMenu, "\pAbout...", 0); InsertMenu(appleMenu, 0); DrawMenuBar(); //draw the menu bar with the Apple menu usetemp = False; Handle tmem = Get1IndResource('TMEM', 1); if (tmem != NULL) { char *ptr = *tmem; if (*(ptr + 1)) usetemp = True; } MCtemplatescrollbar->alloccolors(); if (IsMacEmulatedLF()) // no AM MCtemplatebutton->allocicons(); // preallocate these because GetItemMark can't distinguish them submenuIDs[0] = 1; submenuIDs[checkMark] = 1; submenuIDs[diamondMark] = 1; MCcursors[PI_NONE] = nil; MCblinkrate = GetCaretTime() * 1000 / 60; MCDisplay const *t_displays; getdisplays(t_displays, false); MCwbr = t_displays[0] . workarea; //TSM - INIT TSM APPLICATION AND INSTALL REQUIRED APPLEVENT HANDLERS TSMPositionToOffsetUPP = NewAEEventHandlerUPP(TSMPositionToOffset); TSMOffsetToPositionUPP = NewAEEventHandlerUPP(TSMOffsetToPosition); TSMUpdateHandlerUPP = NewAEEventHandlerUPP(TSMUpdateHandler); TSMUnicodeNotFromInputUPP = NewAEEventHandlerUPP(TSMUnicodeNotFromInputHandler); AEInstallEventHandler(kTextServiceClass, kPos2Offset, TSMPositionToOffsetUPP, 0L , False); AEInstallEventHandler(kTextServiceClass, kOffset2Pos, TSMOffsetToPositionUPP, 0L , False); AEInstallEventHandler(kTextServiceClass, kUpdateActiveInputArea, TSMUpdateHandlerUPP, 0L , False); AEInstallEventHandler(kTextServiceClass, kUnicodeNotFromInputMethod, TSMUnicodeNotFromInputUPP, 0L , False); openIME(); dragdropUPP = NewDragReceiveHandlerUPP(DragReceiveHandler); InstallReceiveHandler(dragdropUPP, NULL, NULL); dragmoveUPP = NewDragTrackingHandlerUPP(DragTrackingHandler); InstallTrackingHandler(dragmoveUPP, NULL, NULL); s_animation_current_time = s_animation_start_time = CFAbsoluteTimeGetCurrent(); //// Dock Menu Initialization EventTypeSpec t_menu_event_specs[1]; t_menu_event_specs[0] . eventClass = kEventClassMenu; t_menu_event_specs[0] . eventKind = kEventMenuPopulate; CreateNewMenu(0, 0, &f_icon_menu); s_icon_menu_event_handler_upp = NewEventHandlerUPP((EventHandlerProcPtr)handleiconmenuevent); InstallEventHandler(GetMenuEventTarget(f_icon_menu), s_icon_menu_event_handler_upp, 1, t_menu_event_specs, NULL, NULL); t_menu_event_specs[0] . eventClass = kEventClassCommand; t_menu_event_specs[0] . eventKind = kEventCommandProcess; InstallEventHandler(GetApplicationEventTarget(), s_icon_menu_event_handler_upp, 1, t_menu_event_specs, NULL, NULL); SetApplicationDockTileMenu(f_icon_menu); //// Color Profile Initialization CMGetDefaultProfileBySpace(cmRGBData, &m_dst_profile); CMProfileLocation t_location; t_location . locType = cmPathBasedProfile; strcpy(t_location . u . pathLoc . path, "/System/Library/ColorSync/Profiles/sRGB Profile.icc"); CMOpenProfile(&m_srgb_profile, &t_location); //// return True; }
static void ROM_ShowMenuBar(_THIS) { #if !TARGET_API_MAC_CARBON /* This seems not to be available? -sts Aug 2000 */ RgnHandle drawRgn = nil; RgnHandle menuRgn = nil; RgnHandle tempRgn = nil; RgnHandle grayRgn = nil; WindowPtr window = nil; GrafPtr wMgrPort; GrafPtr savePort; Rect menuRect; long response; short height; EventRecord theEvent; RGBColor saveRGB; RGBColor blackRGB = { 0, 0, 0 }; height = GetMBarHeight(); if ((height <= 0) && (gSaveMenuBar > 0)) { drawRgn = NewRgn(); menuRgn = NewRgn(); tempRgn = NewRgn(); if ( ! tempRgn || ! drawRgn || ! gSaveGrayRgn ) { goto CLEANUP; } grayRgn = GetGrayRgn(); /* No need to check for this */ GetPort(&savePort); GetWMgrPort(&wMgrPort); /* Set the height properly */ LMSetMBarHeight(gSaveMenuBar); /* Restore the old GrayRgn: rounded corners, etc, but not the menubar -- subtract that out first! */ if (gSaveGrayRgn) { menuRect = (*GetMainDevice())->gdRect; menuRect.bottom = menuRect.top + gSaveMenuBar; RectRgn(menuRgn, &menuRect); DiffRgn(grayRgn, gSaveGrayRgn, drawRgn); /* What do we inval? */ DiffRgn(drawRgn, menuRgn, drawRgn); /* Clip out the menu */ /* Now redraw the corners and other bits black */ SetPort(wMgrPort); GetClip(tempRgn); SetClip(drawRgn); GetForeColor(&saveRGB); RGBForeColor(&blackRGB); PaintRgn(drawRgn); RGBForeColor(&saveRGB); SetClip(tempRgn); SetPort(savePort); UnionRgn(drawRgn, menuRgn, drawRgn); /* Put back the menu */ /* Now actually restore the GrayRgn */ CopyRgn(gSaveGrayRgn, grayRgn); DisposeRgn(gSaveGrayRgn); gSaveGrayRgn = nil; } /* Modify the vis regions of exposed windows and draw menubar */ window = (FrontWindow()) ? FrontWindow() : (WindowPtr) -1L; PaintBehind(window, drawRgn); CalcVisBehind(window, drawRgn); DrawMenuBar(); SetPort(savePort); gSaveMenuBar = 0; /* Now show the control strip if it's present */ if (!Gestalt(gestaltControlStripAttr, &response) && (response & (1L << gestaltControlStripExists))) { if (gSaveCSVis && !SBIsControlStripVisible()) SBShowHideControlStrip(true); gSaveCSVis = true; } /* Yield time so that floaters can catch up */ EventAvail(0, &theEvent); EventAvail(0, &theEvent); EventAvail(0, &theEvent); EventAvail(0, &theEvent); } CLEANUP: if (drawRgn) DisposeRgn(drawRgn); if (menuRgn) DisposeRgn(menuRgn); if (tempRgn) DisposeRgn(tempRgn); #endif /* !TARGET_API_MAC_CARBON */ }
VOID DoCreateEditWindow(VOID) { DWORD dwStyle; int iSize; LPTSTR pTemp = NULL; BOOL bModified = FALSE; iSize = 0; /* If the edit control already exists, try to save its content */ if (Globals.hEdit != NULL) { /* number of chars currently written into the editor. */ iSize = GetWindowTextLength(Globals.hEdit); if (iSize) { /* Allocates temporary buffer. */ pTemp = HeapAlloc(GetProcessHeap(), 0, (iSize + 1) * sizeof(TCHAR)); if (!pTemp) { ShowLastError(); return; } /* Recover the text into the control. */ GetWindowText(Globals.hEdit, pTemp, iSize + 1); if (SendMessage(Globals.hEdit, EM_GETMODIFY, 0, 0)) bModified = TRUE; } /* Restore original window procedure */ SetWindowLongPtr(Globals.hEdit, GWLP_WNDPROC, (LONG_PTR)Globals.EditProc); /* Destroy the edit control */ DestroyWindow(Globals.hEdit); } /* Update wrap status into the main menu and recover style flags */ if (Globals.bWrapLongLines) { dwStyle = EDIT_STYLE_WRAP; EnableMenuItem(Globals.hMenu, CMD_STATUSBAR, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); } else { dwStyle = EDIT_STYLE; EnableMenuItem(Globals.hMenu, CMD_STATUSBAR, MF_BYCOMMAND | MF_ENABLED); } /* Update previous changes */ DrawMenuBar(Globals.hMainWnd); /* Create the new edit control */ Globals.hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, EDIT_CLASS, NULL, dwStyle, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, Globals.hMainWnd, NULL, Globals.hInstance, NULL); if (Globals.hEdit == NULL) { ShowLastError(); return; } SendMessage(Globals.hEdit, WM_SETFONT, (WPARAM)Globals.hFont, FALSE); SendMessage(Globals.hEdit, EM_LIMITTEXT, 0, 0); /* If some text was previously saved, restore it. */ if (iSize != 0) { SetWindowText(Globals.hEdit, pTemp); HeapFree(GetProcessHeap(), 0, pTemp); if (bModified) SendMessage(Globals.hEdit, EM_SETMODIFY, TRUE, 0); } /* Sub-class a new window callback for row/column detection. */ Globals.EditProc = (WNDPROC)SetWindowLongPtr(Globals.hEdit, GWLP_WNDPROC, (LONG_PTR)EDIT_WndProc); /* Create/update status bar */ DoCreateStatusBar(); /* Finally shows new edit control and set focus into it. */ ShowWindow(Globals.hEdit, SW_SHOW); SetFocus(Globals.hEdit); }
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; RECT rc; HDC hdc; UINT update; switch (msg) { case WM_CREATE: #ifndef __GNUC__ WINNLSEnableIME(hWnd, FALSE); #endif break; case WM_SYSCOMMAND: update = 0; switch(wParam) { case IDM_MEMORYDUMP: debugsub_memorydump(); break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } sysmng_update(update); break; case WM_COMMAND: np2cmd(hWnd, LOWORD(wParam)); break; case WM_ACTIVATE: if (LOWORD(wParam) != WA_INACTIVE) { scrnmng_update(); keystat_allrelease(); mousemng_enable(MOUSEPROC_BG); } else { mousemng_disable(MOUSEPROC_BG); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); if (np2opening) { HINSTANCE hinst; RECT rect; int width; int height; HBITMAP hbmp; BITMAP bmp; HDC hmdc; HBRUSH hbrush; #if defined(_WIN64) hinst = reinterpret_cast<HINSTANCE>(::GetWindowLongPtr(hWnd, GWLP_HINSTANCE)); #else hinst = reinterpret_cast<HINSTANCE>(::GetWindowLong(hWnd, GWL_HINSTANCE)); #endif GetClientRect(hWnd, &rect); width = rect.right - rect.left; height = rect.bottom - rect.top; hbmp = LoadBitmap(hinst, _T("NP2BMP")); GetObject(hbmp, sizeof(BITMAP), &bmp); hbrush = (HBRUSH)SelectObject(hdc, GetStockObject(BLACK_BRUSH)); PatBlt(hdc, 0, 0, width, height, PATCOPY); SelectObject(hdc, hbrush); hmdc = CreateCompatibleDC(hdc); SelectObject(hmdc, hbmp); BitBlt(hdc, (width - bmp.bmWidth) / 2, (height - bmp.bmHeight) / 2, bmp.bmWidth, bmp.bmHeight, hmdc, 0, 0, SRCCOPY); DeleteDC(hmdc); DeleteObject(hbmp); } else { // scrnmng_update(); scrndraw_redraw(); } EndPaint(hWnd, &ps); break; case WM_QUERYNEWPALETTE: scrnmng_querypalette(); break; case WM_MOVE: if ((!scrnmng_isfullscreen()) && (!(GetWindowLong(hWnd, GWL_STYLE) & (WS_MAXIMIZE | WS_MINIMIZE)))) { GetWindowRect(hWnd, &rc); np2oscfg.winx = rc.left; np2oscfg.winy = rc.top; sysmng_update(SYS_UPDATEOSCFG); } break; case WM_SIZE: if (wParam == SIZE_RESTORED) { scrnmng_restoresize(); } break; case WM_ENTERMENULOOP: winuienter(); if (scrnmng_isfullscreen()) { DrawMenuBar(hWnd); } break; case WM_EXITMENULOOP: winuileave(); break; case WM_ENTERSIZEMOVE: soundmng_disable(SNDPROC_MAIN); mousemng_disable(MOUSEPROC_WINUI); break; case WM_EXITSIZEMOVE: mousemng_enable(MOUSEPROC_WINUI); soundmng_enable(SNDPROC_MAIN); break; case WM_KEYDOWN: if (wParam == VK_F11) { return(DefWindowProc(hWnd, WM_SYSKEYDOWN, VK_F10, lParam)); } if ((wParam == VK_F12) && (!np2oscfg.F12COPY)) { mousemng_toggle(MOUSEPROC_SYSTEM); xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); } else { winkbd_keydown(wParam, lParam); } break; case WM_KEYUP: if (wParam == VK_F11) { return(DefWindowProc(hWnd, WM_SYSKEYUP, VK_F10, lParam)); } if ((wParam != VK_F12) || (np2oscfg.F12COPY)) { winkbd_keyup(wParam, lParam); } break; case WM_SYSKEYDOWN: winkbd_keydown(wParam, lParam); break; case WM_SYSKEYUP: winkbd_keyup(wParam, lParam); break; case WM_LBUTTONDOWN: if (!mousemng_buttonevent(MOUSEMNG_LEFTDOWN)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; case WM_LBUTTONUP: if (!mousemng_buttonevent(MOUSEMNG_LEFTUP)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; case WM_MBUTTONDOWN: // ver0.26 mousemng_toggle(MOUSEPROC_SYSTEM); xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); break; case WM_RBUTTONDOWN: if (!mousemng_buttonevent(MOUSEMNG_RIGHTDOWN)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; case WM_RBUTTONUP: if (!mousemng_buttonevent(MOUSEMNG_RIGHTUP)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_NP2CMD: switch(LOWORD(lParam)) { case NP2CMD_EXIT: np2quitmsg = 1; PostQuitMessage(0); break; case NP2CMD_EXIT2: np2quitmsg = 2; PostQuitMessage(0); break; case NP2CMD_RESET: pccore_cfgupdate(); pccore_reset(); break; } break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return(0L); }
static void mac_startup(void) { Handle menuBar; TECInfoHandle ti; #if !TARGET_API_MAC_CARBON /* Init Memory Manager */ MaxApplZone(); /* Init QuickDraw */ InitGraf(&qd.thePort); /* Init Font Manager */ InitFonts(); /* Init Window Manager */ InitWindows(); /* Init Menu Manager */ InitMenus(); /* Init TextEdit */ TEInit(); /* Init Dialog Manager */ InitDialogs(NULL); #endif /* Get base system version (only used if there's no better selector) */ if (Gestalt(gestaltSystemVersion, &mac_gestalts.sysvers) != noErr || (mac_gestalts.sysvers &= 0xffff) < 0x700) fatalbox("PuTTYgen requires System 7 or newer"); /* Find out if we've got Color Quickdraw */ if (Gestalt(gestaltQuickdrawVersion, &mac_gestalts.qdvers) != noErr) mac_gestalts.qdvers = gestaltOriginalQD; /* ... and the Appearance Manager? */ if (Gestalt(gestaltAppearanceVersion, &mac_gestalts.apprvers) != noErr) if (Gestalt(gestaltAppearanceAttr, NULL) == noErr) mac_gestalts.apprvers = 0x0100; else mac_gestalts.apprvers = 0; #if TARGET_RT_MAC_CFM /* Paranoia: Did we manage to pull in AppearanceLib? */ if (&RegisterAppearanceClient == kUnresolvedCFragSymbolAddress) mac_gestalts.apprvers = 0; #endif #if TARGET_CPU_68K mac_gestalts.cntlattr = 0; mac_gestalts.windattr = 0; #else /* Mac OS 8.5 Control Manager (proportional scrollbars)? */ if (Gestalt(gestaltControlMgrAttr, &mac_gestalts.cntlattr) != noErr || &SetControlViewSize == kUnresolvedCFragSymbolAddress) mac_gestalts.cntlattr = 0; /* Mac OS 8.5 Window Manager? */ if (Gestalt(gestaltWindowMgrAttr, &mac_gestalts.windattr) != noErr || &SetWindowContentColor == kUnresolvedCFragSymbolAddress) mac_gestalts.windattr = 0; #endif /* Text Encoding Conversion Manager? */ if ( #if TARGET_RT_MAC_CFM &TECGetInfo == kUnresolvedCFragSymbolAddress || #else InitializeUnicodeConverter(NULL) != noErr || #endif TECGetInfo(&ti) != noErr) mac_gestalts.encvvers = 0; else { mac_gestalts.encvvers = (*ti)->tecVersion; mac_gestalts.uncvattr = (*ti)->tecUnicodeConverterFeatures; DisposeHandle((Handle)ti); } /* Navigation Services? */ if (NavServicesAvailable()) mac_gestalts.navsvers = NavLibraryVersion(); else mac_gestalts.navsvers = 0; /* We've been tested with the Appearance Manager */ if (mac_gestalts.apprvers != 0) RegisterAppearanceClient(); menuBar = GetNewMBar(128); if (menuBar == NULL) fatalbox("Unable to create menu bar."); SetMenuBar(menuBar); AppendResMenu(GetMenuHandle(mApple), 'DRVR'); mac_adjustmenus(); DrawMenuBar(); InitCursor(); windows.about = NULL; windows.licence = NULL; flags = FLAG_INTERACTIVE; /* Install Apple Event handlers. */ #if 0 AEInstallEventHandler(kCoreEventClass, kAEOpenApplication, NewAEEventHandlerUPP(&mac_aevt_oapp), 0, FALSE); AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments, NewAEEventHandlerUPP(&mac_aevt_odoc), 0, FALSE); AEInstallEventHandler(kCoreEventClass, kAEPrintDocuments, NewAEEventHandlerUPP(&mac_aevt_pdoc), 0, FALSE); #endif AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, NewAEEventHandlerUPP(&mac_aevt_quit), 0, FALSE); }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow) { WNDCLASS wc; MSG msg; HWND hWnd; int i; #ifdef OPENING_WAIT UINT32 tick; #endif _MEM_INIT(); GetModuleFileName(NULL, modulefile, NELEMENTS(modulefile)); dosio_init(); file_setcd(modulefile); np2arg_analize(); initload(); memdbg_readini(); skbdwin_readini(); rand_setseed((unsigned)time(NULL)); if ((hWnd = FindWindow(szClassName, NULL)) != NULL) { ShowWindow(hWnd, SW_RESTORE); SetForegroundWindow(hWnd); dosio_term(); return(FALSE); } hInst = hInstance; hPrev = hPreInst; TRACEINIT(); if (np2oscfg.KEYBOARD >= KEY_TYPEMAX) { // ver0.28 int keytype = GetKeyboardType(1); if ((keytype & 0xff00) == 0x0d00) { np2oscfg.KEYBOARD = KEY_PC98; } else if (!keytype) { np2oscfg.KEYBOARD = KEY_KEY101; } else { np2oscfg.KEYBOARD = KEY_KEY106; } } keystat_initialize(); if (!hPreInst) { wc.style = CS_BYTEALIGNCLIENT | CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAIN); wc.lpszClassName = szClassName; if (!RegisterClass(&wc)) { return(FALSE); } } memdbg_initialize(hInstance); skbdwin_initialize(hInstance); mousemng_initialize(); hWnd = CreateWindowEx(0, szClassName, szAppCaption, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, np2oscfg.winx, np2oscfg.winy, 640, 400, NULL, NULL, hInstance, NULL); hWndMain = hWnd; scrnmng_initialize(); xmenu_setroltate(0); xmenu_setdispmode(np2cfg.DISPSYNC); xmenu_setraster(np2cfg.RASTER); xmenu_setwaitflg(np2oscfg.NOWAIT); xmenu_setframe(np2oscfg.DRAW_SKIP); xmenu_setkey(0); xmenu_setxshift(0); xmenu_setf12copy(np2oscfg.F12COPY); xmenu_setbeepvol(np2cfg.BEEP_VOL); xmenu_setsound(np2cfg.SOUND_SW); xmenu_setjastsound(np2oscfg.jastsnd); xmenu_setmotorflg(np2cfg.MOTOR); xmenu_setextmem(np2cfg.EXTMEM); xmenu_setmouse(np2oscfg.MOUSE_SW); xmenu_setbtnmode(np2cfg.BTN_MODE); xmenu_setbtnrapid(np2cfg.BTN_RAPID); xmenu_setmsrapid(np2cfg.MOUSERAPID); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); #ifdef OPENING_WAIT tick = GetTickCount(); #endif sysmenu_initialize(); xmenu_initialize(); DrawMenuBar(hWnd); // ver0.30 if (file_attr_c(np2help) == (short)-1) { EnableMenuItem(GetMenu(hWnd), IDM_HELP, MF_GRAYED); } scrnmode = 0; if (np2arg.fullscreen) { scrnmode |= SCRNMODE_FULLSCREEN; } if (np2cfg.RASTER) { scrnmode |= SCRNMODE_HIGHCOLOR; } if (scrnmng_create(scrnmode) != SUCCESS) { scrnmode ^= SCRNMODE_FULLSCREEN; if (scrnmng_create(scrnmode) != SUCCESS) { MessageBox(hWnd, _T("Couldn't create DirectDraw Object"), szAppCaption, MB_OK | MB_ICONSTOP); return(FALSE); } } soundmng_initialize(); if (np2oscfg.MOUSE_SW) { // ver0.30 mousemng_enable(MOUSEPROC_SYSTEM); } commng_initialize(); sysmng_initialize(); joy_init(); pccore_init(); S98_init(); #ifdef OPENING_WAIT while((GetTickCount() - tick) < OPENING_WAIT); #endif scrndraw_redraw(); pccore_reset(); np2opening = 0; // れじうむ #if defined(SUPPORT_RESUME) if (np2oscfg.resume) { int id; id = flagload(str_sav, str_resume, FALSE); if (id == IDYES) { for (i=0; i<4; i++) np2arg.disk[i] = NULL; } else if (id == IDCANCEL) { DestroyWindow(hWnd); mousemng_disable(MOUSEPROC_WINUI); S98_trash(); pccore_term(); soundmng_deinitialize(); scrnmng_destroy(); TRACETERM(); dosio_term(); return(0); } } #endif // リセットしてから… コマンドラインのディスク挿入。 // ver0.29 for (i=0; i<4; i++) { if (np2arg.disk[i]) { diskdrv_readyfdd((REG8)i, np2arg.disk[i], 0); } } memdbg_create(); skbdwin_create(); while(1) { if (PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE)) { if (!GetMessage(&msg, NULL, 0, 0)) { break; } if ((msg.message != WM_SYSKEYDOWN) && (msg.message != WM_SYSKEYUP)) { TranslateMessage(&msg); } DispatchMessage(&msg); } else { if (np2oscfg.NOWAIT) { joy_flash(); mousemng_sync(); pccore_exec(framecnt == 0); if (np2oscfg.DRAW_SKIP) { // nowait frame skip framecnt++; if (framecnt >= np2oscfg.DRAW_SKIP) { processwait(0); } } else { // nowait auto skip framecnt = 1; if (timing_getcount()) { processwait(0); } } } else if (np2oscfg.DRAW_SKIP) { // frame skip if (framecnt < np2oscfg.DRAW_SKIP) { joy_flash(); mousemng_sync(); pccore_exec(framecnt == 0); framecnt++; } else { processwait(np2oscfg.DRAW_SKIP); } } else { // auto skip if (!waitcnt) { UINT cnt; joy_flash(); mousemng_sync(); pccore_exec(framecnt == 0); framecnt++; cnt = timing_getcount(); if (framecnt > cnt) { waitcnt = framecnt; if (framemax > 1) { framemax--; } } else if (framecnt >= framemax) { if (framemax < 12) { framemax++; } if (cnt >= 12) { timing_reset(); } else { timing_setcount(cnt - framecnt); } framereset(); } } else { processwait(waitcnt); waitcnt = framecnt; } } } } pccore_cfgupdate(); mousemng_disable(MOUSEPROC_WINUI); S98_trash(); #if defined(SUPPORT_RESUME) if (np2oscfg.resume) { flagsave(str_sav); } else { flagdelete(str_sav); } #endif pccore_term(); memdbg_destroy(); skbdwin_destroy(); soundmng_deinitialize(); scrnmng_destroy(); if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) { initsave(); memdbg_writeini(); skbdwin_writeini(); } skbdwin_deinitialize(); TRACETERM(); _MEM_USED("report.txt"); dosio_term(); return static_cast<int>(msg.wParam); }
void QMenuBarPrivate::QWceMenuBarPrivate::rebuild() { d->q_func()->resize(0,0); parentWindowHandle = d->q_func()->parentWidget() ? QApplicationPrivate::getHWNDForWidget(d->q_func()->parentWidget()) : QApplicationPrivate::getHWNDForWidget(d->q_func()); if (d->wceClassicMenu) { QList<QAction*> actions = d->actions; int maxEntries; int resourceHandle; if (actions.size() < 5) { maxEntries = 4; resourceHandle = IDR_MAIN_MENU3; } else if (actions.size() < 7) { maxEntries = 6; resourceHandle = IDR_MAIN_MENU4; } else { maxEntries = 8; resourceHandle = IDR_MAIN_MENU5; } Q_ASSERT_X(menubarHandle, "rebuild !created", "menubar already deleted"); qt_wce_clear_menu(menuHandle); DestroyWindow(menubarHandle); menubarHandle = qt_wce_create_menubar(parentWindowHandle, qt_wce_get_module_handle(), resourceHandle); Q_ASSERT_X(menubarHandle, "rebuild classic menu", "cannot create menubar from resource"); DrawMenuBar(menubarHandle); QList<int> menu_ids; QList<int> item_ids; menu_ids << IDM_MENU1 << IDM_MENU2 << IDM_MENU3 << IDM_MENU4 << IDM_MENU5 << IDM_MENU6 << IDM_MENU7 << IDM_MENU8; item_ids << IDM_ITEM1 << IDM_ITEM2 << IDM_ITEM3 << IDM_ITEM4 << IDM_ITEM5 << IDM_ITEM6 << IDM_ITEM7 << IDM_ITEM8; for (int i = 0; i < actionItemsClassic.size(); ++i) if (!actionItemsClassic.value(i).empty()) qt_wce_delete_action_list(&actionItemsClassic[i]); actionItemsClassic.clear(); for (int i = 0; i < actions.size(); ++i) { qt_wce_rename_menu_item(menubarHandle, menu_ids.at(i), actions.at(i)->text()); QList<QAction *> subActions = actions.at(i)->menu()->actions(); HMENU subMenuHandle = (HMENU) SendMessage(menubarHandle, SHCMBM_GETSUBMENU,0 , menu_ids.at(i)); DeleteMenu(subMenuHandle, item_ids.at(i), MF_BYCOMMAND); for (int c = 0; c < subActions.size(); ++c) { QList<QWceMenuAction*> list; actionItemsClassic.append(list); QWceMenuAction *action = new QWceMenuAction; action->action = subActions.at(c); action->command = qt_wce_menu_static_cmd_id++; action->menuHandle = subMenuHandle; actionItemsClassic.last().append(action); qt_wce_insert_action(subMenuHandle, action); } } for (int i = actions.size();i<maxEntries;++i) { qt_wce_rename_menu_item(menubarHandle, menu_ids.at(i), QString()); qt_wce_disable_soft_key(menubarHandle, menu_ids.at(i)); } } else { leftButtonAction = d->defaultAction; if (!leftButtonAction) leftButtonAction = qt_wce_get_quit_action(actionItems); leftButtonIsMenu = (leftButtonAction && leftButtonAction->menu()); Q_ASSERT_X(menubarHandle, "rebuild !created", "menubar already deleted"); qt_wce_clear_menu(menuHandle); DestroyWindow(menubarHandle); if (leftButtonIsMenu) { menubarHandle = qt_wce_create_menubar(parentWindowHandle, qt_wce_get_module_handle(), IDR_MAIN_MENU2); Q_ASSERT_X(menubarHandle, "rebuild !created left menubar", "cannot create menubar from resource"); menuHandle = (HMENU) SendMessage(menubarHandle, SHCMBM_GETSUBMENU,0,IDM_MENU); Q_ASSERT_X(menuHandle, "rebuild !created", "IDM_MENU not found - invalid resource?"); DeleteMenu(menuHandle, IDM_ABOUT, MF_BYCOMMAND); leftButtonMenuHandle = (HMENU) SendMessage(menubarHandle, SHCMBM_GETSUBMENU,0,IDM_LEFTMENU); Q_ASSERT_X(leftButtonMenuHandle, "rebuild !created", "IDM_LEFTMENU not found - invalid resource?"); DeleteMenu(leftButtonMenuHandle, IDM_VIEW, MF_BYCOMMAND); } else { menubarHandle = qt_wce_create_menubar(parentWindowHandle, qt_wce_get_module_handle(), IDR_MAIN_MENU); Q_ASSERT_X(menubarHandle, "rebuild !created no left menubar", "cannot create menubar from resource"); menuHandle = (HMENU) SendMessage(menubarHandle, SHCMBM_GETSUBMENU,0,IDM_MENU); Q_ASSERT_X(menuHandle, "rebuild !created", "IDM_MENU not found - invalid resource?"); DeleteMenu(menuHandle, IDM_ABOUT, MF_BYCOMMAND); leftButtonMenuHandle = 0; leftButtonCommand = qt_wce_menu_static_cmd_id++; qt_wce_change_command(menubarHandle, IDM_EXIT, leftButtonCommand); } if (actionItems.size() == 0) { qt_wce_rename_menu_item(menubarHandle, IDM_MENU, QLatin1String("")); qt_wce_disable_soft_key(menubarHandle, IDM_MENU); } for (int i = 0; i < actionItems.size(); ++i) { QWceMenuAction *action = actionItems.at(i); action->menuHandle = menuHandle; qt_wce_insert_action(menuHandle, action); } if (!leftButtonIsMenu) { if (leftButtonAction) { qt_wce_rename_menu_item(menubarHandle, leftButtonCommand, leftButtonAction->text()); qt_wce_enable_soft_key(menubarHandle, leftButtonCommand); } else { qt_wce_rename_menu_item(menubarHandle, leftButtonCommand, QLatin1String("")); qt_wce_disable_soft_key(menubarHandle, leftButtonCommand); } } else { qt_wce_rename_menu_item(menubarHandle, IDM_LEFTMENU, leftButtonAction->text()); QList<QAction *> actions = leftButtonAction->menu()->actions(); qt_wce_delete_action_list(&actionItemsLeftButton); for (int i=0; i<actions.size(); ++i) { QWceMenuAction *action = new QWceMenuAction; action->action = actions.at(i); action->command = qt_wce_menu_static_cmd_id++; action->menuHandle = leftButtonMenuHandle; actionItemsLeftButton.append(action); qt_wce_insert_action(leftButtonMenuHandle, action); } } } DrawMenuBar(menubarHandle); }
LRESULT CALLBACK winwindow_video_window_proc(HWND wnd, UINT message, WPARAM wparam, LPARAM lparam) { LONG_PTR ptr = GetWindowLongPtr(wnd, GWLP_USERDATA); win_window_info *window = (win_window_info *)ptr; // we may get called before SetWindowLongPtr is called if (window != NULL) { assert(GetCurrentThreadId() == window_threadid); update_minmax_state(window); } // handle a few messages switch (message) { // paint: redraw the last bitmap case WM_PAINT: { PAINTSTRUCT pstruct; HDC hdc = BeginPaint(wnd, &pstruct); draw_video_contents(window, hdc, TRUE); if (win_has_menu(window)) DrawMenuBar(window->hwnd); EndPaint(wnd, &pstruct); break; } // non-client paint: punt if full screen case WM_NCPAINT: if (!window->fullscreen || HAS_WINDOW_MENU) return DefWindowProc(wnd, message, wparam, lparam); break; // input: handle the raw mouse input case WM_INPUT: if (win_use_raw_mouse) win_raw_mouse_update((HRAWINPUT)lparam); break; // syskeys - ignore case WM_SYSKEYUP: case WM_SYSKEYDOWN: break; // pause the system when we start a menu or resize case WM_ENTERSIZEMOVE: window->resize_state = RESIZE_STATE_RESIZING; case WM_ENTERMENULOOP: winwindow_ui_pause_from_window_thread(TRUE); break; // unpause the system when we stop a menu or resize and force a redraw case WM_EXITSIZEMOVE: window->resize_state = RESIZE_STATE_PENDING; case WM_EXITMENULOOP: winwindow_ui_pause_from_window_thread(FALSE); InvalidateRect(wnd, NULL, FALSE); break; // get min/max info: set the minimum window size case WM_GETMINMAXINFO: { MINMAXINFO *minmax = (MINMAXINFO *)lparam; minmax->ptMinTrackSize.x = MIN_WINDOW_DIM; minmax->ptMinTrackSize.y = MIN_WINDOW_DIM; break; } // sizing: constrain to the aspect ratio unless control key is held down case WM_SIZING: { RECT *rect = (RECT *)lparam; if (video_config.keepaspect && !(GetAsyncKeyState(VK_CONTROL) & 0x8000)) constrain_to_aspect_ratio(window, rect, wparam); InvalidateRect(wnd, NULL, FALSE); break; } // syscommands: catch win_start_maximized case WM_SYSCOMMAND: { // prevent screensaver or monitor power events if (wparam == SC_MONITORPOWER || wparam == SC_SCREENSAVE) return 1; // most SYSCOMMANDs require us to invalidate the window InvalidateRect(wnd, NULL, FALSE); // handle maximize if ((wparam & 0xfff0) == SC_MAXIMIZE) { update_minmax_state(window); if (window->ismaximized) minimize_window(window); else maximize_window(window); break; } return DefWindowProc(wnd, message, wparam, lparam); } // track whether we are in the foreground case WM_ACTIVATEAPP: in_background = !wparam; break; // close: cause MAME to exit case WM_CLOSE: if (multithreading_enabled) PostThreadMessage(main_threadid, WM_USER_REQUEST_EXIT, 0, 0); else mame_schedule_exit(Machine); break; // destroy: clean up all attached rendering bits and NULL out our hwnd case WM_DESTROY: (*draw.window_destroy)(window); window->hwnd = NULL; return DefWindowProc(wnd, message, wparam, lparam); // self redraw: draw ourself in a non-painty way case WM_USER_REDRAW: { HDC hdc = GetDC(wnd); mtlog_add("winwindow_video_window_proc: WM_USER_REDRAW begin"); window->primlist = (const render_primitive_list *)lparam; draw_video_contents(window, hdc, FALSE); mtlog_add("winwindow_video_window_proc: WM_USER_REDRAW end"); ReleaseDC(wnd, hdc); break; } // self destruct case WM_USER_SELF_TERMINATE: DestroyWindow(window->hwnd); break; // fullscreen set case WM_USER_SET_FULLSCREEN: set_fullscreen(window, wparam); break; // minimum size set case WM_USER_SET_MINSIZE: minimize_window(window); break; // maximum size set case WM_USER_SET_MAXSIZE: maximize_window(window); break; // set focus: if we're not the primary window, switch back // commented out ATM because this prevents us from resizing secondary windows // case WM_SETFOCUS: // if (window != win_window_list && win_window_list != NULL) // SetFocus(win_window_list->hwnd); // break; // everything else: defaults default: return DefWindowProc(wnd, message, wparam, lparam); } return 0; }
void BuildMenuEx(ImgFmt tIFmt0, ImgFmt* ptIFmts, INT nNoOfCap, BOOL bIsVideo) { WCHAR wsMenuItemStr[BUF_LENGTH]; WCHAR waTemp[BUF_LENGTH]; INT nCounter=0; INT nIndex=0; g_hmnuCurr = (HMENU) SendMessage(g_hwndMenuBar, SHCMBM_GETSUBMENU, 0, IDM_SETTINGS); if(bIsVideo) { g_ahmnuVdoColorFmts = new HMENU[nNoOfCap]; g_hmnuVideoSub = CreatePopupMenu(); g_ahmnuVdoColorFmts[nCounter] = CreatePopupMenu(); wsprintf(wsMenuItemStr, L"%d X %d", tIFmt0.nMaxWidth, tIFmt0.nMaxHeight); AppendMenu(g_hmnuVideoSub, MF_STRING, ID_RESOLUTION_0, wsMenuItemStr); wcscpy(waTemp, wsMenuItemStr); OutputDebugString(tIFmt0.wsColorFmt.c_str()); OutputDebugString(L"\n"); AppendMenu(g_ahmnuVdoColorFmts[nCounter], MF_STRING, ID_RESOLUTION_X_0, tIFmt0.wsColorFmt.c_str()); for(int i=1;i<nNoOfCap;i++) { wsprintf(wsMenuItemStr, L"%d X %d", ptIFmts->nMaxWidth, ptIFmts->nMaxHeight); OutputDebugString(ptIFmts->wsColorFmt.c_str()); OutputDebugString(L"\n"); if(wcscmp(waTemp, wsMenuItemStr)) { AppendMenu(g_hmnuVideoSub, MF_STRING, (ID_RESOLUTION_0+(i-nIndex)), wsMenuItemStr); wcscpy(waTemp, wsMenuItemStr); nCounter++; g_ahmnuVdoColorFmts[nCounter] = CreatePopupMenu(); AppendMenu(g_ahmnuVdoColorFmts[nCounter], MF_STRING, ID_RESOLUTION_X_0, ptIFmts->wsColorFmt.c_str()); nIndex=0; } else { nIndex++; AppendMenu(g_ahmnuVdoColorFmts[nCounter], MF_STRING, ID_RESOLUTION_X_0+nIndex, ptIFmts->wsColorFmt.c_str()); } ptIFmts++; } AppendMenu(g_hmnuCurr, MF_STRING | MF_POPUP, (UINT)g_hmnuVideoSub, L"&Resolution"); AppendMenu(g_hmnuCurr, MF_STRING | MF_POPUP, (UINT)g_ahmnuVdoColorFmts[0], L"&ColorFmts"); } else { g_ahmnuStillColorFmts = new HMENU[nNoOfCap]; g_hmnuStillSub = CreatePopupMenu(); g_ahmnuStillColorFmts[nCounter] = CreatePopupMenu(); wsprintf(wsMenuItemStr, L"%d X %d", tIFmt0.nMaxWidth, tIFmt0.nMaxHeight); AppendMenu(g_hmnuStillSub, MF_STRING, ID_RESOLUTION_0, wsMenuItemStr); wcscpy(waTemp, wsMenuItemStr); OutputDebugString(tIFmt0.wsColorFmt.c_str()); OutputDebugString(L"\n"); AppendMenu(g_ahmnuStillColorFmts[nCounter], MF_STRING, ID_RESOLUTION_X_0, tIFmt0.wsColorFmt.c_str()); for(int i=1;i<nNoOfCap;i++) { wsprintf(wsMenuItemStr, L"%d X %d", ptIFmts->nMaxWidth, ptIFmts->nMaxHeight); OutputDebugString(ptIFmts->wsColorFmt.c_str()); OutputDebugString(L"\n"); if(wcscmp(waTemp, wsMenuItemStr)) { AppendMenu(g_hmnuStillSub, MF_STRING, (ID_RESOLUTION_0+(i-nIndex)), wsMenuItemStr); wcscpy(waTemp, wsMenuItemStr); nCounter++; g_ahmnuStillColorFmts[nCounter] = CreatePopupMenu(); AppendMenu(g_ahmnuStillColorFmts[nCounter], MF_STRING, ID_RESOLUTION_X_0, ptIFmts->wsColorFmt.c_str()); nIndex=0; } else { nIndex++; AppendMenu(g_ahmnuStillColorFmts[nCounter], MF_STRING, ID_RESOLUTION_X_0+nIndex, ptIFmts->wsColorFmt.c_str()); } ptIFmts++; } } DrawMenuBar(g_hwndMenuBar); }
int pwin32main(int argc, char* argv[]) { // Enable memory leak checks and heap validation. _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_LEAK_CHECK_DF); _CrtSetBreakAlloc(-1); int exitCode = EXIT_SUCCESS; // Create the memory debugger. PMemoryDebugger::create(); PActivity* activity = PNEW(PActivity(argc, argv)); if (!activity->initialize()) { PDELETE(activity); return EXIT_FAILURE; } pMain(argc, argv); // Set console title. SetConsoleTitle(L"Console"); // Disable the close button of the console window. HWND hConsoleWindow = GetConsoleWindow(); if (hConsoleWindow != NULL) { HMENU hMenu = GetSystemMenu(hConsoleWindow, 0); if (hMenu != NULL) { DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND); DrawMenuBar(hConsoleWindow); } } PContext* context = activity->findContext(puint32(0)); PASSERT(context != P_NULL); if (context == P_NULL) { exitCode = EXIT_FAILURE; PDELETE(activity); return exitCode; } PWin32Window window(context); if (!window.create()) { exitCode = EXIT_FAILURE; PDELETE(activity); return exitCode; } // Initialize the context. context->setState(P_CONTEXT_STATE_UNINITIALIZED); if (!context->initialize(context->properties()->m_windowWidth, context->properties()->m_windowHeight)) { exitCode = EXIT_FAILURE; } else { if (!context->onInitialized()) { context->setState(P_CONTEXT_STATE_ERROR); } else { PLOG_DEBUG("Starting program main loop"); context->setState(P_CONTEXT_STATE_RUNNING); } if (context->state() == P_CONTEXT_STATE_ERROR) { exitCode = EXIT_FAILURE; } // The mainloop of window. window.run(); // Right before destroy the context, user might have // something to do. context->onDestroy(); } context->destroy(); // Destroy native window. window.destroy(); // Destroy the activity activity->uninitialize(); PDELETE(activity); // Destroy the memory debugger. PMemoryDebugger::destroy(); // If debugger is present, a pause is required to keep the console output // visible. Otherwise the pause is automatic. if (IsDebuggerPresent()) { system("pause"); } return exitCode; }