Mercurial > dwindows
diff win/dw.c @ 1314:c969db49606e
Initial commit allowing dw_window_set_style() to work on menu item handles.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Fri, 04 Nov 2011 14:13:38 +0000 |
parents | 47dbe605a03f |
children | 3f1ac800bf65 |
line wrap: on
line diff
--- a/win/dw.c Fri Nov 04 12:30:23 2011 +0000 +++ b/win/dw.c Fri Nov 04 14:13:38 2011 +0000 @@ -6484,14 +6484,30 @@ */ void API dw_window_set_style(HWND handle, ULONG style, ULONG mask) { - ULONG tmp, currentstyle = GetWindowLong(handle, GWL_STYLE); - ColorInfo *cinfo = (ColorInfo *)GetWindowLongPtr(handle, GWLP_USERDATA); + ULONG tmp, currentstyle; + ColorInfo *cinfo; + + if(handle < (HWND)65536) + { + char buffer[31] = {0}; + HMENU mymenu; + ULONG id = (ULONG)handle; + + _snprintf(buffer, 30, "_dw_id%ld", id); + mymenu = (HMENU)dw_window_get_data(DW_HWND_OBJECT, buffer); + + if(mymenu && IsMenu(mymenu)) + dw_menu_item_set_state((HMENUI)mymenu, id, style & mask); + return; + } + + currentstyle = GetWindowLong(handle, GWL_STYLE); + cinfo = (ColorInfo *)GetWindowLongPtr(handle, GWLP_USERDATA); tmp = currentstyle | mask; tmp ^= mask; tmp |= style; - /* We are using SS_NOPREFIX as a VCENTER flag */ if(tmp & SS_NOPREFIX) {