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)