Mercurial > dwindows
comparison win/dw.c @ 2215:69b0d157bc9f
Win: Fixed IS_WIN8PLUS macro so it actually works properly.
Added currently unused macros for Win 7+, 8.1+ and 10+.
Also add underscore to some global variables that did not have them.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 14 Dec 2020 22:43:24 +0000 |
parents | c60588f740ec |
children | 62e5cc4bc347 |
comparison
equal
deleted
inserted
replaced
2214:c60588f740ec | 2215:69b0d157bc9f |
---|---|
252 #endif | 252 #endif |
253 #if !defined(LVS_EX_DOUBLEBUFFER) | 253 #if !defined(LVS_EX_DOUBLEBUFFER) |
254 # define LVS_EX_DOUBLEBUFFER 0x10000 | 254 # define LVS_EX_DOUBLEBUFFER 0x10000 |
255 #endif | 255 #endif |
256 | 256 |
257 HWND popup = (HWND)NULL, DW_HWND_OBJECT = (HWND)NULL, hwndTooltip = (HWND)0; | 257 HWND _dw_popup = (HWND)NULL, DW_HWND_OBJECT = (HWND)NULL, _dw_tooltip = (HWND)NULL; |
258 | 258 |
259 HINSTANCE DWInstance = NULL; | 259 HINSTANCE _DWInstance = NULL; |
260 | 260 |
261 DWORD dwVersion = 0, dwComctlVer = 0; | 261 DWORD _dwVersion = 0, _dwComctlVer = 0; |
262 DWTID _dwtid = -1; | 262 DWTID _dwtid = -1; |
263 SECURITY_DESCRIPTOR _dwsd; | 263 SECURITY_DESCRIPTOR _dwsd; |
264 | 264 |
265 #define PACKVERSION(major,minor) MAKELONG(minor,major) | 265 #define PACKVERSION(major,minor) MAKELONG(minor,major) |
266 | 266 |
267 #define IS_XPPLUS (dwComctlVer >= PACKVERSION(5,82)) | 267 #define IS_XPPLUS (_dwComctlVer >= PACKVERSION(5,82)) |
268 #define IS_VISTAPLUS (dwComctlVer >= PACKVERSION(6,10)) | 268 #define IS_VISTAPLUS (_dwComctlVer >= PACKVERSION(6,10)) |
269 #define IS_WIN8PLUS (dwVersion >= PACKVERSION(6,1)) | 269 #define IS_WIN7PLUS (PACKVERSION(LOBYTE(LOWORD(_dwVersion)),HIBYTE(LOWORD(_dwVersion))) >= PACKVERSION(6,1)) |
270 #define IS_WIN8PLUS (PACKVERSION(LOBYTE(LOWORD(_dwVersion)),HIBYTE(LOWORD(_dwVersion))) >= PACKVERSION(6,2)) | |
271 #define IS_WIN81PLUS (PACKVERSION(LOBYTE(LOWORD(_dwVersion)),HIBYTE(LOWORD(_dwVersion))) >= PACKVERSION(6,3)) | |
272 #define IS_WIN10PLUS (PACKVERSION(LOBYTE(LOWORD(_dwVersion)),HIBYTE(LOWORD(_dwVersion))) >= PACKVERSION(10,0)) | |
270 | 273 |
271 #ifndef MIN | 274 #ifndef MIN |
272 #define MIN(a, b) (((a) < (b)) ? (a) : (b)) | 275 #define MIN(a, b) (((a) < (b)) ? (a) : (b)) |
273 #endif | 276 #endif |
274 | 277 |
403 }; | 406 }; |
404 | 407 |
405 #ifdef BUILD_DLL | 408 #ifdef BUILD_DLL |
406 void Win32_Set_Instance(HINSTANCE hInstance) | 409 void Win32_Set_Instance(HINSTANCE hInstance) |
407 { | 410 { |
408 DWInstance = hInstance; | 411 _DWInstance = hInstance; |
409 } | 412 } |
410 #else | 413 #else |
411 char **_convertargs(int *count, char *start) | 414 char **_convertargs(int *count, char *start) |
412 { | 415 { |
413 char *tmp, *argstart, **argv; | 416 char *tmp, *argstart, **argv; |
443 } | 446 } |
444 } | 447 } |
445 | 448 |
446 argv = (char **)malloc(sizeof(char *) * ((*count)+1)); | 449 argv = (char **)malloc(sizeof(char *) * ((*count)+1)); |
447 argv[0] = calloc(261, 1); | 450 argv[0] = calloc(261, 1); |
448 GetModuleFileNameA(DWInstance, argv[0], 260); | 451 GetModuleFileNameA(_DWInstance, argv[0], 260); |
449 | 452 |
450 argstart = tmp = start; | 453 argstart = tmp = start; |
451 | 454 |
452 if(*start) | 455 if(*start) |
453 { | 456 { |
496 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) | 499 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) |
497 { | 500 { |
498 char **argv; | 501 char **argv; |
499 int argc; | 502 int argc; |
500 | 503 |
501 DWInstance = hInstance; | 504 _DWInstance = hInstance; |
502 | 505 |
503 argv = _convertargs(&argc, lpCmdLine); | 506 argv = _convertargs(&argc, lpCmdLine); |
504 | 507 |
505 return main(argc, argv); | 508 return main(argc, argv); |
506 } | 509 } |
784 return (_ShouldAppsUseDarkMode() && !_DW_IsHighContrast()); | 787 return (_ShouldAppsUseDarkMode() && !_DW_IsHighContrast()); |
785 } | 788 } |
786 | 789 |
787 void _dw_init_dark_mode(void) | 790 void _dw_init_dark_mode(void) |
788 { | 791 { |
789 if(_DW_DARK_MODE_ALLOWED && dwVersion && huxtheme) | 792 if(_DW_DARK_MODE_ALLOWED && _dwVersion && huxtheme) |
790 { | 793 { |
791 /* Dark mode is introduced in Windows 10 (1809) build 17763 */ | 794 /* Dark mode is introduced in Windows 10 (1809) build 17763 */ |
792 if(LOBYTE(LOWORD(dwVersion)) >= 10 && HIWORD(dwVersion) >= 17763) | 795 if(LOBYTE(LOWORD(_dwVersion)) >= 10 && HIWORD(_dwVersion) >= 17763) |
793 { | 796 { |
794 _OpenNcThemeData = (HTHEME (WINAPI *)(HWND, LPCWSTR))GetProcAddress(huxtheme, MAKEINTRESOURCEA(49)); | 797 _OpenNcThemeData = (HTHEME (WINAPI *)(HWND, LPCWSTR))GetProcAddress(huxtheme, MAKEINTRESOURCEA(49)); |
795 _RefreshImmersiveColorPolicyState = (VOID (WINAPI *)(VOID))GetProcAddress(huxtheme, MAKEINTRESOURCEA(104)); | 798 _RefreshImmersiveColorPolicyState = (VOID (WINAPI *)(VOID))GetProcAddress(huxtheme, MAKEINTRESOURCEA(104)); |
796 _GetIsImmersiveColorUsingHighContrast = (BOOL (WINAPI *)(IMMERSIVE_HC_CACHE_MODE))GetProcAddress(huxtheme, MAKEINTRESOURCEA(106)); | 799 _GetIsImmersiveColorUsingHighContrast = (BOOL (WINAPI *)(IMMERSIVE_HC_CACHE_MODE))GetProcAddress(huxtheme, MAKEINTRESOURCEA(106)); |
797 _ShouldAppsUseDarkMode = (BOOL (WINAPI *)(VOID))GetProcAddress(huxtheme, MAKEINTRESOURCEA(132)); | 800 _ShouldAppsUseDarkMode = (BOOL (WINAPI *)(VOID))GetProcAddress(huxtheme, MAKEINTRESOURCEA(132)); |
798 _AllowDarkModeForWindow = (BOOL (WINAPI *)(HWND, BOOL))GetProcAddress(huxtheme, MAKEINTRESOURCEA(133)); | 801 _AllowDarkModeForWindow = (BOOL (WINAPI *)(HWND, BOOL))GetProcAddress(huxtheme, MAKEINTRESOURCEA(133)); |
799 if(HIWORD(dwVersion) < 18362) | 802 if(HIWORD(_dwVersion) < 18362) |
800 _AllowDarkModeForApp = (BOOL (WINAPI *)(BOOL))GetProcAddress(huxtheme, MAKEINTRESOURCEA(135)); | 803 _AllowDarkModeForApp = (BOOL (WINAPI *)(BOOL))GetProcAddress(huxtheme, MAKEINTRESOURCEA(135)); |
801 else | 804 else |
802 _SetPreferredAppMode = (_PreferredAppMode (WINAPI *)(_PreferredAppMode))GetProcAddress(huxtheme, MAKEINTRESOURCEA(135)); | 805 _SetPreferredAppMode = (_PreferredAppMode (WINAPI *)(_PreferredAppMode))GetProcAddress(huxtheme, MAKEINTRESOURCEA(135)); |
803 _IsDarkModeAllowedForWindow = (BOOL (WINAPI *)(HWND))GetProcAddress(huxtheme, MAKEINTRESOURCEA(137)); | 806 _IsDarkModeAllowedForWindow = (BOOL (WINAPI *)(HWND))GetProcAddress(huxtheme, MAKEINTRESOURCEA(137)); |
804 _ShouldSystemUseDarkMode = (BOOL (WINAPI *)(VOID))GetProcAddress(huxtheme, MAKEINTRESOURCEA(138)); | 807 _ShouldSystemUseDarkMode = (BOOL (WINAPI *)(VOID))GetProcAddress(huxtheme, MAKEINTRESOURCEA(138)); |
892 void _DW_RefreshTitleBarThemeColor(HWND window) | 895 void _DW_RefreshTitleBarThemeColor(HWND window) |
893 { | 896 { |
894 BOOL dark = FALSE; | 897 BOOL dark = FALSE; |
895 if (_IsDarkModeAllowedForWindow(window) && _DW_ShouldAppsUseDarkMode()) | 898 if (_IsDarkModeAllowedForWindow(window) && _DW_ShouldAppsUseDarkMode()) |
896 dark = TRUE; | 899 dark = TRUE; |
897 if(HIWORD(dwVersion) < 18362) | 900 if(HIWORD(_dwVersion) < 18362) |
898 SetProp(window, TEXT("UseImmersiveDarkModeColors"), (HANDLE)DW_INT_TO_POINTER(dark)); | 901 SetProp(window, TEXT("UseImmersiveDarkModeColors"), (HANDLE)DW_INT_TO_POINTER(dark)); |
899 else if (_SetWindowCompositionAttribute) | 902 else if (_SetWindowCompositionAttribute) |
900 { | 903 { |
901 _WINDOWCOMPOSITIONATTRIBDATA data = { WCA_USEDARKMODECOLORS, &dark, sizeof(dark) }; | 904 _WINDOWCOMPOSITIONATTRIBDATA data = { WCA_USEDARKMODECOLORS, &dark, sizeof(dark) }; |
902 _SetWindowCompositionAttribute(window, &data); | 905 _SetWindowCompositionAttribute(window, &data); |
1168 | 1171 |
1169 TOOLINFO ti = { 0 }; | 1172 TOOLINFO ti = { 0 }; |
1170 | 1173 |
1171 ti.cbSize = sizeof(TOOLINFO); | 1174 ti.cbSize = sizeof(TOOLINFO); |
1172 ti.hwnd = handle; | 1175 ti.hwnd = handle; |
1173 ti.hinst = DWInstance; | 1176 ti.hinst = _DWInstance; |
1174 | 1177 |
1175 SendMessage(hwndTooltip, TTM_DELTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); | 1178 SendMessage(_dw_tooltip, TTM_DELTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); |
1176 | 1179 |
1177 GetClassName(handle, tmpbuf, 99); | 1180 GetClassName(handle, tmpbuf, 99); |
1178 | 1181 |
1179 /* Don't try to free memory from an embedded IE or Edge/Chromium window */ | 1182 /* Don't try to free memory from an embedded IE or Edge/Chromium window */ |
1180 if(_tcsncmp(tmpbuf, TEXT("Internet Explorer_Server"), 25) == 0 || | 1183 if(_tcsncmp(tmpbuf, TEXT("Internet Explorer_Server"), 25) == 0 || |
2652 tmp = NULL; | 2655 tmp = NULL; |
2653 } | 2656 } |
2654 } /* this fires for checkable menu items */ | 2657 } /* this fires for checkable menu items */ |
2655 else if ( tmp->window < (HWND)65536 && command == tmp->window && tmp->message != WM_TIMER ) | 2658 else if ( tmp->window < (HWND)65536 && command == tmp->window && tmp->message != WM_TIMER ) |
2656 { | 2659 { |
2657 _dw_toggle_checkable_menu_item( popup ? popup : tmp->window, DW_POINTER_TO_INT(tmp->data) ); | 2660 _dw_toggle_checkable_menu_item( _dw_popup ? _dw_popup : tmp->window, DW_POINTER_TO_INT(tmp->data) ); |
2658 result = clickfunc(popup ? popup : tmp->window, tmp->data); | 2661 result = clickfunc(_dw_popup ? _dw_popup : tmp->window, tmp->data); |
2659 tmp = NULL; | 2662 tmp = NULL; |
2660 } | 2663 } |
2661 } | 2664 } |
2662 break; | 2665 break; |
2663 case WM_HSCROLL: | 2666 case WM_HSCROLL: |
4440 { | 4443 { |
4441 TOOLINFO ti = { 0 }; | 4444 TOOLINFO ti = { 0 }; |
4442 | 4445 |
4443 ti.cbSize = sizeof(TOOLINFO); | 4446 ti.cbSize = sizeof(TOOLINFO); |
4444 ti.hwnd = handle; | 4447 ti.hwnd = handle; |
4445 ti.hinst = DWInstance; | 4448 ti.hinst = _DWInstance; |
4446 | 4449 |
4447 SendMessage(hwndTooltip, TTM_DELTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); | 4450 SendMessage(_dw_tooltip, TTM_DELTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); |
4448 if(text) | 4451 if(text) |
4449 { | 4452 { |
4450 /* Set up "tool" information. | 4453 /* Set up "tool" information. |
4451 * In this case, the "tool" is the entire parent window. | 4454 * In this case, the "tool" is the entire parent window. |
4452 */ | 4455 */ |
4453 ti.uFlags = TTF_SUBCLASS; | 4456 ti.uFlags = TTF_SUBCLASS; |
4454 ti.lpszText = UTF8toWide(text); | 4457 ti.lpszText = UTF8toWide(text); |
4455 ti.rect.right = ti.rect.bottom = 2000; | 4458 ti.rect.right = ti.rect.bottom = 2000; |
4456 | 4459 |
4457 /* Associate the tooltip with the "tool" window. */ | 4460 /* Associate the tooltip with the "tool" window. */ |
4458 SendMessage(hwndTooltip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); | 4461 SendMessage(_dw_tooltip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); |
4459 } | 4462 } |
4460 } | 4463 } |
4461 | 4464 |
4462 #ifndef GDIPLUS | 4465 #ifndef GDIPLUS |
4463 /* This function determines the handle for a supplied image filename | 4466 /* This function determines the handle for a supplied image filename |
4584 InitCommonControlsEx(&icc); | 4587 InitCommonControlsEx(&icc); |
4585 | 4588 |
4586 memset(lookup, 0, sizeof(HICON) * ICON_INDEX_LIMIT); | 4589 memset(lookup, 0, sizeof(HICON) * ICON_INDEX_LIMIT); |
4587 | 4590 |
4588 /* We need the version to check capability like up-down controls */ | 4591 /* We need the version to check capability like up-down controls */ |
4589 dwVersion = GetVersion(); | 4592 _dwVersion = GetVersion(); |
4590 dwComctlVer = GetDllVersion(TEXT("comctl32.dll")); | 4593 _dwComctlVer = GetDllVersion(TEXT("comctl32.dll")); |
4594 dw_debug("PACKVERSION(%d,%d) %x PACKVERSION(6,1) %x PACKVERSION(6,0) %x PACKVERSION(6,2) %x PACKVERSION(10,0) %x PACKVERSION(5,1) %x\n", | |
4595 LOBYTE(LOWORD(_dwVersion)), HIBYTE(LOWORD(_dwVersion)), PACKVERSION(LOBYTE(LOWORD(_dwVersion)),HIBYTE(LOWORD(_dwVersion))), PACKVERSION(6,1), PACKVERSION(6,0), PACKVERSION(6,3), PACKVERSION(10,0), PACKVERSION(5,1)); | |
4591 | 4596 |
4592 /* We need to initialize dark mode, and thus the aero/theme subsystems before registering our window classes */ | 4597 /* We need to initialize dark mode, and thus the aero/theme subsystems before registering our window classes */ |
4593 if((huxtheme = LoadLibrary(TEXT("uxtheme")))) | 4598 if((huxtheme = LoadLibrary(TEXT("uxtheme")))) |
4594 _SetWindowTheme = (HRESULT (WINAPI *)(HWND, LPCWSTR, LPCWSTR ))GetProcAddress(huxtheme, "SetWindowTheme"); | 4599 _SetWindowTheme = (HRESULT (WINAPI *)(HWND, LPCWSTR, LPCWSTR ))GetProcAddress(huxtheme, "SetWindowTheme"); |
4595 #ifdef AEROGLASS | 4600 #ifdef AEROGLASS |
4709 * except temporarily hold the child windows before they are | 4714 * except temporarily hold the child windows before they are |
4710 * packed into their correct parent. | 4715 * packed into their correct parent. |
4711 */ | 4716 */ |
4712 | 4717 |
4713 DW_HWND_OBJECT = CreateWindow(ObjectClassName, TEXT("HWND_OBJECT"), 0, 0, 0, | 4718 DW_HWND_OBJECT = CreateWindow(ObjectClassName, TEXT("HWND_OBJECT"), 0, 0, 0, |
4714 0, 0, HWND_DESKTOP, NULL, DWInstance, NULL); | 4719 0, 0, HWND_DESKTOP, NULL, _DWInstance, NULL); |
4715 | 4720 |
4716 if(!DW_HWND_OBJECT) | 4721 if(!DW_HWND_OBJECT) |
4717 { | 4722 { |
4718 dw_messagebox("Dynamic Windows", DW_MB_OK|DW_MB_ERROR, "Could not initialize the object window. error code %d", GetLastError()); | 4723 dw_messagebox("Dynamic Windows", DW_MB_OK|DW_MB_ERROR, "Could not initialize the object window. error code %d", GetLastError()); |
4719 exit(1); | 4724 exit(1); |
4726 } | 4731 } |
4727 if(!_dw_app_name[0]) | 4732 if(!_dw_app_name[0]) |
4728 { | 4733 { |
4729 /* If we still don't have an app name, get the executable name */ | 4734 /* If we still don't have an app name, get the executable name */ |
4730 char fullpath[MAX_PATH+1] = {0}, *pos; | 4735 char fullpath[MAX_PATH+1] = {0}, *pos; |
4731 GetModuleFileNameA(DWInstance, fullpath, MAX_PATH); | 4736 GetModuleFileNameA(_DWInstance, fullpath, MAX_PATH); |
4732 pos = strrchr(fullpath, '\\'); | 4737 pos = strrchr(fullpath, '\\'); |
4733 if(pos) | 4738 if(pos) |
4734 pos++; | 4739 pos++; |
4735 strncpy(_dw_app_name, pos ? pos : fullpath, _DW_APP_ID_SIZE); | 4740 strncpy(_dw_app_name, pos ? pos : fullpath, _DW_APP_ID_SIZE); |
4736 } | 4741 } |
4754 } | 4759 } |
4755 RegisterClass(&wc); | 4760 RegisterClass(&wc); |
4756 #endif | 4761 #endif |
4757 | 4762 |
4758 /* Create a tooltip. */ | 4763 /* Create a tooltip. */ |
4759 hwndTooltip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, | 4764 _dw_tooltip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, |
4760 CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, DW_HWND_OBJECT, NULL, DWInstance,NULL); | 4765 CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, DW_HWND_OBJECT, NULL, _DWInstance, NULL); |
4761 | 4766 |
4762 SetWindowPos(hwndTooltip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); | 4767 SetWindowPos(_dw_tooltip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); |
4763 | 4768 |
4764 /* Create empty box data */ | 4769 /* Create empty box data */ |
4765 SetWindowLongPtr(DW_HWND_OBJECT, GWLP_USERDATA, (LONG_PTR)calloc(sizeof(Box), 1)); | 4770 SetWindowLongPtr(DW_HWND_OBJECT, GWLP_USERDATA, (LONG_PTR)calloc(sizeof(Box), 1)); |
4766 | 4771 |
4767 /* Initialize Security for named events and memory */ | 4772 /* Initialize Security for named events and memory */ |
5852 | 5857 |
5853 if(flStyle & DW_FCF_TASKLIST || | 5858 if(flStyle & DW_FCF_TASKLIST || |
5854 flStyle & WS_VSCROLL /* This is deprecated and should go away in version 3? */) | 5859 flStyle & WS_VSCROLL /* This is deprecated and should go away in version 3? */) |
5855 { | 5860 { |
5856 hwndframe = CreateWindowEx(flStyleEx, ClassName, UTF8toWide(title), (flStyle | WS_CLIPCHILDREN) & 0xffdf0000, CW_USEDEFAULT, CW_USEDEFAULT, | 5861 hwndframe = CreateWindowEx(flStyleEx, ClassName, UTF8toWide(title), (flStyle | WS_CLIPCHILDREN) & 0xffdf0000, CW_USEDEFAULT, CW_USEDEFAULT, |
5857 0, 0, hwndOwner, NULL, DWInstance, NULL); | 5862 0, 0, hwndOwner, NULL, _DWInstance, NULL); |
5858 } | 5863 } |
5859 else | 5864 else |
5860 { | 5865 { |
5861 flStyleEx |= WS_EX_TOOLWINDOW; | 5866 flStyleEx |= WS_EX_TOOLWINDOW; |
5862 | 5867 |
5863 hwndframe = CreateWindowEx(flStyleEx, ClassName, UTF8toWide(title), (flStyle | WS_CLIPCHILDREN) & 0xffff0000, CW_USEDEFAULT, CW_USEDEFAULT, | 5868 hwndframe = CreateWindowEx(flStyleEx, ClassName, UTF8toWide(title), (flStyle | WS_CLIPCHILDREN) & 0xffff0000, CW_USEDEFAULT, CW_USEDEFAULT, |
5864 0, 0, hwndOwner, NULL, DWInstance, NULL); | 5869 0, 0, hwndOwner, NULL, _DWInstance, NULL); |
5865 } | 5870 } |
5866 | 5871 |
5867 SetWindowLongPtr(hwndframe, GWLP_USERDATA, (LONG_PTR)newbox); | 5872 SetWindowLongPtr(hwndframe, GWLP_USERDATA, (LONG_PTR)newbox); |
5868 | 5873 |
5869 if(hwndOwner) | 5874 if(hwndOwner) |
5932 NULL, | 5937 NULL, |
5933 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, | 5938 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, |
5934 0,0,0,0, | 5939 0,0,0,0, |
5935 DW_HWND_OBJECT, | 5940 DW_HWND_OBJECT, |
5936 NULL, | 5941 NULL, |
5937 DWInstance, | 5942 _DWInstance, |
5938 NULL); | 5943 NULL); |
5939 | 5944 |
5940 newbox->cinfo.pOldProc = SubclassWindow(hwndframe, _colorwndproc); | 5945 newbox->cinfo.pOldProc = SubclassWindow(hwndframe, _colorwndproc); |
5941 newbox->cinfo.fore = newbox->cinfo.back = -1; | 5946 newbox->cinfo.fore = newbox->cinfo.back = -1; |
5942 | 5947 |
5962 NULL, | 5967 NULL, |
5963 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL, | 5968 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL, |
5964 0,0,0,0, | 5969 0,0,0,0, |
5965 DW_HWND_OBJECT, | 5970 DW_HWND_OBJECT, |
5966 NULL, | 5971 NULL, |
5967 DWInstance, | 5972 _DWInstance, |
5968 NULL); | 5973 NULL); |
5969 | 5974 |
5970 if((cinfo = _dw_window_new_cinfo(hwndframe, FALSE))) | 5975 if((cinfo = _dw_window_new_cinfo(hwndframe, FALSE))) |
5971 { | 5976 { |
5972 cinfo->buddy = box; | 5977 cinfo->buddy = box; |
6050 NULL, | 6055 NULL, |
6051 WS_VISIBLE | WS_CHILD, | 6056 WS_VISIBLE | WS_CHILD, |
6052 0,0,0,0, | 6057 0,0,0,0, |
6053 DW_HWND_OBJECT, | 6058 DW_HWND_OBJECT, |
6054 NULL, | 6059 NULL, |
6055 DWInstance, | 6060 _DWInstance, |
6056 NULL); | 6061 NULL); |
6057 | 6062 |
6058 newbox->grouphwnd = CreateWindow(BUTTONCLASSNAME, | 6063 newbox->grouphwnd = CreateWindow(BUTTONCLASSNAME, |
6059 UTF8toWide(title), | 6064 UTF8toWide(title), |
6060 WS_CHILD | BS_GROUPBOX | | 6065 WS_CHILD | BS_GROUPBOX | |
6061 WS_VISIBLE | WS_CLIPCHILDREN, | 6066 WS_VISIBLE | WS_CLIPCHILDREN, |
6062 0,0,0,0, | 6067 0,0,0,0, |
6063 hwndframe, | 6068 hwndframe, |
6064 NULL, | 6069 NULL, |
6065 DWInstance, | 6070 _DWInstance, |
6066 NULL); | 6071 NULL); |
6067 | 6072 |
6068 /* Disable visual styles by default */ | 6073 /* Disable visual styles by default */ |
6069 if(_SetWindowTheme) | 6074 if(_SetWindowTheme) |
6070 _SetWindowTheme(newbox->grouphwnd, L"", L""); | 6075 _SetWindowTheme(newbox->grouphwnd, L"", L""); |
6092 NULL, | 6097 NULL, |
6093 WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS, | 6098 WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS, |
6094 0,0,0,0, | 6099 0,0,0,0, |
6095 DW_HWND_OBJECT, | 6100 DW_HWND_OBJECT, |
6096 (HMENU)(uintptr_t)id, | 6101 (HMENU)(uintptr_t)id, |
6097 DWInstance, | 6102 _DWInstance, |
6098 &ccs); | 6103 &ccs); |
6099 return hwndframe; | 6104 return hwndframe; |
6100 } | 6105 } |
6101 | 6106 |
6102 /* | 6107 /* |
6111 NULL, | 6116 NULL, |
6112 WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS, | 6117 WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS, |
6113 0,0,0,0, | 6118 0,0,0,0, |
6114 DW_HWND_OBJECT, | 6119 DW_HWND_OBJECT, |
6115 (HMENU)(uintptr_t)id, | 6120 (HMENU)(uintptr_t)id, |
6116 DWInstance, | 6121 _DWInstance, |
6117 NULL); | 6122 NULL); |
6118 #else | 6123 #else |
6119 dw_debug("HTML widget not available; Support not enabled in this build.\n"); | 6124 dw_debug("HTML widget not available; Support not enabled in this build.\n"); |
6120 return 0; | 6125 return 0; |
6121 #endif | 6126 #endif |
6231 SS_BITMAP | SS_CENTERIMAGE | WS_VISIBLE | | 6236 SS_BITMAP | SS_CENTERIMAGE | WS_VISIBLE | |
6232 WS_CHILD | WS_CLIPCHILDREN, | 6237 WS_CHILD | WS_CLIPCHILDREN, |
6233 0,0,0,0, | 6238 0,0,0,0, |
6234 DW_HWND_OBJECT, | 6239 DW_HWND_OBJECT, |
6235 (HMENU)(uintptr_t)id, | 6240 (HMENU)(uintptr_t)id, |
6236 DWInstance, | 6241 _DWInstance, |
6237 NULL); | 6242 NULL); |
6238 } | 6243 } |
6239 | 6244 |
6240 /* | 6245 /* |
6241 * Create a notebook object to be packed. | 6246 * Create a notebook object to be packed. |
6257 NULL, | 6262 NULL, |
6258 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | flags, | 6263 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | flags, |
6259 0,0,0,0, | 6264 0,0,0,0, |
6260 DW_HWND_OBJECT, | 6265 DW_HWND_OBJECT, |
6261 (HMENU)(uintptr_t)id, | 6266 (HMENU)(uintptr_t)id, |
6262 DWInstance, | 6267 _DWInstance, |
6263 NULL); | 6268 NULL); |
6264 if((cinfo = _dw_window_new_cinfo(tmp, FALSE))) | 6269 if((cinfo = _dw_window_new_cinfo(tmp, FALSE))) |
6265 cinfo->pOldProc = SubclassWindow(tmp, _simplewndproc); | 6270 cinfo->pOldProc = SubclassWindow(tmp, _simplewndproc); |
6266 dw_window_set_data(tmp, "_dw_array", (void *)array); | 6271 dw_window_set_data(tmp, "_dw_array", (void *)array); |
6267 dw_window_set_font(tmp, DefaultFont); | 6272 dw_window_set_font(tmp, DefaultFont); |
6691 mymenu = cinfo->hmenu; | 6696 mymenu = cinfo->hmenu; |
6692 else | 6697 else |
6693 return; | 6698 return; |
6694 } | 6699 } |
6695 | 6700 |
6696 popup = parent; | 6701 _dw_popup = parent; |
6697 TrackPopupMenu(mymenu, 0, x, y, 0, parent, NULL); | 6702 TrackPopupMenu(mymenu, 0, x, y, 0, parent, NULL); |
6698 PostMessage(DW_HWND_OBJECT, WM_USER+5, (LPARAM)mymenu, 0); | 6703 PostMessage(DW_HWND_OBJECT, WM_USER+5, (LPARAM)mymenu, 0); |
6699 } | 6704 } |
6700 } | 6705 } |
6701 | 6706 |
6716 LVS_SHAREIMAGELISTS | WS_BORDER | | 6721 LVS_SHAREIMAGELISTS | WS_BORDER | |
6717 WS_CLIPCHILDREN, | 6722 WS_CLIPCHILDREN, |
6718 0,0,0,0, | 6723 0,0,0,0, |
6719 DW_HWND_OBJECT, | 6724 DW_HWND_OBJECT, |
6720 (HMENU)(uintptr_t)id, | 6725 (HMENU)(uintptr_t)id, |
6721 DWInstance, | 6726 _DWInstance, |
6722 NULL); | 6727 NULL); |
6723 ContainerInfo *cinfo = (ContainerInfo *)calloc(1, sizeof(ContainerInfo)); | 6728 ContainerInfo *cinfo = (ContainerInfo *)calloc(1, sizeof(ContainerInfo)); |
6724 | 6729 |
6725 if(!cinfo) | 6730 if(!cinfo) |
6726 { | 6731 { |
6758 TVS_HASBUTTONS | TVS_LINESATROOT | | 6763 TVS_HASBUTTONS | TVS_LINESATROOT | |
6759 WS_BORDER | WS_CLIPCHILDREN, | 6764 WS_BORDER | WS_CLIPCHILDREN, |
6760 0,0,0,0, | 6765 0,0,0,0, |
6761 DW_HWND_OBJECT, | 6766 DW_HWND_OBJECT, |
6762 (HMENU)(uintptr_t)id, | 6767 (HMENU)(uintptr_t)id, |
6763 DWInstance, | 6768 _DWInstance, |
6764 NULL); | 6769 NULL); |
6765 ContainerInfo *cinfo = (ContainerInfo *)calloc(1, sizeof(ContainerInfo)); | 6770 ContainerInfo *cinfo = (ContainerInfo *)calloc(1, sizeof(ContainerInfo)); |
6766 TreeView_SetItemHeight(tmp, 16); | 6771 TreeView_SetItemHeight(tmp, 16); |
6767 | 6772 |
6768 if(!cinfo) | 6773 if(!cinfo) |
6822 SS_NOPREFIX | SS_NOTIFY | SS_LEFTNOWORDWRAP | | 6827 SS_NOPREFIX | SS_NOTIFY | SS_LEFTNOWORDWRAP | |
6823 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, | 6828 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, |
6824 0,0,0,0, | 6829 0,0,0,0, |
6825 DW_HWND_OBJECT, | 6830 DW_HWND_OBJECT, |
6826 (HMENU)(uintptr_t)id, | 6831 (HMENU)(uintptr_t)id, |
6827 DWInstance, | 6832 _DWInstance, |
6828 NULL); | 6833 NULL); |
6829 #ifdef AEROGLASS | 6834 #ifdef AEROGLASS |
6830 ColorInfo *cinfo = _dw_window_new_cinfo(tmp, FALSE); | 6835 ColorInfo *cinfo = _dw_window_new_cinfo(tmp, FALSE); |
6831 | 6836 |
6832 if(cinfo) | 6837 if(cinfo) |
6849 UTF8toWide(text), | 6854 UTF8toWide(text), |
6850 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, | 6855 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, |
6851 0,0,0,0, | 6856 0,0,0,0, |
6852 DW_HWND_OBJECT, | 6857 DW_HWND_OBJECT, |
6853 (HMENU)(uintptr_t)id, | 6858 (HMENU)(uintptr_t)id, |
6854 DWInstance, | 6859 _DWInstance, |
6855 NULL); | 6860 NULL); |
6856 dw_window_set_font(tmp, DefaultFont); | 6861 dw_window_set_font(tmp, DefaultFont); |
6857 return tmp; | 6862 return tmp; |
6858 } | 6863 } |
6859 | 6864 |
6873 ES_WANTRETURN | WS_CHILD | | 6878 ES_WANTRETURN | WS_CHILD | |
6874 WS_CLIPCHILDREN, | 6879 WS_CLIPCHILDREN, |
6875 0,0,0,0, | 6880 0,0,0,0, |
6876 DW_HWND_OBJECT, | 6881 DW_HWND_OBJECT, |
6877 (HMENU)(uintptr_t)id, | 6882 (HMENU)(uintptr_t)id, |
6878 DWInstance, | 6883 _DWInstance, |
6879 NULL); | 6884 NULL); |
6880 ContainerInfo *cinfo = (ContainerInfo *)calloc(1, sizeof(ContainerInfo)); | 6885 ContainerInfo *cinfo = (ContainerInfo *)calloc(1, sizeof(ContainerInfo)); |
6881 | 6886 |
6882 if(!cinfo) | 6887 if(!cinfo) |
6883 { | 6888 { |
6909 WS_BORDER | ES_AUTOHSCROLL | | 6914 WS_BORDER | ES_AUTOHSCROLL | |
6910 WS_VISIBLE | WS_CLIPCHILDREN, | 6915 WS_VISIBLE | WS_CLIPCHILDREN, |
6911 0,0,0,0, | 6916 0,0,0,0, |
6912 DW_HWND_OBJECT, | 6917 DW_HWND_OBJECT, |
6913 (HMENU)(uintptr_t)id, | 6918 (HMENU)(uintptr_t)id, |
6914 DWInstance, | 6919 _DWInstance, |
6915 NULL); | 6920 NULL); |
6916 | 6921 |
6917 _dw_window_new_cinfo(tmp, TRUE); | 6922 _dw_window_new_cinfo(tmp, TRUE); |
6918 dw_window_set_font(tmp, DefaultFont); | 6923 dw_window_set_font(tmp, DefaultFont); |
6919 return tmp; | 6924 return tmp; |
6934 ES_PASSWORD | WS_BORDER | WS_VISIBLE | | 6939 ES_PASSWORD | WS_BORDER | WS_VISIBLE | |
6935 ES_AUTOHSCROLL | WS_CLIPCHILDREN, | 6940 ES_AUTOHSCROLL | WS_CLIPCHILDREN, |
6936 0,0,0,0, | 6941 0,0,0,0, |
6937 DW_HWND_OBJECT, | 6942 DW_HWND_OBJECT, |
6938 (HMENU)(uintptr_t)id, | 6943 (HMENU)(uintptr_t)id, |
6939 DWInstance, | 6944 _DWInstance, |
6940 NULL); | 6945 NULL); |
6941 | 6946 |
6942 _dw_window_new_cinfo(tmp, TRUE); | 6947 _dw_window_new_cinfo(tmp, TRUE); |
6943 dw_window_set_font(tmp, DefaultFont); | 6948 dw_window_set_font(tmp, DefaultFont); |
6944 return tmp; | 6949 return tmp; |
6970 WS_CHILD | CBS_DROPDOWN | WS_VSCROLL | | 6975 WS_CHILD | CBS_DROPDOWN | WS_VSCROLL | |
6971 WS_CLIPCHILDREN | CBS_AUTOHSCROLL | WS_VISIBLE, | 6976 WS_CLIPCHILDREN | CBS_AUTOHSCROLL | WS_VISIBLE, |
6972 0,0,0,0, | 6977 0,0,0,0, |
6973 DW_HWND_OBJECT, | 6978 DW_HWND_OBJECT, |
6974 (HMENU)(uintptr_t)id, | 6979 (HMENU)(uintptr_t)id, |
6975 DWInstance, | 6980 _DWInstance, |
6976 NULL); | 6981 NULL); |
6977 ColorInfo *cinfo = (ColorInfo *)calloc(1, sizeof(ColorInfo)); | 6982 ColorInfo *cinfo = (ColorInfo *)calloc(1, sizeof(ColorInfo)); |
6978 ColorInfo *cinfo2 = (ColorInfo *)calloc(1, sizeof(ColorInfo)); | 6983 ColorInfo *cinfo2 = (ColorInfo *)calloc(1, sizeof(ColorInfo)); |
6979 | 6984 |
6980 if(!cinfo || !cinfo2) | 6985 if(!cinfo || !cinfo2) |
7012 WS_CHILD | BS_PUSHBUTTON | | 7017 WS_CHILD | BS_PUSHBUTTON | |
7013 WS_VISIBLE | WS_CLIPCHILDREN, | 7018 WS_VISIBLE | WS_CLIPCHILDREN, |
7014 0,0,0,0, | 7019 0,0,0,0, |
7015 DW_HWND_OBJECT, | 7020 DW_HWND_OBJECT, |
7016 (HMENU)(uintptr_t)id, | 7021 (HMENU)(uintptr_t)id, |
7017 DWInstance, | 7022 _DWInstance, |
7018 NULL); | 7023 NULL); |
7019 ColorInfo *cinfo; | 7024 ColorInfo *cinfo; |
7020 | 7025 |
7021 if((cinfo = _dw_window_new_cinfo(tmp, FALSE))) | 7026 if((cinfo = _dw_window_new_cinfo(tmp, FALSE))) |
7022 cinfo->pOldProc = SubclassWindow(tmp, _BtProc); | 7027 cinfo->pOldProc = SubclassWindow(tmp, _BtProc); |
7090 else | 7095 else |
7091 return 0; | 7096 return 0; |
7092 | 7097 |
7093 /* Create the toolbar */ | 7098 /* Create the toolbar */ |
7094 tmp = CreateWindowEx(0L, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | TBSTYLE_AUTOSIZE | CCS_NORESIZE | | 7099 tmp = CreateWindowEx(0L, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | TBSTYLE_AUTOSIZE | CCS_NORESIZE | |
7095 CCS_NOPARENTALIGN | CCS_NODIVIDER, 0, 0, 100, 30, DW_HWND_OBJECT, (HMENU)(uintptr_t)id, DWInstance, NULL); | 7100 CCS_NOPARENTALIGN | CCS_NODIVIDER, 0, 0, 100, 30, DW_HWND_OBJECT, (HMENU)(uintptr_t)id, _DWInstance, NULL); |
7096 | 7101 |
7097 /* Disable visual styles by default */ | 7102 /* Disable visual styles by default */ |
7098 if(_SetWindowTheme) | 7103 if(_SetWindowTheme) |
7099 _SetWindowTheme(tmp, L"", L""); | 7104 _SetWindowTheme(tmp, L"", L""); |
7100 | 7105 |
7117 * text: Bubble help text to be displayed. | 7122 * text: Bubble help text to be displayed. |
7118 * id: An ID of a bitmap in the resource file. | 7123 * id: An ID of a bitmap in the resource file. |
7119 */ | 7124 */ |
7120 HWND API dw_bitmapbutton_new(const char *text, ULONG id) | 7125 HWND API dw_bitmapbutton_new(const char *text, ULONG id) |
7121 { | 7126 { |
7122 HICON icon = LoadImage(DWInstance, MAKEINTRESOURCE(id), IMAGE_ICON, 0, 0, 0); | 7127 HICON icon = LoadImage(_DWInstance, MAKEINTRESOURCE(id), IMAGE_ICON, 0, 0, 0); |
7123 HBITMAP hbitmap = icon ? 0 : LoadBitmap(DWInstance, MAKEINTRESOURCE(id)); | 7128 HBITMAP hbitmap = icon ? 0 : LoadBitmap(_DWInstance, MAKEINTRESOURCE(id)); |
7124 ColorInfo *cinfo; | 7129 ColorInfo *cinfo; |
7125 HWND tmp; | 7130 HWND tmp; |
7126 | 7131 |
7127 #ifdef TOOLBAR | 7132 #ifdef TOOLBAR |
7128 if((tmp = _create_toolbar(text, id, icon, hbitmap))) | 7133 if((tmp = _create_toolbar(text, id, icon, hbitmap))) |
7139 WS_VISIBLE | WS_CLIPCHILDREN | | 7144 WS_VISIBLE | WS_CLIPCHILDREN | |
7140 (icon ? BS_ICON : BS_BITMAP), | 7145 (icon ? BS_ICON : BS_BITMAP), |
7141 0,0,0,0, | 7146 0,0,0,0, |
7142 DW_HWND_OBJECT, | 7147 DW_HWND_OBJECT, |
7143 (HMENU)(uintptr_t)id, | 7148 (HMENU)(uintptr_t)id, |
7144 DWInstance, | 7149 _DWInstance, |
7145 NULL); | 7150 NULL); |
7146 | 7151 |
7147 if((cinfo = _dw_window_new_cinfo(tmp, FALSE))) | 7152 if((cinfo = _dw_window_new_cinfo(tmp, FALSE))) |
7148 cinfo->pOldProc = SubclassWindow(tmp, _BtProc); | 7153 cinfo->pOldProc = SubclassWindow(tmp, _BtProc); |
7149 | 7154 |
7197 NULL, | 7202 NULL, |
7198 windowtype | WS_CHILD | BS_PUSHBUTTON | WS_CLIPCHILDREN | WS_VISIBLE, | 7203 windowtype | WS_CHILD | BS_PUSHBUTTON | WS_CLIPCHILDREN | WS_VISIBLE, |
7199 0,0,0,0, | 7204 0,0,0,0, |
7200 DW_HWND_OBJECT, | 7205 DW_HWND_OBJECT, |
7201 (HMENU)(uintptr_t)id, | 7206 (HMENU)(uintptr_t)id, |
7202 DWInstance, | 7207 _DWInstance, |
7203 NULL); | 7208 NULL); |
7204 | 7209 |
7205 if((cinfo = _dw_window_new_cinfo(tmp, FALSE))) | 7210 if((cinfo = _dw_window_new_cinfo(tmp, FALSE))) |
7206 cinfo->pOldProc = SubclassWindow(tmp, _BtProc); | 7211 cinfo->pOldProc = SubclassWindow(tmp, _BtProc); |
7207 | 7212 |
7280 windowtype | WS_CLIPCHILDREN | | 7285 windowtype | WS_CLIPCHILDREN | |
7281 WS_VISIBLE, | 7286 WS_VISIBLE, |
7282 0,0,0,0, | 7287 0,0,0,0, |
7283 DW_HWND_OBJECT, | 7288 DW_HWND_OBJECT, |
7284 (HMENU)(uintptr_t)id, | 7289 (HMENU)(uintptr_t)id, |
7285 DWInstance, | 7290 _DWInstance, |
7286 NULL ); | 7291 NULL ); |
7287 | 7292 |
7288 if((cinfo = _dw_window_new_cinfo(tmp, FALSE))) | 7293 if((cinfo = _dw_window_new_cinfo(tmp, FALSE))) |
7289 cinfo->pOldProc = SubclassWindow( tmp, _BtProc ); | 7294 cinfo->pOldProc = SubclassWindow( tmp, _BtProc ); |
7290 | 7295 |
7311 WS_CHILD | WS_BORDER | WS_VISIBLE | | 7316 WS_CHILD | WS_BORDER | WS_VISIBLE | |
7312 ES_NUMBER | WS_CLIPCHILDREN, | 7317 ES_NUMBER | WS_CLIPCHILDREN, |
7313 0,0,0,0, | 7318 0,0,0,0, |
7314 DW_HWND_OBJECT, | 7319 DW_HWND_OBJECT, |
7315 NULL, | 7320 NULL, |
7316 DWInstance, | 7321 _DWInstance, |
7317 NULL); | 7322 NULL); |
7318 HWND tmp = CreateWindowEx(WS_EX_CLIENTEDGE, | 7323 HWND tmp = CreateWindowEx(WS_EX_CLIENTEDGE, |
7319 UPDOWN_CLASS, | 7324 UPDOWN_CLASS, |
7320 NULL, | 7325 NULL, |
7321 WS_CHILD | UDS_ALIGNRIGHT | WS_BORDER | | 7326 WS_CHILD | UDS_ALIGNRIGHT | WS_BORDER | |
7322 UDS_ARROWKEYS | UDS_SETBUDDYINT | | 7327 UDS_ARROWKEYS | UDS_SETBUDDYINT | |
7323 UDS_WRAP | UDS_NOTHOUSANDS | WS_VISIBLE, | 7328 UDS_WRAP | UDS_NOTHOUSANDS | WS_VISIBLE, |
7324 0,0,0,0, | 7329 0,0,0,0, |
7325 DW_HWND_OBJECT, | 7330 DW_HWND_OBJECT, |
7326 (HMENU)(uintptr_t)id, | 7331 (HMENU)(uintptr_t)id, |
7327 DWInstance, | 7332 _DWInstance, |
7328 NULL); | 7333 NULL); |
7329 ColorInfo *cinfo; | 7334 ColorInfo *cinfo; |
7330 | 7335 |
7331 SendMessage(tmp, UDM_SETRANGE32, (WPARAM)-65536,(LPARAM)65536); | 7336 SendMessage(tmp, UDM_SETRANGE32, (WPARAM)-65536,(LPARAM)65536); |
7332 SendMessage(tmp, UDM_SETBUDDY, (WPARAM)buddy, 0); | 7337 SendMessage(tmp, UDM_SETBUDDY, (WPARAM)buddy, 0); |
7364 WS_CHILD | BS_AUTORADIOBUTTON | | 7369 WS_CHILD | BS_AUTORADIOBUTTON | |
7365 WS_CLIPCHILDREN | WS_VISIBLE, | 7370 WS_CLIPCHILDREN | WS_VISIBLE, |
7366 0,0,0,0, | 7371 0,0,0,0, |
7367 DW_HWND_OBJECT, | 7372 DW_HWND_OBJECT, |
7368 (HMENU)(uintptr_t)id, | 7373 (HMENU)(uintptr_t)id, |
7369 DWInstance, | 7374 _DWInstance, |
7370 NULL); | 7375 NULL); |
7371 | 7376 |
7372 /* Disable visual styles by default */ | 7377 /* Disable visual styles by default */ |
7373 if(_SetWindowTheme) | 7378 if(_SetWindowTheme) |
7374 _SetWindowTheme(tmp, L"", L""); | 7379 _SetWindowTheme(tmp, L"", L""); |
7395 WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | | 7400 WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | |
7396 (vertical ? TBS_VERT : TBS_HORZ), | 7401 (vertical ? TBS_VERT : TBS_HORZ), |
7397 0,0,0,0, | 7402 0,0,0,0, |
7398 DW_HWND_OBJECT, | 7403 DW_HWND_OBJECT, |
7399 (HMENU)(uintptr_t)id, | 7404 (HMENU)(uintptr_t)id, |
7400 DWInstance, | 7405 _DWInstance, |
7401 NULL); | 7406 NULL); |
7402 | 7407 |
7403 _dw_window_new_cinfo(tmp, TRUE); | 7408 _dw_window_new_cinfo(tmp, TRUE); |
7404 SendMessage(tmp, TBM_SETRANGE, (WPARAM)FALSE, MAKELPARAM(0, increments-1)); | 7409 SendMessage(tmp, TBM_SETRANGE, (WPARAM)FALSE, MAKELPARAM(0, increments-1)); |
7405 return tmp; | 7410 return tmp; |
7419 WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | | 7424 WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | |
7420 (vertical ? SBS_VERT : SBS_HORZ), | 7425 (vertical ? SBS_VERT : SBS_HORZ), |
7421 0,0,0,0, | 7426 0,0,0,0, |
7422 DW_HWND_OBJECT, | 7427 DW_HWND_OBJECT, |
7423 (HMENU)(uintptr_t)id, | 7428 (HMENU)(uintptr_t)id, |
7424 DWInstance, | 7429 _DWInstance, |
7425 NULL); | 7430 NULL); |
7426 | 7431 |
7427 _dw_window_new_cinfo(tmp, TRUE); | 7432 _dw_window_new_cinfo(tmp, TRUE); |
7428 dw_window_set_data(tmp, "_dw_scrollbar", (void *)1); | 7433 dw_window_set_data(tmp, "_dw_scrollbar", (void *)1); |
7429 return tmp; | 7434 return tmp; |
7440 NULL, | 7445 NULL, |
7441 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, | 7446 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, |
7442 0,0,0,0, | 7447 0,0,0,0, |
7443 DW_HWND_OBJECT, | 7448 DW_HWND_OBJECT, |
7444 (HMENU)(uintptr_t)id, | 7449 (HMENU)(uintptr_t)id, |
7445 DWInstance, | 7450 _DWInstance, |
7446 NULL); | 7451 NULL); |
7447 } | 7452 } |
7448 | 7453 |
7449 /* | 7454 /* |
7450 * Create a new checkbox window (widget) to be packed. | 7455 * Create a new checkbox window (widget) to be packed. |
7460 WS_CHILD | BS_AUTOCHECKBOX | | 7465 WS_CHILD | BS_AUTOCHECKBOX | |
7461 BS_TEXT | WS_CLIPCHILDREN | WS_VISIBLE, | 7466 BS_TEXT | WS_CLIPCHILDREN | WS_VISIBLE, |
7462 0,0,0,0, | 7467 0,0,0,0, |
7463 DW_HWND_OBJECT, | 7468 DW_HWND_OBJECT, |
7464 (HMENU)(uintptr_t)id, | 7469 (HMENU)(uintptr_t)id, |
7465 DWInstance, | 7470 _DWInstance, |
7466 NULL); | 7471 NULL); |
7467 | 7472 |
7468 /* Disable visual styles by default */ | 7473 /* Disable visual styles by default */ |
7469 if(_SetWindowTheme) | 7474 if(_SetWindowTheme) |
7470 _SetWindowTheme(tmp, L"", L""); | 7475 _SetWindowTheme(tmp, L"", L""); |
7493 LBS_NOTIFY | WS_BORDER | WS_CLIPCHILDREN | | 7498 LBS_NOTIFY | WS_BORDER | WS_CLIPCHILDREN | |
7494 WS_VSCROLL | (multi ? LBS_MULTIPLESEL : 0) , | 7499 WS_VSCROLL | (multi ? LBS_MULTIPLESEL : 0) , |
7495 0,0,0,0, | 7500 0,0,0,0, |
7496 DW_HWND_OBJECT, | 7501 DW_HWND_OBJECT, |
7497 (HMENU)(uintptr_t)id, | 7502 (HMENU)(uintptr_t)id, |
7498 DWInstance, | 7503 _DWInstance, |
7499 NULL); | 7504 NULL); |
7500 ContainerInfo *cinfo = (ContainerInfo *)calloc(1, sizeof(ContainerInfo)); | 7505 ContainerInfo *cinfo = (ContainerInfo *)calloc(1, sizeof(ContainerInfo)); |
7501 | 7506 |
7502 if(!cinfo) | 7507 if(!cinfo) |
7503 { | 7508 { |
7521 * id: An ID to be used to specify the icon. | 7526 * id: An ID to be used to specify the icon. |
7522 */ | 7527 */ |
7523 void API dw_window_set_icon(HWND handle, HICN icon) | 7528 void API dw_window_set_icon(HWND handle, HICN icon) |
7524 { | 7529 { |
7525 int iicon = DW_POINTER_TO_INT(icon); | 7530 int iicon = DW_POINTER_TO_INT(icon); |
7526 HICON hicon = iicon < 65536 ? LoadIcon(DWInstance, MAKEINTRESOURCE(iicon)) : (HICON)icon; | 7531 HICON hicon = iicon < 65536 ? LoadIcon(_DWInstance, MAKEINTRESOURCE(iicon)) : (HICON)icon; |
7527 | 7532 |
7528 SendMessage(handle, WM_SETICON, | 7533 SendMessage(handle, WM_SETICON, |
7529 (WPARAM) IMAGE_ICON, | 7534 (WPARAM) IMAGE_ICON, |
7530 (LPARAM) hicon); | 7535 (LPARAM) hicon); |
7531 } | 7536 } |
7625 HBITMAP hbitmap = 0; | 7630 HBITMAP hbitmap = 0; |
7626 HANDLE icon = 0; | 7631 HANDLE icon = 0; |
7627 | 7632 |
7628 if(id) | 7633 if(id) |
7629 { | 7634 { |
7630 hbitmap = LoadImage(DWInstance, MAKEINTRESOURCE(id), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS | LR_SHARED); | 7635 hbitmap = LoadImage(_DWInstance, MAKEINTRESOURCE(id), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS | LR_SHARED); |
7631 icon = LoadImage(DWInstance, MAKEINTRESOURCE(id), IMAGE_ICON, 0, 0, LR_SHARED); | 7636 icon = LoadImage(_DWInstance, MAKEINTRESOURCE(id), IMAGE_ICON, 0, 0, LR_SHARED); |
7632 } | 7637 } |
7633 else if(filename) | 7638 else if(filename) |
7634 { | 7639 { |
7635 #ifdef GDIPLUS | 7640 #ifdef GDIPLUS |
7636 hbitmap = _dw_load_bitmap(filename, NULL); | 7641 hbitmap = _dw_load_bitmap(filename, NULL); |
7691 if (icon == 0 && hbitmap == 0) | 7696 if (icon == 0 && hbitmap == 0) |
7692 return; | 7697 return; |
7693 } | 7698 } |
7694 else if ( id ) | 7699 else if ( id ) |
7695 { | 7700 { |
7696 hbitmap = LoadBitmap( DWInstance, MAKEINTRESOURCE(id) ); | 7701 hbitmap = LoadBitmap(_DWInstance, MAKEINTRESOURCE(id)); |
7697 icon = LoadImage( DWInstance, MAKEINTRESOURCE(id), IMAGE_ICON, 0, 0, LR_SHARED ); | 7702 icon = LoadImage(_DWInstance, MAKEINTRESOURCE(id), IMAGE_ICON, 0, 0, LR_SHARED); |
7698 } | 7703 } |
7699 | 7704 |
7700 _dw_window_set_bitmap(handle, icon, hbitmap); | 7705 _dw_window_set_bitmap(handle, icon, hbitmap); |
7701 } | 7706 } |
7702 | 7707 |
9393 void API dw_percent_set_pos(HWND handle, unsigned int position) | 9398 void API dw_percent_set_pos(HWND handle, unsigned int position) |
9394 { | 9399 { |
9395 if(position == DW_PERCENT_INDETERMINATE) | 9400 if(position == DW_PERCENT_INDETERMINATE) |
9396 { | 9401 { |
9397 /* If our common controls supports it... */ | 9402 /* If our common controls supports it... */ |
9398 if((dwComctlVer >= PACKVERSION(6,0))) | 9403 if((_dwComctlVer >= PACKVERSION(6,0))) |
9399 { | 9404 { |
9400 /* Enable the style on the control */ | 9405 /* Enable the style on the control */ |
9401 SetWindowLong(handle, GWL_STYLE, GetWindowLong(handle, GWL_STYLE) | PBS_MARQUEE); | 9406 SetWindowLong(handle, GWL_STYLE, GetWindowLong(handle, GWL_STYLE) | PBS_MARQUEE); |
9402 /* Start the bar going */ | 9407 /* Start the bar going */ |
9403 SendMessage(handle, PBM_SETMARQUEE, 1, 100); | 9408 SendMessage(handle, PBM_SETMARQUEE, 1, 100); |
9405 else | 9410 else |
9406 SendMessage(handle, PBM_SETPOS, 0, 0); | 9411 SendMessage(handle, PBM_SETPOS, 0, 0); |
9407 } | 9412 } |
9408 else | 9413 else |
9409 { | 9414 { |
9410 if((dwComctlVer >= PACKVERSION(6,0))) | 9415 if((_dwComctlVer >= PACKVERSION(6,0))) |
9411 { | 9416 { |
9412 unsigned long style = GetWindowLong(handle, GWL_STYLE); | 9417 unsigned long style = GetWindowLong(handle, GWL_STYLE); |
9413 | 9418 |
9414 if(style & PBS_MARQUEE) | 9419 if(style & PBS_MARQUEE) |
9415 { | 9420 { |
9911 * Windows, on GTK this is converted to a pointer | 9916 * Windows, on GTK this is converted to a pointer |
9912 * to an embedded XPM. | 9917 * to an embedded XPM. |
9913 */ | 9918 */ |
9914 HICN API dw_icon_load(unsigned long module, unsigned long id) | 9919 HICN API dw_icon_load(unsigned long module, unsigned long id) |
9915 { | 9920 { |
9916 return (HICN)LoadIcon(DWInstance, MAKEINTRESOURCE(id)); | 9921 return (HICN)LoadIcon(_DWInstance, MAKEINTRESOURCE(id)); |
9917 } | 9922 } |
9918 | 9923 |
9919 /* | 9924 /* |
9920 * Obtains an icon from a file. | 9925 * Obtains an icon from a file. |
9921 * Parameters: | 9926 * Parameters: |
10882 NULL, | 10887 NULL, |
10883 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, | 10888 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, |
10884 0,0,0,0, | 10889 0,0,0,0, |
10885 DW_HWND_OBJECT, | 10890 DW_HWND_OBJECT, |
10886 (HMENU)(uintptr_t)id, | 10891 (HMENU)(uintptr_t)id, |
10887 DWInstance, | 10892 _DWInstance, |
10888 NULL); | 10893 NULL); |
10889 newbox->pad = 0; | 10894 newbox->pad = 0; |
10890 newbox->type = 0; | 10895 newbox->type = 0; |
10891 newbox->count = 0; | 10896 newbox->count = 0; |
10892 newbox->grouphwnd = (HWND)NULL; | 10897 newbox->grouphwnd = (HWND)NULL; |
11734 if (!(pixmap = calloc(1,sizeof(struct _hpixmap)))) | 11739 if (!(pixmap = calloc(1,sizeof(struct _hpixmap)))) |
11735 return NULL; | 11740 return NULL; |
11736 | 11741 |
11737 hdc = GetDC(handle); | 11742 hdc = GetDC(handle); |
11738 | 11743 |
11739 pixmap->hbm = LoadBitmap(DWInstance, MAKEINTRESOURCE(id)); | 11744 pixmap->hbm = LoadBitmap(_DWInstance, MAKEINTRESOURCE(id)); |
11740 pixmap->hdc = CreateCompatibleDC(hdc); | 11745 pixmap->hdc = CreateCompatibleDC(hdc); |
11741 | 11746 |
11742 GetObject(pixmap->hbm, sizeof(BITMAP), (void *)&bm); | 11747 GetObject(pixmap->hbm, sizeof(BITMAP), (void *)&bm); |
11743 | 11748 |
11744 pixmap->width = bm.bmWidth; pixmap->height = bm.bmHeight; | 11749 pixmap->width = bm.bmWidth; pixmap->height = bm.bmHeight; |
12386 #ifdef AEROGLASS | 12391 #ifdef AEROGLASS |
12387 /* Free any in use libraries */ | 12392 /* Free any in use libraries */ |
12388 FreeLibrary(hdwm); | 12393 FreeLibrary(hdwm); |
12389 #endif | 12394 #endif |
12390 FreeLibrary(huxtheme); | 12395 FreeLibrary(huxtheme); |
12391 DestroyWindow(hwndTooltip); | 12396 DestroyWindow(_dw_tooltip); |
12392 } | 12397 } |
12393 | 12398 |
12394 /* | 12399 /* |
12395 * Cleanly terminates a DW session, should be signal handler safe. | 12400 * Cleanly terminates a DW session, should be signal handler safe. |
12396 * Parameters: | 12401 * Parameters: |
12417 NULL, | 12422 NULL, |
12418 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, | 12423 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, |
12419 0,0,0,0, | 12424 0,0,0,0, |
12420 DW_HWND_OBJECT, | 12425 DW_HWND_OBJECT, |
12421 (HMENU)(uintptr_t)id, | 12426 (HMENU)(uintptr_t)id, |
12422 DWInstance, | 12427 _DWInstance, |
12423 NULL); | 12428 NULL); |
12424 | 12429 |
12425 if(tmp) | 12430 if(tmp) |
12426 { | 12431 { |
12427 HWND tmpbox = dw_box_new(DW_VERT, 0); | 12432 HWND tmpbox = dw_box_new(DW_VERT, 0); |
12495 NULL, | 12500 NULL, |
12496 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | MCS_DAYSTATE, | 12501 WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | MCS_DAYSTATE, |
12497 0,0,0,0, | 12502 0,0,0,0, |
12498 DW_HWND_OBJECT, | 12503 DW_HWND_OBJECT, |
12499 (HMENU)(uintptr_t)id, | 12504 (HMENU)(uintptr_t)id, |
12500 DWInstance, | 12505 _DWInstance, |
12501 NULL); | 12506 NULL); |
12502 if ( tmp ) | 12507 if ( tmp ) |
12503 { | 12508 { |
12504 // Get the size required to show an entire month. | 12509 // Get the size required to show an entire month. |
12505 MonthCal_GetMinReqRect(tmp, &rc); | 12510 MonthCal_GetMinReqRect(tmp, &rc); |
12754 if(!env) | 12759 if(!env) |
12755 return; | 12760 return; |
12756 | 12761 |
12757 /* Get the Windows version. */ | 12762 /* Get the Windows version. */ |
12758 | 12763 |
12759 env->MajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion))); | 12764 env->MajorVersion = (DWORD)(LOBYTE(LOWORD(_dwVersion))); |
12760 env->MinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion))); | 12765 env->MinorVersion = (DWORD)(HIBYTE(LOWORD(_dwVersion))); |
12761 | 12766 |
12762 /* Get the build number for Windows NT/Windows 2000. */ | 12767 /* Get the build number for Windows NT/Windows 2000. */ |
12763 | 12768 |
12764 env->MinorBuild = 0; | 12769 env->MinorBuild = 0; |
12765 | 12770 |
12766 if (dwVersion < 0x80000000) | 12771 if (_dwVersion < 0x80000000) |
12767 { | 12772 { |
12768 if(env->MajorVersion == 5 && env->MinorVersion == 0) | 12773 if(env->MajorVersion == 5 && env->MinorVersion == 0) |
12769 strcpy(env->osName, "Windows 2000"); | 12774 strcpy(env->osName, "Windows 2000"); |
12770 else if(env->MajorVersion == 5 && env->MinorVersion > 0) | 12775 else if(env->MajorVersion == 5 && env->MinorVersion > 0) |
12771 strcpy(env->osName, "Windows XP"); | 12776 strcpy(env->osName, "Windows XP"); |
12778 else if(env->MajorVersion == 10) | 12783 else if(env->MajorVersion == 10) |
12779 strcpy(env->osName, "Windows 10"); | 12784 strcpy(env->osName, "Windows 10"); |
12780 else | 12785 else |
12781 strcpy(env->osName, "Windows NT"); | 12786 strcpy(env->osName, "Windows NT"); |
12782 | 12787 |
12783 env->MajorBuild = (DWORD)(HIWORD(dwVersion)); | 12788 env->MajorBuild = (DWORD)(HIWORD(_dwVersion)); |
12784 } | 12789 } |
12785 else | 12790 else |
12786 { | 12791 { |
12787 strcpy(env->osName, "Windows 95/98/ME"); | 12792 strcpy(env->osName, "Windows 95/98/ME"); |
12788 env->MajorBuild = 0; | 12793 env->MajorBuild = 0; |
12918 | 12923 |
12919 memset( &of, 0, sizeof(OPENFILENAME) ); | 12924 memset( &of, 0, sizeof(OPENFILENAME) ); |
12920 | 12925 |
12921 of.lStructSize = sizeof(OPENFILENAME); | 12926 of.lStructSize = sizeof(OPENFILENAME); |
12922 of.hwndOwner = HWND_DESKTOP; | 12927 of.hwndOwner = HWND_DESKTOP; |
12923 of.hInstance = DWInstance; | 12928 of.hInstance = _DWInstance; |
12924 of.lpstrTitle = UTF8toWide(title); | 12929 of.lpstrTitle = UTF8toWide(title); |
12925 of.lpstrInitialDir = TEXT("."); | 12930 of.lpstrInitialDir = TEXT("."); |
12926 if(att != INVALID_FILE_ATTRIBUTES && (att & FILE_ATTRIBUTE_DIRECTORY)) | 12931 if(att != INVALID_FILE_ATTRIBUTES && (att & FILE_ATTRIBUTE_DIRECTORY)) |
12927 of.lpstrInitialDir = dpath; | 12932 of.lpstrInitialDir = dpath; |
12928 else if(defpath) | 12933 else if(defpath) |