// // FUNCTION: BrowserDlgProc() // // PURPOSE: Browser dialog windows message handler. // // COMMENTS: // // The code for handling buttons and menu actions is here. // BOOL CALLBACK BrowserDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { // Get the browser and other pointers since they are used a lot below HWND hwndBrowser = GetDlgItem(hwndDlg, IDC_BROWSER); nsIWebBrowserChrome *chrome = nsnull ; if (hwndBrowser) { chrome = (nsIWebBrowserChrome *) GetWindowLong(hwndBrowser, GWL_USERDATA); } nsCOMPtr<nsIWebBrowser> webBrowser; nsCOMPtr<nsIWebNavigation> webNavigation; nsCOMPtr<nsIWebBrowserPrint> webBrowserPrint; if (chrome) { chrome->GetWebBrowser(getter_AddRefs(webBrowser)); webNavigation = do_QueryInterface(webBrowser); webBrowserPrint = do_GetInterface(webBrowser); } // Test the message switch (uMsg) { case WM_INITDIALOG: return TRUE; case WM_INITMENU: UpdateUI(chrome); return TRUE; case WM_SYSCOMMAND: if (wParam == SC_CLOSE) { WebBrowserChromeUI::Destroy(chrome); return TRUE; } break; case WM_DESTROY: return TRUE; case WM_COMMAND: if (!webBrowser) { return TRUE; } // Test which command was selected switch (LOWORD(wParam)) { case IDC_ADDRESS: if (HIWORD(wParam) == CBN_EDITCHANGE || HIWORD(wParam) == CBN_SELCHANGE) { // User has changed the address field so enable the Go button EnableWindow(GetDlgItem(hwndDlg, IDC_GO), TRUE); } break; case IDC_GO: { TCHAR szURL[2048]; memset(szURL, 0, sizeof(szURL)); GetDlgItemText(hwndDlg, IDC_ADDRESS, szURL, sizeof(szURL) / sizeof(szURL[0]) - 1); webNavigation->LoadURI( NS_ConvertASCIItoUCS2(szURL).get(), nsIWebNavigation::LOAD_FLAGS_NONE, nsnull, nsnull, nsnull); } break; case IDC_STOP: webNavigation->Stop(nsIWebNavigation::STOP_ALL); UpdateUI(chrome); break; case IDC_RELOAD: webNavigation->Reload(nsIWebNavigation::LOAD_FLAGS_NONE); break; case IDM_EXIT: PostMessage(hwndDlg, WM_SYSCOMMAND, SC_CLOSE, 0); break; // File menu commands case MOZ_NewBrowser: OpenWebPage(gFirstURL); break; case MOZ_Save: SaveWebPage(webBrowser); break; case MOZ_Print: { // NOTE: Embedding code shouldn't need to get the docshell or // contentviewer AT ALL. This code below will break one // day but will have to do until the embedding API has // a cleaner way to do the same thing. if (webBrowserPrint) { nsCOMPtr<nsIPrintSettings> printSettings; webBrowserPrint->GetGlobalPrintSettings(getter_AddRefs(printSettings)); NS_ASSERTION(printSettings, "You can't PrintPreview without a PrintSettings!"); if (printSettings) { printSettings->SetPrintSilent(PR_TRUE); webBrowserPrint->Print(printSettings, (nsIWebProgressListener*)nsnull); } } } break; // Edit menu commands case MOZ_Cut: { nsCOMPtr<nsIClipboardCommands> clipCmds = do_GetInterface(webBrowser); clipCmds->CutSelection(); } break; case MOZ_Copy: { nsCOMPtr<nsIClipboardCommands> clipCmds = do_GetInterface(webBrowser); clipCmds->CopySelection(); } break; case MOZ_Paste: { nsCOMPtr<nsIClipboardCommands> clipCmds = do_GetInterface(webBrowser); clipCmds->Paste(); } break; case MOZ_SelectAll: { nsCOMPtr<nsIClipboardCommands> clipCmds = do_GetInterface(webBrowser); clipCmds->SelectAll(); } break; case MOZ_SelectNone: { nsCOMPtr<nsIClipboardCommands> clipCmds = do_GetInterface(webBrowser); clipCmds->SelectNone(); } break; // Go menu commands case IDC_BACK: case MOZ_GoBack: webNavigation->GoBack(); UpdateUI(chrome); break; case IDC_FORWARD: case MOZ_GoForward: webNavigation->GoForward(); UpdateUI(chrome); break; // Help menu commands case MOZ_About: { TCHAR szAboutTitle[MAX_LOADSTRING]; TCHAR szAbout[MAX_LOADSTRING]; LoadString(ghInstanceResources, IDS_ABOUT_TITLE, szAboutTitle, MAX_LOADSTRING); LoadString(ghInstanceResources, IDS_ABOUT, szAbout, MAX_LOADSTRING); MessageBox(NULL, szAbout, szAboutTitle, MB_OK); } break; } return TRUE; case WM_ACTIVATE: { nsCOMPtr<nsIWebBrowserFocus> focus(do_GetInterface(webBrowser)); if(focus) { switch (wParam) { case WA_ACTIVE: focus->Activate(); break; case WA_INACTIVE: focus->Deactivate(); break; default: break; } } } break; case WM_SIZE: { UINT newDlgWidth = LOWORD(lParam); UINT newDlgHeight = HIWORD(lParam); // TODO Reposition the control bar - for the moment it's fixed size // Reposition the status area. Status bar // gets any space that the fixed size progress bar doesn't use. int progressWidth; int statusWidth; int statusHeight; HWND hwndStatus = GetDlgItem(hwndDlg, IDC_STATUS); if (hwndStatus) { RECT rcStatus; GetWindowRect(hwndStatus, &rcStatus); statusHeight = rcStatus.bottom - rcStatus.top; } else statusHeight = 0; HWND hwndProgress = GetDlgItem(hwndDlg, IDC_PROGRESS); if (hwndProgress) { RECT rcProgress; GetWindowRect(hwndProgress, &rcProgress); progressWidth = rcProgress.right - rcProgress.left; } else progressWidth = 0; statusWidth = newDlgWidth - progressWidth; if (hwndStatus) SetWindowPos(hwndStatus, HWND_TOP, 0, newDlgHeight - statusHeight, statusWidth, statusHeight, SWP_NOZORDER); if (hwndProgress) SetWindowPos(hwndProgress, HWND_TOP, statusWidth, newDlgHeight - statusHeight, 0, 0, SWP_NOSIZE | SWP_NOZORDER); // Resize the browser area (assuming the browse is // sandwiched between the control bar and status area) RECT rcBrowser; POINT ptBrowser; GetWindowRect(hwndBrowser, &rcBrowser); ptBrowser.x = rcBrowser.left; ptBrowser.y = rcBrowser.top; ScreenToClient(hwndDlg, &ptBrowser); int browserHeight = newDlgHeight - ptBrowser.y - statusHeight; if (browserHeight < 1) { browserHeight = 1; } SetWindowPos(hwndBrowser, HWND_TOP, 0, 0, newDlgWidth, newDlgHeight - ptBrowser.y - statusHeight, SWP_NOMOVE | SWP_NOZORDER); } return TRUE; } return FALSE; }
int main(int argc, char *argv[]) { printf("You are embedded, man!\n\n"); printf("******************************************************************\n"); printf("* *\n"); printf("* IMPORTANT NOTE: *\n"); printf("* *\n"); printf("* WinEmbed is not supported!!! Do not raise bugs on it unless *\n"); printf("* it is badly broken (e.g. crash on start/exit, build errors) *\n"); printf("* or you have the patch to make it better! MFCEmbed is now our *\n"); printf("* embedding test application on Win32 and all testing should *\n"); printf("* be done on that. *\n"); printf("* *\n"); printf("******************************************************************\n"); printf("\n\n"); // Sophisticated command-line parsing in action #ifdef MINIMO char *szFirstURL = "http://www.mozilla.org/projects/embedding"; #else char *szFirstURL = "http://www.mozilla.org/projects/minimo"; #endif int argn; for (argn = 1; argn < argc; argn++) { szFirstURL = argv[argn]; } strncpy(gFirstURL, szFirstURL, sizeof(gFirstURL) - 1); ghInstanceApp = GetModuleHandle(NULL); ghInstanceResources = GetModuleHandle(NULL); // Initialize global strings TCHAR szTitle[MAX_LOADSTRING]; LoadString(ghInstanceResources, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); MyRegisterClass(ghInstanceApp); // Init Embedding APIs NS_InitEmbedding(nsnull, nsnull, kPStaticModules, kStaticModuleCount); // Choose the new profile if (NS_FAILED(StartupProfile())) { NS_TermEmbedding(); return 1; } WPARAM rv; { InitializeWindowCreator(); // Open the initial browser window OpenWebPage(gFirstURL); // Main message loop. // NOTE: We use a fake event and a timeout in order to process idle stuff for // Mozilla every 1/10th of a second. PRBool runCondition = PR_TRUE; rv = AppCallbacks::RunEventLoop(runCondition); } // Close down Embedding APIs NS_TermEmbedding(); return rv; }
int main(int argc, char *argv[]) { nsresult rv; printf("You are embedded, man!\n\n"); printf("******************************************************************\n"); printf("* *\n"); printf("* IMPORTANT NOTE: *\n"); printf("* *\n"); printf("* WinEmbed is not supported!!! Do not raise bugs on it unless *\n"); printf("* it is badly broken (e.g. crash on start/exit, build errors) *\n"); printf("* or you have the patch to make it better! MFCEmbed is now our *\n"); printf("* embedding test application on Win32 and all testing should *\n"); printf("* be done on that. *\n"); printf("* *\n"); printf("******************************************************************\n"); printf("\n\n"); // Sophisticated command-line parsing in action char *szFirstURL = "http://www.mozilla.org/projects/embedding/"; int argn; for (argn = 1; argn < argc; argn++) { szFirstURL = argv[argn]; } strncpy(gFirstURL, szFirstURL, sizeof(gFirstURL) - 1); ghInstanceApp = GetModuleHandle(nullptr); // Initialize global strings TCHAR szTitle[MAX_LOADSTRING]; LoadString(ghInstanceApp, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); MyRegisterClass(ghInstanceApp); char path[_MAX_PATH]; GetModuleFileName(ghInstanceApp, path, sizeof(path)); char* lastslash = ns_strrpbrk(path, "/\\"); if (!lastslash) return 7; strcpy(lastslash, "\\xulrunner\\xpcom.dll"); rv = XPCOMGlueStartup(path); if (NS_FAILED(rv)) return 3; strcpy(lastslash, "\\xulrunner\\xul.dll"); HINSTANCE xulModule = LoadLibraryEx(path, nullptr, 0); if (!xulModule) return 4; XRE_InitEmbedding2 = (XRE_InitEmbedding2Type) GetProcAddress(xulModule, "XRE_InitEmbedding2"); if (!XRE_InitEmbedding2) { fprintf(stderr, "Error: %i\n", GetLastError()); return 5; } XRE_TermEmbedding = (XRE_TermEmbeddingType) GetProcAddress(xulModule, "XRE_TermEmbedding"); if (!XRE_TermEmbedding) { fprintf(stderr, "Error: %i\n", GetLastError()); return 5; } int result = 0; // Scope all the XPCOM stuff { strcpy(lastslash, "\\xulrunner"); nsCOMPtr<nsIFile> xuldir; rv = NS_NewNativeLocalFile(nsCString(path), false, getter_AddRefs(xuldir)); if (NS_FAILED(rv)) return 6; *lastslash = '\0'; nsCOMPtr<nsIFile> appdir; rv = NS_NewNativeLocalFile(nsCString(path), false, getter_AddRefs(appdir)); if (NS_FAILED(rv)) return 8; rv = XRE_InitEmbedding2(xuldir, appdir, nullptr); if (NS_FAILED(rv)) return 9; if (NS_FAILED(StartupProfile())) { result = 8; } else { InitializeWindowCreator(); // Open the initial browser window OpenWebPage(gFirstURL); // Main message loop. // NOTE: We use a fake event and a timeout in order to process idle stuff for // Mozilla every 1/10th of a second. bool runCondition = true; result = AppCallbacks::RunEventLoop(runCondition); } } XRE_TermEmbedding(); return result; }
void CAboutDlg::OnSitelink() { OpenWebPage(MWEDIT_WEBPAGE_PROJECT); }
LRESULT Chkdraft::Command(HWND hWnd, WPARAM wParam, LPARAM lParam) { switch ( LOWORD(wParam) ) { // File case ID_FILE_NEW1: newMap.CreateThis(hWnd); break; case ID_FILE_OPEN1: maps.OpenMap(); break; case ID_FILE_CLOSE1: maps.CloseActive(); break; case ID_FILE_SAVE1: maps.SaveCurr(false); break; case ID_FILE_SAVEAS1: maps.SaveCurr(true); break; case ID_FILE_QUIT1: PostQuitMessage(0); break; // Edit case ID_EDIT_UNDO1: CM->undo(); break; case ID_EDIT_REDO1: CM->redo(); break; case ID_EDIT_CUT1: maps.cut(); break; case ID_EDIT_COPY1: maps.copy(); break; case ID_EDIT_PASTE1: maps.startPaste(true); break; case ID_EDIT_SELECTALL: CM->selectAll(); break; case ID_EDIT_DELETE: CM->deleteSelection(); break; case ID_EDIT_PROPERTIES: maps.properties(); break; // View // Grid case ID_GRID_ULTRAFINE: maps.SetGrid(8, 8); break; case ID_GRID_FINE: maps.SetGrid(16, 16); break; case ID_GRID_NORMAL: maps.SetGrid(32, 32); break; case ID_GRID_LARGE: maps.SetGrid(64, 64); break; case ID_GRID_EXTRALARGE: maps.SetGrid(128, 128); break; case ID_GRID_DISABLED: maps.SetGrid(0, 0); break; // Color case ID_COLOR_BLACK: maps.SetGridColor(0, 0, 0); break; case ID_COLOR_GREY: maps.SetGridColor(72, 72, 88); break; case ID_COLOR_WHITE: maps.SetGridColor(255, 255, 255); break; case ID_COLOR_GREEN: maps.SetGridColor(16, 252, 24); break; case ID_COLOR_RED: maps.SetGridColor(244, 4, 4); break; case ID_COLOR_BLUE: maps.SetGridColor(36, 36, 252); break; case ID_COLOR_OTHER: break; // Zoom case ID_ZOOM_400: CM->setZoom(defaultZooms[0]); break; case ID_ZOOM_300: CM->setZoom(defaultZooms[1]); break; case ID_ZOOM_200: CM->setZoom(defaultZooms[2]); break; case ID_ZOOM_150: CM->setZoom(defaultZooms[3]); break; case ID_ZOOM_100: CM->setZoom(defaultZooms[4]); break; case ID_ZOOM_66: CM->setZoom(defaultZooms[5]); break; case ID_ZOOM_50: CM->setZoom(defaultZooms[6]); break; case ID_ZOOM_33: CM->setZoom(defaultZooms[7]); break; case ID_ZOOM_25: CM->setZoom(defaultZooms[8]); break; case ID_ZOOM_10: CM->setZoom(defaultZooms[9]); break; // Terrain case ID_TERRAIN_DISPLAYTILEELEVATIONS: CM->ToggleDisplayElevations(); break; case ID_TERRAIN_DISPLAYTILEVALUES: CM->ToggleTileNumSource(false); break; case ID_TERRAIN_DISPLAYTILEVALUESMTXM: CM->ToggleTileNumSource(true); break; // Editor // Units case ID_UNITS_UNITSSNAPTOGRID: CM->ToggleUnitSnap(); break; case ID_UNITS_ALLOWSTACK: CM->ToggleUnitStack(); break; // Locations case ID_LOCATIONS_SNAPTOTILE: CM->SetLocationSnap(GuiMap::LocationSnap::SnapToTile); break; case ID_LOCATIONS_SNAPTOACTIVEGRID: CM->SetLocationSnap(GuiMap::LocationSnap::SnapToGrid); break; case ID_LOCATIONS_NOSNAP: CM->SetLocationSnap(GuiMap::LocationSnap::NoSnap); break; case ID_LOCATIONS_LOCKANYWHERE: CM->ToggleLockAnywhere(); break; case ID_LOCATIONS_CLIPNAMES: CM->ToggleLocationNameClip(); break; // Scenario case ID_TRIGGERS_CLASSICMAPTRIGGERS: trigEditorWindow.CreateThis(getHandle()); break; case ID_SCENARIO_DESCRIPTION: case ID_SCENARIO_FORCES: case ID_SCENARIO_UNITSETTINGS: case ID_SCENARIO_UPGRADESETTINGS: case ID_SCENARIO_TECHSETTINGS: case ID_SCENARIO_STRINGS: case ID_SCENARIO_SOUNDEDITOR: OpenMapSettings(LOWORD(wParam)); break; // Tools case ID_TRIGGERS_TRIGGEREDITOR: textTrigWindow.CreateThis(getHandle()); break; case ID_TOOLS_LITTRIGGERS: ifmapopen(litWindow.CreateThis(getHandle())); break; case ID_TOOLS_PASSWORD: ifmapopen(changePasswordWindow.CreateThis(getHandle())) break; // Windows case ID_WINDOWS_CASCADE: maps.cascade(); break; case ID_WINDOWS_TILEHORIZONTALLY: maps.tileHorizontally(); break; case ID_WINDOWS_TILEVERTICALLY: maps.tileVertically(); break; case ID_WINDOW_CLOSE: maps.destroyActive(); break; // Help case ID_HELP_STARCRAFT_WIKI: OpenWebPage("http://www.staredit.net/starcraft/Main_Page"); break; case ID_HELP_SUPPORT_FORUM: OpenWebPage("http://www.staredit.net/forums/"); break; case ID_HELP_CHKDRAFTGITHUB: OpenWebPage("https://github.com/jjf28/Chkdraft/"); break; case ID_HELP_CHKDRAFTTHREAD: OpenWebPage("http://www.staredit.net/topic/15514/"); break; default: switch ( HIWORD(wParam) ) { case CBN_SETFOCUS: editFocused = true; break; case CBN_KILLFOCUS: editFocused = false; break; case CBN_EDITCHANGE: ComboEditChanged((HWND)lParam, LOWORD(wParam)); SetFocus(getHandle()); break; case CBN_SELCHANGE: ComboSelChanged((HWND)lParam, LOWORD(wParam)); SetFocus(getHandle()); break; default: return ClassWindow::Command(hWnd, wParam, lParam); break; } break; } return 0; }