Changeset 49
- Timestamp:
- 05/15/07 19:22:32 (2 years ago)
- Files:
-
- branches/bughunt/minwin/button.d (modified) (1 diff)
- branches/bughunt/minwin/combo.d (modified) (4 diffs)
- branches/bughunt/minwin/geometry.d (modified) (1 diff)
- branches/bughunt/minwin/mswindows.d (modified) (11 diffs)
- branches/bughunt/samples/widgets.d (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/bughunt/minwin/button.d
r33 r49 87 87 private import minwin.mswindows; 88 88 89 const int ButtonClickedCommand = BN_CLICKED;89 enum : int { ButtonClickedCommand = BN_CLICKED } 90 90 91 91 template PreferredSizeImpl() { branches/bughunt/minwin/combo.d
r33 r49 19 19 } 20 20 21 debug import std.stdio; 22 21 23 version (MinWin32) { 22 24 … … 27 29 class ComboBox : WindowChild { 28 30 29 bool editable_data; 30 bool editable() { return editable_data; } // read-only 31 32 this(Component parent, char[][] text, bool editable = true, char[] name = "") { 31 this(Component parent, char[][] texts, bool editable = true, char[] name = "") { 33 32 PeerForAdd parentp = parent.getPeerForAdd(); 34 33 this.name = name; 35 34 editable_data = editable; 36 int style = editable?(CBS_DROPDOWN|CBS_AUTOHSCROLL):CBS_DROPDOWN;35 DWORD style = editable_data ? CBS_DROPDOWN|CBS_AUTOHSCROLL : CBS_DROPDOWNLIST; 37 36 peer = CreateWindowX("COMBOBOX","", 38 style | WS_ CHILD | WS_VISIBLE,37 style | WS_VSCROLL | WS_HSCROLL | WS_CHILD | WS_VISIBLE, 39 38 0,0,10,10,parentp, 40 39 cast(HMENU)0,gApp.hInstance,null); 41 40 sysAssert(peer !is null, "Failed to create peer ComboBox"); 42 41 setWindowChildPeer(this,peer,OWNS_PEER); 43 foreach (char[] s; text) {44 SendMessageX(peer,CB_ADDSTRING,0,s);45 }46 this.name = name;47 42 Font f = standardFont(StandardFont.Gui); 48 43 SendMessageA(peer,WM_SETFONT,cast(WPARAM)f.peer,0); 44 foreach (s; texts) { 45 SendMessageX(peer,CB_ADDSTRING,0,s); 46 } 47 this.name = name; 49 48 parent.addChild(this); 50 49 } 50 51 51 mixin WindowChildImpl!(); 52 Point preferredSize(){ 53 // width = SendMessageA(peer,CB_GETDROPPEDWIDTH,0,0); 54 // height = SendMessageA(peer,CB_GETITEMHEIGHT,cast(WPARAM)-1,0); 55 int width = 75; 56 int height = 63; 52 53 private Point oldSz; 54 override void doCommand(int cmd) { 55 auto nfcode = HIWORD(cmd); 56 if (nfcode == CBN_DROPDOWN) { 57 writefln("Combobox drop down"); 58 Rect r; 59 GetWindowRect(peer, &r.native); 60 oldSz = XY(r.width, r.height); 61 SetWindowPos(peer, null, 0, 0, oldSz.x, oldSz.y*(count+1), 62 SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION); 63 } 64 else if (nfcode == CBN_CLOSEUP) { 65 writefln("Combobox close up"); 66 SetWindowPos(peer, null, 0, 0, oldSz.x, oldSz.y, 67 SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION); 68 } 69 else { 70 super.doCommand(cmd); 71 } 72 } 73 74 override Point preferredSize(){ 75 int width = 75;//SendMessageA(peer,CB_GETDROPPEDWIDTH,0,0); 76 width += 2 * GetSystemMetrics(SM_CXFIXEDFRAME); 77 int itemheight = SendMessageA(peer,CB_GETITEMHEIGHT,cast(WPARAM)-1,0); 78 int buttonheight = GetSystemMetrics(SM_CXVSCROLL); 79 int height = (itemheight>buttonheight?itemheight:buttonheight) 80 + 2 * GetSystemMetrics(SM_CYFIXEDFRAME); 81 if (userPreferredWidth > 0) 82 width = userPreferredWidth; 83 if (userPreferredHeight > 0) 84 height = userPreferredHeight; 57 85 return XY(width,height); 58 86 } 59 // -1 for custom text 87 88 private bool editable_data; 89 bool editable() { return editable_data; } // read-only 90 60 91 int selection() { 61 92 return SendMessageA(peer,CB_GETCURSEL,0,0); … … 63 94 void selection(int n) { 64 95 SendMessageA(peer,CB_SETCURSEL,n,0); 65 version (LOG) log.writefln("number of item is %d", 66 SendMessageA(peer,CB_GETCOUNT,0,0)); 96 } 97 int count() { 98 return cast(int)SendMessageA(peer,CB_GETCOUNT,0,0); 99 } 100 101 char[] text() { 102 if (useWfuncs) { 103 int len = SendMessageW(peer,WM_GETTEXTLENGTH,0,0); 104 scope buffer = new wchar[len+1]; 105 SendMessageW(peer,WM_GETTEXT,cast(WPARAM)(len+1),cast(LPARAM)buffer.ptr); 106 return toUTF8(buffer[0..$-1]); 107 } else { 108 int len = SendMessageA(peer,WM_GETTEXTLENGTH,0,0); 109 scope buffer = new char[len+1]; 110 SendMessageA(peer,WM_GETTEXT,cast(WPARAM)(len+1),cast(LPARAM)buffer.ptr); 111 return fromMBSz(buffer.ptr); 112 } 113 } 114 void text(char[] str) { 115 SendMessageX(peer,WM_SETTEXT,0,str); 67 116 } 68 117 } … … 95 144 class ComboBox : WindowChild { 96 145 97 bool editable_data;146 private bool editable_data; 98 147 bool editable() { return editable_data; } // read-only 99 148 branches/bughunt/minwin/geometry.d
r47 r49 184 184 185 185 Color systemBackgroundColor() { 186 return toColor(GetSysColor(COLOR_ WINDOW));186 return toColor(GetSysColor(COLOR_MENU)); 187 187 } 188 188 branches/bughunt/minwin/mswindows.d
r38 r49 36 36 export int LoadStringW(HINSTANCE inst, LPWSTR id, LPWSTR buf, int siz); 37 37 export int MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType); 38 export int GetSystemMetrics(int nIndex);39 38 40 39 struct INITCOMMONCONTROLSEX { … … 43 42 } 44 43 enum : DWORD { 45 ICC_LISTVIEW_CLASSES = 0x00000001,46 ICC_TREEVIEW_CLASSES = 0x00000002,47 ICC_BAR_CLASSES = 0x00000004,48 ICC_TAB_CLASSES = 0x00000008,49 ICC_UPDOWN_CLASS = 0x00000010,50 ICC_PROGRESS_CLASS = 0x00000020,51 ICC_HOTKEY_CLASS = 0x00000040,52 ICC_ANIMATE_CLASS = 0x00000080,53 ICC_WIN95_CLASSES = 0x000000FF,54 ICC_DATE_CLASSES = 0x00000100,55 ICC_USEREX_CLASSES = 0x00000200,56 ICC_COOL_CLASSES = 0x00000400,57 ICC_INTERNET_CLASSES = 0x00000800,58 ICC_PAGESCROLLER_CLASS = 0x00001000,59 ICC_NATIVEFNTCTL_CLASS = 0x0000200044 ICC_LISTVIEW_CLASSES = 0x00000001, 45 ICC_TREEVIEW_CLASSES = 0x00000002, 46 ICC_BAR_CLASSES = 0x00000004, 47 ICC_TAB_CLASSES = 0x00000008, 48 ICC_UPDOWN_CLASS = 0x00000010, 49 ICC_PROGRESS_CLASS = 0x00000020, 50 ICC_HOTKEY_CLASS = 0x00000040, 51 ICC_ANIMATE_CLASS = 0x00000080, 52 ICC_WIN95_CLASSES = 0x000000FF, 53 ICC_DATE_CLASSES = 0x00000100, 54 ICC_USEREX_CLASSES = 0x00000200, 55 ICC_COOL_CLASSES = 0x00000400, 56 ICC_INTERNET_CLASSES = 0x00000800, 57 ICC_PAGESCROLLER_CLASS = 0x00001000, 58 ICC_NATIVEFNTCTL_CLASS = 0x00002000 60 59 } 61 60 export void InitCommonControls(); … … 66 65 67 66 enum : uint { 68 WM_PAINTICON = 0x0026,69 WM_ICONERASEBKGND = 0x0027,70 WM_NEXTDLGCTL = 0x0028,71 WM_SPOOLERSTATUS = 0x002A,72 WM_DRAWITEM = 0x002B,73 WM_MEASUREITEM = 0x002C,74 WM_DELETEITEM = 0x002D,75 WM_VKEYTOITEM = 0x002E,76 WM_CHARTOITEM = 0x002F,77 WM_SETFONT = 0x0030,78 WM_GETFONT = 0x0031,79 WM_SETHOTKEY = 0x0032,80 WM_GETHOTKEY = 0x0033,81 WM_QUERYDRAGICON = 0x0037,82 WM_COMPAREITEM = 0x0039,83 84 WM_SIZING= 0x0214,85 WM_CAPTURECHANGED= 0x0215,86 WM_MOVING= 0x0216,87 WM_POWERBROADCAST= 0x0218,88 WM_DEVICECHANGE= 0x0219,89 90 DS_MODALFRAME = 0x80,91 ICON_SMALL = 0,92 ICON_BIG = 167 WM_PAINTICON = 0x0026, 68 WM_ICONERASEBKGND = 0x0027, 69 WM_NEXTDLGCTL = 0x0028, 70 WM_SPOOLERSTATUS = 0x002A, 71 WM_DRAWITEM = 0x002B, 72 WM_MEASUREITEM = 0x002C, 73 WM_DELETEITEM = 0x002D, 74 WM_VKEYTOITEM = 0x002E, 75 WM_CHARTOITEM = 0x002F, 76 WM_SETFONT = 0x0030, 77 WM_GETFONT = 0x0031, 78 WM_SETHOTKEY = 0x0032, 79 WM_GETHOTKEY = 0x0033, 80 WM_QUERYDRAGICON = 0x0037, 81 WM_COMPAREITEM = 0x0039, 82 83 WM_SIZING= 0x0214, 84 WM_CAPTURECHANGED= 0x0215, 85 WM_MOVING= 0x0216, 86 WM_POWERBROADCAST= 0x0218, 87 WM_DEVICECHANGE= 0x0219, 88 89 DS_MODALFRAME = 0x80, 90 ICON_SMALL = 0, 91 ICON_BIG = 1 93 92 } 94 93 … … 102 101 103 102 enum : uint { 104 SBM_SETPOS =0x00E0,105 SBM_GETPOS =0x00E1,106 SBM_SETRANGE =0x00E2,107 SBM_SETRANGEREDRAW =0x00E6,108 SBM_GETRANGE =0x00E3,109 SBM_ENABLE_ARROWS =0x00E4,110 SBM_SETSCROLLINFO =0x00E9,111 SBM_GETSCROLLINFO =0x00EA,112 SIF_RANGE =0x0001,113 SIF_PAGE =0x0002,114 SIF_POS =0x0004,115 SIF_DISABLENOSCROLL =0x0008,116 SIF_TRACKPOS =0x0010,117 SIF_ALL =(SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS),118 SW_SCROLLCHILDREN =0x0001,119 SW_INVALIDATE =0x0002,120 SW_ERASE =0x0004103 SBM_SETPOS =0x00E0, 104 SBM_GETPOS =0x00E1, 105 SBM_SETRANGE =0x00E2, 106 SBM_SETRANGEREDRAW =0x00E6, 107 SBM_GETRANGE =0x00E3, 108 SBM_ENABLE_ARROWS =0x00E4, 109 SBM_SETSCROLLINFO =0x00E9, 110 SBM_GETSCROLLINFO =0x00EA, 111 SIF_RANGE =0x0001, 112 SIF_PAGE =0x0002, 113 SIF_POS =0x0004, 114 SIF_DISABLENOSCROLL =0x0008, 115 SIF_TRACKPOS =0x0010, 116 SIF_ALL =(SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS), 117 SW_SCROLLCHILDREN =0x0001, 118 SW_INVALIDATE =0x0002, 119 SW_ERASE =0x0004 121 120 } 122 121 … … 156 155 157 156 enum : uint { 158 GW_HWNDFIRST = 0,159 GW_HWNDLAST = 1,160 GW_HWNDNEXT = 2,161 GW_HWNDPREV = 3,162 GW_OWNER = 4,163 GW_CHILD = 5,164 GW_MAX = 5157 GW_HWNDFIRST = 0, 158 GW_HWNDLAST = 1, 159 GW_HWNDNEXT = 2, 160 GW_HWNDPREV = 3, 161 GW_OWNER = 4, 162 GW_CHILD = 5, 163 GW_MAX = 5 165 164 } 166 165 … … 170 169 171 170 enum : uint { 172 MF_INSERT =0x00000000L,173 MF_CHANGE =0x00000080L,174 MF_APPEND =0x00000100L,175 MF_DELETE =0x00000200L,176 MF_REMOVE =0x00001000L,177 MF_BYCOMMAND =0x00000000L,178 MF_BYPOSITION =0x00000400L,179 MF_SEPARATOR =0x00000800L,180 MF_ENABLED =0x00000000L,181 MF_GRAYED =0x00000001L,182 MF_DISABLED =0x00000002L,183 MF_UNCHECKED =0x00000000L,184 MF_CHECKED =0x00000008L,185 MF_USECHECKBITMAPS =0x00000200L,186 MF_STRING =0x00000000L,187 MF_BITMAP =0x00000004L,188 MF_OWNERDRAW =0x00000100L,189 MF_POPUP =0x00000010L,190 MF_MENUBARBREAK =0x00000020L,191 MF_MENUBREAK =0x00000040L,192 MF_UNHILITE =0x00000000L,193 MF_HILITE =0x00000080L,194 MF_SYSMENU =0x00002000L,195 MF_HELP =0x00004000L,196 MF_MOUSESELECT =0x00008000L171 MF_INSERT =0x00000000L, 172 MF_CHANGE =0x00000080L, 173 MF_APPEND =0x00000100L, 174 MF_DELETE =0x00000200L, 175 MF_REMOVE =0x00001000L, 176 MF_BYCOMMAND =0x00000000L, 177 MF_BYPOSITION =0x00000400L, 178 MF_SEPARATOR =0x00000800L, 179 MF_ENABLED =0x00000000L, 180 MF_GRAYED =0x00000001L, 181 MF_DISABLED =0x00000002L, 182 MF_UNCHECKED =0x00000000L, 183 MF_CHECKED =0x00000008L, 184 MF_USECHECKBITMAPS =0x00000200L, 185 MF_STRING =0x00000000L, 186 MF_BITMAP =0x00000004L, 187 MF_OWNERDRAW =0x00000100L, 188 MF_POPUP =0x00000010L, 189 MF_MENUBARBREAK =0x00000020L, 190 MF_MENUBREAK =0x00000040L, 191 MF_UNHILITE =0x00000000L, 192 MF_HILITE =0x00000080L, 193 MF_SYSMENU =0x00002000L, 194 MF_HELP =0x00004000L, 195 MF_MOUSESELECT =0x00008000L 197 196 } 198 197 … … 276 275 */ 277 276 enum : uint { 278 CB_GETEDITSEL =0x0140,279 CB_LIMITTEXT =0x0141,280 CB_SETEDITSEL =0x0142,281 CB_ADDSTRING =0x0143,282 CB_DELETESTRING =0x0144,283 CB_DIR =0x0145,284 CB_GETCOUNT =0x0146,285 CB_GETCURSEL =0x0147,286 CB_GETLBTEXT =0x0148,287 CB_GETLBTEXTLEN =0x0149,288 CB_INSERTSTRING =0x014A,289 CB_RESETCONTENT =0x014B,290 CB_FINDSTRING =0x014C,291 CB_SELECTSTRING =0x014D,292 CB_SETCURSEL =0x014E,293 CB_SHOWDROPDOWN =0x014F,294 CB_GETITEMDATA =0x0150,295 CB_SETITEMDATA =0x0151,296 CB_GETDROPPEDCONTROLRECT =0x0152,297 CB_SETITEMHEIGHT =0x0153,298 CB_GETITEMHEIGHT =0x0154,299 CB_SETEXTENDEDUI =0x0155,300 CB_GETEXTENDEDUI =0x0156,301 CB_GETDROPPEDSTATE =0x0157,302 CB_FINDSTRINGEXACT =0x0158,303 CB_SETLOCALE =0x0159,304 CB_GETLOCALE =0x015A,305 CB_GETTOPINDEX =0x015b,306 CB_SETTOPINDEX =0x015c,307 CB_GETHORIZONTALEXTENT =0x015d,308 CB_SETHORIZONTALEXTENT =0x015e,309 CB_GETDROPPEDWIDTH =0x015f,310 CB_SETDROPPEDWIDTH =0x0160,311 CB_INITSTORAGE =0x0161,312 CBN_SELCHANGE =1,313 CBN_DBLCLK =2,314 CBN_SETFOCUS =3,315 CBN_KILLFOCUS =4,316 CBN_EDITCHANGE =5,317 CBN_EDITUPDATE =6,318 CBN_DROPDOWN =7,319 CBN_CLOSEUP =8,320 CBN_SELENDOK =9,321 CBN_SELENDCANCEL =10,322 323 /*324 * Combo Box styles325 */326 CBS_SIMPLE =0x0001L,327 CBS_DROPDOWN =0x0002L,328 CBS_DROPDOWNLIST =0x0003L,329 CBS_OWNERDRAWFIXED =0x0010L,330 CBS_OWNERDRAWVARIABLE =0x0020L,331 CBS_AUTOHSCROLL =0x0040L,332 CBS_OEMCONVERT =0x0080L,333 CBS_SORT =0x0100L,334 CBS_HASSTRINGS =0x0200L,335 CBS_NOINTEGRALHEIGHT =0x0400L,336 CBS_DISABLENOSCROLL =0x0800L,337 CBS_UPPERCASE =0x2000L,338 CBS_LOWERCASE =0x4000L,339 340 /*341 * Listbox messages342 */343 LB_ADDSTRING =0x0180,344 LB_INSERTSTRING =0x0181,345 LB_DELETESTRING =0x0182,346 LB_SELITEMRANGEEX =0x0183,347 LB_RESETCONTENT =0x0184,348 LB_SETSEL =0x0185,349 LB_SETCURSEL =0x0186,350 LB_GETSEL =0x0187,351 LB_GETCURSEL =0x0188,352 LB_GETTEXT =0x0189,353 LB_GETTEXTLEN =0x018A,354 LB_GETCOUNT =0x018B,355 LB_SELECTSTRING =0x018C,356 LB_DIR =0x018D,357 LB_GETTOPINDEX =0x018E,358 LB_FINDSTRING =0x018F,359 LB_GETSELCOUNT =0x0190,360 LB_GETSELITEMS =0x0191,361 LB_SETTABSTOPS =0x0192,362 LB_GETHORIZONTALEXTENT =0x0193,363 LB_SETHORIZONTALEXTENT =0x0194,364 LB_SETCOLUMNWIDTH =0x0195,365 LB_ADDFILE =0x0196,366 LB_SETTOPINDEX =0x0197,367 LB_GETITEMRECT =0x0198,368 LB_GETITEMDATA =0x0199,369 LB_SETITEMDATA =0x019A,370 LB_SELITEMRANGE =0x019B,371 LB_SETANCHORINDEX =0x019C,372 LB_GETANCHORINDEX =0x019D,373 LB_SETCARETINDEX =0x019E,374 LB_GETCARETINDEX =0x019F,375 LB_SETITEMHEIGHT =0x01A0,376 LB_GETITEMHEIGHT =0x01A1,377 LB_FINDSTRINGEXACT =0x01A2,378 LB_SETLOCALE =0x01A5,379 LB_GETLOCALE =0x01A6,380 LB_SETCOUNT =0x01A7,381 LB_INITSTORAGE =0x01A8,382 LB_ITEMFROMPOINT =0x01A9,383 384 385 /*386 * Listbox Styles387 */388 LBS_NOTIFY =0x0001L,389 LBS_SORT =0x0002L,390 LBS_NOREDRAW =0x0004L,391 LBS_MULTIPLESEL =0x0008L,392 LBS_OWNERDRAWFIXED =0x0010L,393 LBS_OWNERDRAWVARIABLE =0x0020L,394 LBS_HASSTRINGS =0x0040L,395 LBS_USETABSTOPS =0x0080L,396 LBS_NOINTEGRALHEIGHT =0x0100L,397 LBS_MULTICOLUMN =0x0200L,398 LBS_WANTKEYBOARDINPUT =0x0400L,399 LBS_EXTENDEDSEL =0x0800L,400 LBS_DISABLENOSCROLL =0x1000L,401 LBS_NODATA =0x2000L,402 LBS_NOSEL =0x4000L,403 LBS_STANDARD =(LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER),404 405 OFN_READONLY =0x00000001,406 OFN_OVERWRITEPROMPT =0x00000002,407 OFN_HIDEREADONLY =0x00000004,408 OFN_NOCHANGEDIR =0x00000008,409 OFN_SHOWHELP =0x00000010,410 OFN_ENABLEHOOK =0x00000020,411 OFN_ENABLETEMPLATE =0x00000040,412 OFN_ENABLETEMPLATEHANDLE =0x00000080,413 OFN_NOVALIDATE =0x00000100,414 OFN_ALLOWMULTISELECT =0x00000200,415 OFN_EXTENSIONDIFFERENT =0x00000400,416 OFN_PATHMUSTEXIST =0x00000800,417 OFN_FILEMUSTEXIST =0x00001000,418 OFN_CREATEPROMPT =0x00002000,419 OFN_SHAREAWARE =0x00004000,420 OFN_NOREADONLYRETURN =0x00008000,421 OFN_NOTESTFILECREATE =0x00010000,422 OFN_NONETWORKBUTTON =0x00020000,423 OFN_NOLONGNAMES =0x00040000,424 OFN_EXPLORER =0x00080000,425 OFN_NODEREFERENCELINKS =0x00100000,426 OFN_LONGNAMES =0x00200000,427 428 SBS_HORZ =0x0000,429 SBS_VERT =0x0001,430 SBS_TOPALIGN =0x0002,431 SBS_LEFTALIGN =0x0002,432 SBS_BOTTOMALIGN =0x0004,433 SBS_RIGHTALIGN =0x0004,434 SBS_SIZEBOXTOPLEFTALIGN =0x0002,435 SBS_SIZEBOXBOTTOMRIGHTALIGN =0x0004,436 SBS_SIZEBOX =0x0008277 CB_GETEDITSEL =0x0140, 278 CB_LIMITTEXT =0x0141, 279 CB_SETEDITSEL =0x0142, 280 CB_ADDSTRING =0x0143, 281 CB_DELETESTRING =0x0144, 282 CB_DIR =0x0145, 283 CB_GETCOUNT =0x0146, 284 CB_GETCURSEL =0x0147, 285 CB_GETLBTEXT =0x0148, 286 CB_GETLBTEXTLEN =0x0149, 287 CB_INSERTSTRING =0x014A, 288 CB_RESETCONTENT =0x014B, 289 CB_FINDSTRING =0x014C, 290 CB_SELECTSTRING =0x014D, 291 CB_SETCURSEL =0x014E, 292 CB_SHOWDROPDOWN =0x014F, 293 CB_GETITEMDATA =0x0150, 294 CB_SETITEMDATA =0x0151, 295 CB_GETDROPPEDCONTROLRECT =0x0152, 296 CB_SETITEMHEIGHT =0x0153, 297 CB_GETITEMHEIGHT =0x0154, 298 CB_SETEXTENDEDUI =0x0155, 299 CB_GETEXTENDEDUI =0x0156, 300 CB_GETDROPPEDSTATE =0x0157, 301 CB_FINDSTRINGEXACT =0x0158, 302 CB_SETLOCALE =0x0159, 303 CB_GETLOCALE =0x015A, 304 CB_GETTOPINDEX =0x015b, 305 CB_SETTOPINDEX =0x015c, 306 CB_GETHORIZONTALEXTENT =0x015d, 307 CB_SETHORIZONTALEXTENT =0x015e, 308 CB_GETDROPPEDWIDTH =0x015f, 309 CB_SETDROPPEDWIDTH =0x0160, 310 CB_INITSTORAGE =0x0161, 311 CBN_SELCHANGE =1, 312 CBN_DBLCLK =2, 313 CBN_SETFOCUS =3, 314 CBN_KILLFOCUS =4, 315 CBN_EDITCHANGE =5, 316 CBN_EDITUPDATE =6, 317 CBN_DROPDOWN =7, 318 CBN_CLOSEUP =8, 319 CBN_SELENDOK =9, 320 CBN_SELENDCANCEL =10, 321 322 /* 323 * Combo Box styles 324 */ 325 CBS_SIMPLE =0x0001L, 326 CBS_DROPDOWN =0x0002L, 327 CBS_DROPDOWNLIST =0x0003L, 328 CBS_OWNERDRAWFIXED =0x0010L, 329 CBS_OWNERDRAWVARIABLE =0x0020L, 330 CBS_AUTOHSCROLL =0x0040L, 331 CBS_OEMCONVERT =0x0080L, 332 CBS_SORT =0x0100L, 333 CBS_HASSTRINGS =0x0200L, 334 CBS_NOINTEGRALHEIGHT =0x0400L, 335 CBS_DISABLENOSCROLL =0x0800L, 336 CBS_UPPERCASE =0x2000L, 337 CBS_LOWERCASE =0x4000L, 338 339 /* 340 * Listbox messages 341 */ 342 LB_ADDSTRING =0x0180, 343 LB_INSERTSTRING =0x0181, 344 LB_DELETESTRING =0x0182, 345 LB_SELITEMRANGEEX =0x0183, 346 LB_RESETCONTENT =0x0184, 347 LB_SETSEL =0x0185, 348 LB_SETCURSEL =0x0186, 349 LB_GETSEL =0x0187, 350 LB_GETCURSEL =0x0188, 351 LB_GETTEXT =0x0189, 352 LB_GETTEXTLEN =0x018A, 353 LB_GETCOUNT =0x018B, 354 LB_SELECTSTRING =0x018C, 355 LB_DIR =0x018D, 356 LB_GETTOPINDEX =0x018E, 357 LB_FINDSTRING =0x018F, 358 LB_GETSELCOUNT =0x0190, 359 LB_GETSELITEMS =0x0191, 360 LB_SETTABSTOPS =0x0192, 361 LB_GETHORIZONTALEXTENT =0x0193, 362 LB_SETHORIZONTALEXTENT =0x0194, 363 LB_SETCOLUMNWIDTH =0x0195, 364 LB_ADDFILE =0x0196, 365 LB_SETTOPINDEX =0x0197, 366 LB_GETITEMRECT =0x0198, 367 LB_GETITEMDATA =0x0199, 368 LB_SETITEMDATA =0x019A, 369 LB_SELITEMRANGE =0x019B, 370 LB_SETANCHORINDEX =0x019C, 371 LB_GETANCHORINDEX =0x019D, 372 LB_SETCARETINDEX =0x019E, 373 LB_GETCARETINDEX =0x019F, 374 LB_SETITEMHEIGHT =0x01A0, 375 LB_GETITEMHEIGHT =0x01A1, 376 LB_FINDSTRINGEXACT =0x01A2, 377 LB_SETLOCALE =0x01A5, 378 LB_GETLOCALE =0x01A6, 379 LB_SETCOUNT =0x01A7, 380 LB_INITSTORAGE =0x01A8, 381 LB_ITEMFROMPOINT =0x01A9, 382 383 384 /* 385 * Listbox Styles 386 */ 387 LBS_NOTIFY =0x0001L, 388 LBS_SORT =0x0002L, 389 LBS_NOREDRAW =0x0004L, 390 LBS_MULTIPLESEL =0x0008L, 391 LBS_OWNERDRAWFIXED =0x0010L, 392 LBS_OWNERDRAWVARIABLE =0x0020L, 393 LBS_HASSTRINGS =0x0040L, 394 LBS_USETABSTOPS =0x0080L, 395 LBS_NOINTEGRALHEIGHT =0x0100L, 396 LBS_MULTICOLUMN =0x0200L, 397 LBS_WANTKEYBOARDINPUT =0x0400L, 398 LBS_EXTENDEDSEL =0x0800L, 399 LBS_DISABLENOSCROLL =0x1000L, 400 LBS_NODATA =0x2000L, 401 LBS_NOSEL =0x4000L, 402 LBS_STANDARD =(LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER), 403 404 OFN_READONLY =0x00000001, 405 OFN_OVERWRITEPROMPT =0x00000002, 406 OFN_HIDEREADONLY =0x00000004, 407 OFN_NOCHANGEDIR =0x00000008, 408 OFN_SHOWHELP =0x00000010, 409 OFN_ENABLEHOOK =0x00000020, 410 OFN_ENABLETEMPLATE =0x00000040, 411 OFN_ENABLETEMPLATEHANDLE =0x00000080, 412 OFN_NOVALIDATE =0x00000100, 413 OFN_ALLOWMULTISELECT =0x00000200, 414 OFN_EXTENSIONDIFFERENT =0x00000400, 415 OFN_PATHMUSTEXIST =0x00000800, 416 OFN_FILEMUSTEXIST =0x00001000, 417 OFN_CREATEPROMPT =0x00002000, 418 OFN_SHAREAWARE =0x00004000, 419 OFN_NOREADONLYRETURN =0x00008000, 420 OFN_NOTESTFILECREATE =0x00010000, 421 OFN_NONETWORKBUTTON =0x00020000, 422 OFN_NOLONGNAMES =0x00040000, 423 OFN_EXPLORER =0x00080000, 424 OFN_NODEREFERENCELINKS =0x00100000, 425 OFN_LONGNAMES =0x00200000, 426 427 SBS_HORZ =0x0000, 428 SBS_VERT =0x0001, 429 SBS_TOPALIGN =0x0002, 430 SBS_LEFTALIGN =0x0002, 431 SBS_BOTTOMALIGN =0x0004, 432 SBS_RIGHTALIGN =0x0004, 433 SBS_SIZEBOXTOPLEFTALIGN =0x0002, 434 SBS_SIZEBOXBOTTOMRIGHTALIGN =0x0004, 435 SBS_SIZEBOX =0x0008 437 436 } 438 437 … … 470 469 // PIXELFORMATDESCRIPTOR stuff 471 470 enum : uint { 472 PFD_TYPE_RGBA = 0,473 PFD_TYPE_COLORINDEX = 1,474 PFD_MAIN_PLANE = 0,475 PFD_OVERLAY_PLANE = 1,476 PFD_DOUBLEBUFFER = 1,477 PFD_STEREO = 2,478 PFD_DRAW_TO_WINDOW = 4,479 PFD_DRAW_TO_BITMAP = 8,480 PFD_SUPPORT_GDI = 16,481 PFD_SUPPORT_OPENGL = 32,482 PFD_GENERIC_FORMAT = 64,483 PFD_NEED_PALETTE = 128,484 PFD_NEED_SYSTEM_PALETTE = 0x00000100,485 PFD_SWAP_EXCHANGE = 0x00000200,486 PFD_SWAP_COPY = 0x00000400,487 PFD_SWAP_LAYER_BUFFERS = 0x00000800,488 PFD_GENERIC_ACCELERATED = 0x00001000,489 PFD_DEPTH_DONTCARE = 0x20000000,490 PFD_DOUBLEBUFFER_DONTCARE = 0x40000000,491 PFD_STEREO_DONTCARE = 0x80000000471 PFD_TYPE_RGBA = 0, 472 PFD_TYPE_COLORINDEX = 1, 473 PFD_MAIN_PLANE = 0, 474 PFD_OVERLAY_PLANE = 1, 475 PFD_DOUBLEBUFFER = 1, 476 PFD_STEREO = 2, 477 PFD_DRAW_TO_WINDOW = 4, 478 PFD_DRAW_TO_BITMAP = 8, 479 PFD_SUPPORT_GDI = 16, 480 PFD_SUPPORT_OPENGL = 32, 481 PFD_GENERIC_FORMAT = 64, 482 PFD_NEED_PALETTE = 128, 483 PFD_NEED_SYSTEM_PALETTE = 0x00000100, 484 PFD_SWAP_EXCHANGE = 0x00000200, 485 PFD_SWAP_COPY = 0x00000400, 486 PFD_SWAP_LAYER_BUFFERS = 0x00000800, 487 PFD_GENERIC_ACCELERATED = 0x00001000, 488 PFD_DEPTH_DONTCARE = 0x20000000, 489 PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, 490 PFD_STEREO_DONTCARE = 0x80000000 492 491 } 493 492 export int ChoosePixelFormat(HDC hdc, PIXELFORMATDESCRIPTOR* ppfd); … … 520 519 export BOOL SwapBuffers(HDC); 521 520 521 export int GetSystemMetrics(int nIndex); 522 522 enum : int { 523 SM_CXBORDER = 5, 524 SM_CYBORDER = 5, 525 SM_CXFIXEDFRAME = 7, 526 SM_CYFIXEDFRAME = 8, 527 SM_CXEDGE = 45, 528 SM_CYEDGE= 46, 529 SM_CXMENUCHECK = 71, 530 SM_CYMENUCHECK = 72 531 } 523 SM_CXSCREEN = 0, 524 SM_CYSCREEN = 1, 525 SM_CXVSCROLL = 2, 526 SM_CYHSCROLL = 3, 527 SM_CYCAPTION = 4, 528 SM_CXBORDER = 5, 529 SM_CYBORDER = 6, 530 SM_CXDLGFRAME = 7, 531 SM_CYDLGFRAME = 8, 532 SM_CYVTHUMB = 9, 533 SM_CXHTHUMB = 10, 534 SM_CXICON = 11, 535 SM_CYICON = 12, 536 SM_CXCURSOR = 13, 537 SM_CYCURSOR = 14, 538 SM_CYMENU = 15, 539 SM_CXFULLSCREEN = 16, 540 SM_CYFULLSCREEN = 17, 541 SM_CYKANJIWINDOW = 18, 542 SM_MOUSEPRESENT = 19, 543 SM_CYVSCROLL = 20, 544 SM_CXHSCROLL = 21, 545 SM_DEBUG = 22, 546 SM_SWAPBUTTON = 23, 547 SM_CXMIN = 28, 548 SM_CYMIN = 29, 549 SM_CXSIZE = 30, 550 SM_CYSIZE = 31, 551 SM_CXFRAME = 32, 552 SM_CYFRAME = 33, 553 SM_CXMINTRACK = 34, 554 SM_CYMINTRACK = 35, 555 SM_CXDOUBLECLK = 36, 556 SM_CYDOUBLECLK = 37, 557 SM_CXICONSPACING = 38, 558 SM_CYICONSPACING = 39, 559 SM_MENUDROPALIGNMENT = 40, 560 SM_PENWINDOWS = 41, 561 SM_DBCSENABLED = 42, 562 SM_CMOUSEBUTTONS = 43, 563 SM_CXFIXEDFRAME = SM_CXDLGFRAME, 564 SM_CYFIXEDFRAME = SM_CYDLGFRAME, 565 SM_CXSIZEFRAME = SM_CXFRAME, 566 SM_CYSIZEFRAME = SM_CYFRAME, 567 SM_SECURE = 44, 568 SM_CXEDGE = 45, 569 SM_CYEDGE = 46, 570 SM_CXMINSPACING = 47, 571 SM_CYMINSPACING = 48, 572 SM_CXSMICON = 49, 573 SM_CYSMICON = 50, 574 SM_CYSMCAPTION = 51, 575 SM_CXSMSIZE = 52, 576 SM_CYSMSIZE = 53, 577 SM_CXMENUSIZE = 54, 578 SM_CYMENUSIZE = 55, 579 SM_ARRANGE = 56, 580 SM_CXMINIMIZED = 57, 581 SM_CYMINIMIZED = 58, 582 SM_CXMAXTRACK = 59, 583 SM_CYMAXTRACK = 60, 584 SM_CXMAXIMIZED = 61, 585 SM_CYMAXIMIZED = 62, 586 SM_NETWORK = 63, 587 SM_CLEANBOOT = 67, 588 SM_CXDRAG = 68, 589 SM_CYDRAG = 69, 590 SM_SHOWSOUNDS = 70, 591 SM_CXMENUCHECK = 71, 592 SM_CYMENUCHECK = 72, 593 SM_SLOWMACHINE = 73, 594 SM_MIDEASTENABLED = 74, 595 SM_MOUSEWHEELPRESENT = 75 596 } 597 598 /* 599 * SetWindowPos Flags 600 */ 601 export BOOL SetWindowPos(HWND hWnd,HWND hWndInsertAfter,int X,int Y,int cx,int cy,UINT uFlags); 602 enum : uint { 603 SWP_NOSIZE = 0x0001, 604 SWP_NOMOVE = 0x0002, 605 SWP_NOZORDER = 0x0004, 606 SWP_NOREDRAW = 0x0008, 607 SWP_NOACTIVATE = 0x0010, 608 SWP_FRAMECHANGED = 0x0020, /* The frame changed: send WM_NCCALCSIZE */ 609 SWP_SHOWWINDOW = 0x0040, 610 SWP_HIDEWINDOW = 0x0080, 611 SWP_NOCOPYBITS = 0x0100, 612 SWP_NOOWNERZORDER = 0x0200, /* Don't do owner Z ordering */ 613 SWP_NOSENDCHANGING = 0x0400, /* Don't send WM_WINDOWPOSCHANGING */ 614 615 SWP_DRAWFRAME = SWP_FRAMECHANGED, 616 SWP_NOREPOSITION = SWP_NOOWNERZORDER, 617 618 SWP_DEFERERASE = 0x2000, 619 SWP_ASYNCWINDOWPOS = 0x4000 620 } 621 const HWND HWND_TOP = cast(HWND)0; 622 const HWND HWND_BOTTOM = cast(HWND)1; 623 const HWND HWND_TOPMOST = cast(HWND)-1; 624 const HWND HWND_NOTOPMOST = cast(HWND)-2; 532 625 533 626 // … … 605 698 * 606 699 * Authors: 607 * yaneurao, Walter Bright, Stewart Gordon700 * yaneurao, Walter Bright, Stewart Gordon 608 701 */ 609 702 private import std.windows.syserror; … … 613 706 foreach (char c; s) 614 707 { 615 if (c >= 0x80)616 {617 char[] result;618 int readLen;619 wchar* ws = std.utf.toUTF16z(s);620 result.length = WideCharToMultiByte(codePage, 0, ws, -1, null, 0,621 null, null);622 623 if (result.length)624 {625 readLen = WideCharToMultiByte(codePage, 0, ws, -1, result.ptr,626 result.length, null, null);627 }628 629 if (!readLen || readLen != result.length)630 {631 throw new Exception("Couldn't convert string: " ~632 sysErrorString(GetLastError()));633 }634 635 reslen = result.length ? result.length-1 : 0;636 return result.ptr;637 }708 if (c >= 0x80) 709 { 710 char[] result; 711 int readLen; 712 wchar* ws = std.utf.toUTF16z(s); 713 result.length = WideCharToMultiByte(codePage, 0, ws, -1, null, 0, 714 null, null); 715 716 if (result.length) 717 { 718 readLen = WideCharToMultiByte(codePage, 0, ws, -1, result.ptr, 719 result.length, null, null); 720 } 721 722 if (!readLen || readLen != result.length) 723 { 724 throw new Exception("Couldn't convert string: " ~ 725 sysErrorString(GetLastError())); 726 } 727 728 reslen = result.length ? result.length-1 : 0; 729 return result.ptr; 730 } 638 731 } 639 732 reslen = s.length; branches/bughunt/samples/widgets.d
r42 r49 16 16 auto win = new Window("Widgets"); 17 17 win.quitOnDestroy = true; 18 win.backgroundColor = systemBackgroundColor(); 18 19 win.layoutMgr = new FlowLayout; 19 20
