Skip to content

Commit 760ff3e

Browse files
committed
* 修复set title堆栈占用过高的问题
* 增加WM_SYSKEYDOWN的alt响应 * 增加WM_GETDLGCODE,使得MB控件作为对话框子窗口时可接收到键盘消息
1 parent 6ef4d92 commit 760ff3e

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

wke/wkeWebWindow.cpp

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "wke/wkeGlobalVar.h"
66
#include "content/browser/WebPage.h"
77
#include "cc/base/BdColor.h"
8+
#include "base/strings/string_util.h"
89
////////////////////////////////////////////////////////////////////////////
910

1011
namespace wke {
@@ -409,25 +410,19 @@ LRESULT CWebWindow::_windowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM l
409410
// }
410411
// break;
411412

413+
case WM_SYSKEYDOWN: // no break
412414
case WM_KEYDOWN: {
413415
unsigned int virtualKeyCode = wParam;
414416
unsigned int flags = 0;
415-
// if (HIWORD(lParam) & KF_REPEAT)
416-
// flags |= WKE_REPEAT;
417-
// if (HIWORD(lParam) & KF_EXTENDED)
418-
// flags |= WKE_EXTENDED;
419417
flags = lParam;
420418
if (wkeFireKeyDownEvent(this, virtualKeyCode, flags, false))
421419
return 0;
422420
break;
423421
}
422+
case WM_SYSKEYUP: // no break
424423
case WM_KEYUP: {
425424
unsigned int virtualKeyCode = wParam;
426425
unsigned int flags = 0;
427-
// if (HIWORD(lParam) & KF_REPEAT)
428-
// flags |= WKE_REPEAT;
429-
// if (HIWORD(lParam) & KF_EXTENDED)
430-
// flags |= WKE_EXTENDED;
431426
flags = lParam;
432427
if (wkeFireKeyUpEvent(this, virtualKeyCode, flags, false))
433428
return 0;
@@ -565,6 +560,8 @@ LRESULT CWebWindow::_windowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM l
565560
::ImmReleaseContext(hwnd, hIMC);
566561
}
567562
return 0;
563+
case WM_GETDLGCODE: // 使得MB控件作为对话框子窗口时可接收到键盘消息
564+
return DLGC_WANTARROWS | DLGC_WANTALLKEYS | DLGC_WANTCHARS;
568565
}
569566

570567
return ::DefWindowProcW(hwnd, message, wParam, lParam);
@@ -739,9 +736,8 @@ void CWebWindow::setTitle(const wchar_t* text)
739736

740737
void CWebWindow::setTitle(const utf8* text)
741738
{
742-
wchar_t wtext[1024 * 64 + 1] = { 0 };
743-
MultiByteToWideChar(CP_UTF8, 0, text, strlen(text), wtext, 1024*64);
744-
setTitle(wtext);
739+
std::wstring textW = base::UTF8ToWide(text);
740+
setTitle(textW.c_str());
745741
}
746742

747743
void CWebWindow::setTransparent(bool transparent)

0 commit comments

Comments
 (0)