|
@@ -305,7 +305,7 @@ void la_SetupGLEnviornment(laWindow* window, HWND hwnd, int Sync) {
|
|
|
};
|
|
|
SYSWINDOW la_CreateWindowWin32(int x, int y, int w, int h, char* title, int SyncToVBlank, SYSGLCONTEXT* r_glc) {
|
|
|
HINSTANCE* inst = &MAIN.hinstance;
|
|
|
- HWND hwnd = CreateWindow(LA_GUI_WNDCLASS_NAME, title, WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
|
|
|
+ HWND hwnd = CreateWindowW(LA_GUI_WNDCLASS_NAME, title, WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
|
|
|
x, y, w, h, 0, 0, *inst, 0);
|
|
|
if (!hwnd) { int a = GetLastError(); printf("%d", a); return 0; }
|
|
|
|
|
@@ -624,7 +624,7 @@ int laGetReadyWith(int GLMajor, int GLMinor, int BufferSamples){
|
|
|
wt.lpszClassName = LA_GUI_WNDCLASS_NAME;
|
|
|
wt.lpszMenuName = 0;
|
|
|
wt.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
|
|
|
- if (!RegisterClassEx(&wt)) return 0;
|
|
|
+ if (!RegisterClassExW(&wt)) return 0;
|
|
|
|
|
|
MAIN.GLMajor = GLMajor; MAIN.GLMinor = GLMinor; MAIN.BufferSamples = BufferSamples;
|
|
|
|
|
@@ -633,7 +633,7 @@ int laGetReadyWith(int GLMajor, int GLMinor, int BufferSamples){
|
|
|
GLenum err;
|
|
|
PIXELFORMATDESCRIPTOR pfd;
|
|
|
HINSTANCE* hinst = &MAIN.hinstance;
|
|
|
- HWND hwnd = CreateWindowEx(WS_EX_ACCEPTFILES, LA_GUI_WNDCLASS_NAME,
|
|
|
+ HWND hwnd = CreateWindowExW(WS_EX_ACCEPTFILES, LA_GUI_WNDCLASS_NAME,
|
|
|
"Temp Window For Accessing GLEW!",
|
|
|
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0, 0, 100, 100,
|
|
|
0, 0, *hinst, 0);
|
|
@@ -1003,6 +1003,9 @@ void la_MakeSpecialKeyBit(SYSWINDOW hwnd,laWindow*wnd,laEvent *e,int use_last_po
|
|
|
XQueryPointer(MAIN.dpy, wnd->win, &root_ret,&win_ret,&rrx,&rry,&rx,&ry,&rmask);
|
|
|
e->SpecialKeyBit = ((rmask&ShiftMask)?LA_KEY_SHIFT:0)|((rmask&ControlMask)?LA_KEY_CTRL:0)|((rmask&Mod1Mask)?LA_KEY_ALT:0);
|
|
|
#endif
|
|
|
+#ifdef _WIN32
|
|
|
+ e->SpecialKeyBit = ((GetKeyState(VK_SHIFT)&0x8000)?LA_KEY_SHIFT:0)|((GetKeyState(VK_CONTROL)&0x8000)?LA_KEY_CTRL:0)|((GetKeyState(VK_MENU)&0x8000)?LA_KEY_ALT:0);
|
|
|
+#endif
|
|
|
}
|
|
|
void la_SaveEvent(SYSWINDOW hwnd, laEvent *e, int use_last_pos){
|
|
|
laListHandle *wl = &MAIN.Windows;
|
|
@@ -1064,6 +1067,21 @@ int la_TranslateSpecialKey(int keysym){
|
|
|
default: return keysym;
|
|
|
}
|
|
|
#endif
|
|
|
+#ifdef _WIN32
|
|
|
+ switch (keysym) {
|
|
|
+ case VK_RETURN: return LA_KEY_ENTER;
|
|
|
+ case VK_ESCAPE: return LA_KEY_ESCAPE;
|
|
|
+ case VK_TAB: return LA_KEY_TAB;
|
|
|
+ case VK_LEFT: return LA_KEY_ARRLEFT;
|
|
|
+ case VK_RIGHT: return LA_KEY_ARRRIGHT;
|
|
|
+ case VK_UP: return LA_KEY_ARRUP;
|
|
|
+ case VK_DOWN: return LA_KEY_ARRDOWN;
|
|
|
+ case VK_CONTROL: return LA_KEY_CTRL;
|
|
|
+ case VK_SHIFT: return LA_KEY_SHIFT;
|
|
|
+ case VK_MENU: return LA_KEY_ALT;
|
|
|
+ default: return keysym;
|
|
|
+ }
|
|
|
+#endif
|
|
|
}
|
|
|
void la_SendMouseEvent(SYSWINDOW hwnd, int type, int x, int y){
|
|
|
//if((type&LA_STATE_DOWN)&&(x!=MAIN.evLastX || y!=MAIN.evLastY)){
|
|
@@ -6493,7 +6511,9 @@ static void la_RecordWacomMotions(XIRawEvent *event)
|
|
|
#ifdef _WIN32
|
|
|
#define PARAM_2_FROM(p) LOWORD(p),HIWORD(p)
|
|
|
LRESULT CALLBACK LA_WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) {
|
|
|
- char buf[4] = { 0 };
|
|
|
+ static uint32_t ch = 0; static int lead = 0;
|
|
|
+ static wchar_t buf[10] = { 0 }; int adv;
|
|
|
+ char mbuf[10] = { 0 }; uint32_t uchar=0;
|
|
|
short wheelmark = 0;
|
|
|
int WheelDir = 0;
|
|
|
if (!hwnd) return DefWindowProc(hwnd, message, wparam, lparam);
|
|
@@ -6546,21 +6566,26 @@ LRESULT CALLBACK LA_WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|
|
// if (lparam & 0x40000000) break;
|
|
|
// if (la_SendSpecialKey(hwnd, LA_STATE_DOWN, wparam))
|
|
|
// break;
|
|
|
- //case WM_KEYDOWN:
|
|
|
- // if (lparam & 0x40000000) break;
|
|
|
- // la_SendSpecialKey(hwnd, LA_STATE_DOWN, wparam);
|
|
|
- // break;
|
|
|
- //
|
|
|
+ case WM_KEYDOWN:
|
|
|
+ if (lparam & 0x40000000) break;
|
|
|
+ la_SendKeyboardEvent(hwnd, LA_KEY_DOWN, la_TranslateSpecialKey(wparam));
|
|
|
+ break;
|
|
|
+ case WM_KEYUP:
|
|
|
+ if (lparam & 0x40000000) break;
|
|
|
+ la_SendKeyboardEvent(hwnd, LA_KEY_UP, la_TranslateSpecialKey(wparam));
|
|
|
+ break;
|
|
|
+
|
|
|
//case WM_SYSKEYUP:
|
|
|
// if (la_SendSpecialKey(hwnd, LA_STATE_UP, wparam));
|
|
|
// break;
|
|
|
- //case WM_KEYUP:
|
|
|
- // la_SendSpecialKey(hwnd, LA_STATE_UP, wparam);
|
|
|
- // break;
|
|
|
-
|
|
|
+ case WM_UNICHAR:
|
|
|
+ la_SendInputEvent(hwnd, wparam);
|
|
|
+ break;
|
|
|
+ case WM_IME_CHAR:
|
|
|
+ la_SendInputEvent(hwnd, wparam);
|
|
|
+ return 0;
|
|
|
case WM_CHAR:
|
|
|
- buf[0] = wparam;
|
|
|
- //la_SendInputEvent(hwnd, buf);
|
|
|
+ la_SendInputEvent(hwnd, wparam);
|
|
|
break;
|
|
|
|
|
|
case WM_SHOWWINDOW:
|