mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-01-18 22:43:31 +08:00
code refactoring
fix casting warning disable automatic window content refresh on resize, this is required by the upcoming support for WebView2
This commit is contained in:
parent
7db627df1b
commit
1fc351b088
@ -205,7 +205,7 @@ void receive_message_from_webview(const std::wstring& msg) {
|
||||
}
|
||||
}
|
||||
|
||||
void initialize_webview(HWND hwnd, int nCmdShow) {
|
||||
void initialize_webview() {
|
||||
try {
|
||||
if (!g_webview_process) {
|
||||
g_webview_process = WebViewControlProcess();
|
||||
@ -225,7 +225,7 @@ void initialize_webview(HWND hwnd, int nCmdShow) {
|
||||
|
||||
g_webview.NewWindowRequested([=](IWebViewControl sender_requester, WebViewControlNewWindowRequestedEventArgs args) {
|
||||
// Open the requested link in the default browser registered in the Shell
|
||||
int res = (int)ShellExecute(nullptr, L"open", args.Uri().AbsoluteUri().c_str(), nullptr, nullptr, SW_SHOWNORMAL);
|
||||
int res = static_cast<int>(reinterpret_cast<uintptr_t>(ShellExecute(nullptr, L"open", args.Uri().AbsoluteUri().c_str(), nullptr, nullptr, SW_SHOWNORMAL)));
|
||||
WINRT_VERIFY(res > 32);
|
||||
});
|
||||
|
||||
@ -249,7 +249,7 @@ void initialize_webview(HWND hwnd, int nCmdShow) {
|
||||
NavigateToLocalhostReactServer();
|
||||
#else
|
||||
// Navigates to settings-html/index.html.
|
||||
ShowWindow(g_main_wnd, nCmdShow);
|
||||
|
||||
NavigateToUri(L"index.html");
|
||||
#endif
|
||||
} else if (status == AsyncStatus::Error) {
|
||||
@ -343,7 +343,7 @@ void register_classes(HINSTANCE hInstance) {
|
||||
WNDCLASSEXW wcex;
|
||||
wcex.cbSize = sizeof(WNDCLASSEX);
|
||||
|
||||
wcex.style = CS_HREDRAW | CS_VREDRAW;
|
||||
wcex.style = 0;
|
||||
wcex.lpfnWndProc = wnd_proc_static;
|
||||
wcex.cbClsExtra = 0;
|
||||
wcex.cbWndExtra = 0;
|
||||
@ -358,9 +358,7 @@ void register_classes(HINSTANCE hInstance) {
|
||||
WINRT_VERIFY(RegisterClassExW(&wcex));
|
||||
}
|
||||
|
||||
int init_instance(HINSTANCE hInstance, int nShowCmd) {
|
||||
g_hinst = hInstance;
|
||||
|
||||
HWND create_main_window(HINSTANCE hInstance) {
|
||||
RECT desktopRect;
|
||||
const HWND hDesktop = GetDesktopWindow();
|
||||
WINRT_VERIFY(hDesktop);
|
||||
@ -370,7 +368,7 @@ int init_instance(HINSTANCE hInstance, int nShowCmd) {
|
||||
int wind_height = 700;
|
||||
DPIAware::Convert(nullptr, wind_width, wind_height);
|
||||
|
||||
g_main_wnd = CreateWindowW(
|
||||
return CreateWindowW(
|
||||
L"PTSettingsClass",
|
||||
L"PowerToys Settings",
|
||||
WS_OVERLAPPEDWINDOW,
|
||||
@ -382,12 +380,6 @@ int init_instance(HINSTANCE hInstance, int nShowCmd) {
|
||||
nullptr,
|
||||
hInstance,
|
||||
nullptr);
|
||||
|
||||
WINRT_VERIFY(g_main_wnd);
|
||||
initialize_webview(g_main_wnd, nShowCmd);
|
||||
WINRT_VERIFY(UpdateWindow(g_main_wnd));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void wait_on_parent_process_thread(DWORD pid) {
|
||||
@ -412,7 +404,7 @@ void quit_when_parent_terminates(std::wstring parent_pid) {
|
||||
std::thread(wait_on_parent_process_thread,pid).detach();
|
||||
}
|
||||
|
||||
void read_arguments() {
|
||||
void initialize_message_pipe() {
|
||||
// Expected calling arguments:
|
||||
// [0] - This executable's path.
|
||||
// [1] - PowerToys pipe server.
|
||||
@ -435,14 +427,19 @@ void read_arguments() {
|
||||
LocalFree(argument_list);
|
||||
}
|
||||
|
||||
int start_webview_window(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
|
||||
// To be unlocked after the Window has finished being created.
|
||||
g_window_created.lock();
|
||||
read_arguments();
|
||||
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd) {
|
||||
CoInitialize(nullptr);
|
||||
|
||||
g_hinst = hInstance;
|
||||
g_window_created.lock(); // To be unlocked after the main window has finished being created.
|
||||
initialize_message_pipe();
|
||||
register_classes(hInstance);
|
||||
init_instance(hInstance, nShowCmd);
|
||||
g_main_wnd = create_main_window(hInstance);
|
||||
initialize_webview();
|
||||
WINRT_VERIFY(ShowWindow(g_main_wnd, nShowCmd));
|
||||
|
||||
// Main message loop.
|
||||
MSG msg;
|
||||
// Main message loop:
|
||||
while (GetMessage(&msg, nullptr, 0, 0)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
@ -450,8 +447,3 @@ int start_webview_window(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpC
|
||||
|
||||
return (int)msg.wParam;
|
||||
}
|
||||
|
||||
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd) {
|
||||
CoInitialize(nullptr);
|
||||
return start_webview_window(hInstance, hPrevInstance, lpCmdLine, nShowCmd);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user