Changeset 49

Show
Ignore:
Timestamp:
05/15/07 19:22:32 (2 years ago)
Author:
lindquist
Message:

win32 updates. combobox now works. almost complete!

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/bughunt/minwin/button.d

    r33 r49  
    8787    private import minwin.mswindows; 
    8888 
    89     const int ButtonClickedCommand = BN_CLICKED; 
     89    enum : int { ButtonClickedCommand = BN_CLICKED } 
    9090 
    9191    template PreferredSizeImpl() { 
  • branches/bughunt/minwin/combo.d

    r33 r49  
    1919} 
    2020 
     21debug import std.stdio; 
     22 
    2123version (MinWin32) { 
    2224 
     
    2729    class ComboBox : WindowChild { 
    2830 
    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 = "") { 
    3332            PeerForAdd parentp = parent.getPeerForAdd(); 
    3433            this.name = name; 
    3534            editable_data = editable; 
    36             int style = editable?(CBS_DROPDOWN|CBS_AUTOHSCROLL):CBS_DROPDOWN
     35            DWORD style =  editable_data ? CBS_DROPDOWN|CBS_AUTOHSCROLL : CBS_DROPDOWNLIST
    3736            peer = CreateWindowX("COMBOBOX","", 
    38                  style | WS_CHILD | WS_VISIBLE, 
     37                 style | WS_VSCROLL | WS_HSCROLL | WS_CHILD | WS_VISIBLE, 
    3938                 0,0,10,10,parentp, 
    4039                 cast(HMENU)0,gApp.hInstance,null); 
    4140            sysAssert(peer !is null, "Failed to create peer ComboBox"); 
    4241            setWindowChildPeer(this,peer,OWNS_PEER); 
    43             foreach (char[] s; text) { 
    44                 SendMessageX(peer,CB_ADDSTRING,0,s); 
    45             } 
    46             this.name = name; 
    4742            Font f = standardFont(StandardFont.Gui); 
    4843            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; 
    4948            parent.addChild(this); 
    5049        } 
     50 
    5151        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; 
    5785            return XY(width,height); 
    5886        } 
    59         // -1 for custom text 
     87 
     88        private bool editable_data; 
     89        bool editable() { return editable_data; } // read-only 
     90 
    6091        int selection() { 
    6192            return SendMessageA(peer,CB_GETCURSEL,0,0); 
     
    6394        void selection(int n) { 
    6495            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); 
    67116        } 
    68117    } 
     
    95144    class ComboBox : WindowChild { 
    96145 
    97         bool editable_data; 
     146        private bool editable_data; 
    98147        bool editable() { return editable_data; } // read-only 
    99148 
  • branches/bughunt/minwin/geometry.d

    r47 r49  
    184184 
    185185    Color systemBackgroundColor() { 
    186         return toColor(GetSysColor(COLOR_WINDOW)); 
     186        return toColor(GetSysColor(COLOR_MENU)); 
    187187    } 
    188188 
  • branches/bughunt/minwin/mswindows.d

    r38 r49  
    3636export int LoadStringW(HINSTANCE inst, LPWSTR id, LPWSTR buf, int siz); 
    3737export int MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType); 
    38 export int GetSystemMetrics(int nIndex); 
    3938 
    4039struct INITCOMMONCONTROLSEX { 
     
    4342} 
    4443enum : 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 = 0x00002000 
     44    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 
    6059} 
    6160export void InitCommonControls(); 
     
    6665 
    6766enum : 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 =           1 
     67    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 
    9392} 
    9493 
     
    102101 
    103102enum : 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            =0x0004 
     103    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 
    121120} 
    122121 
     
    156155 
    157156enum : 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 =              5 
     157    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 
    165164} 
    166165 
     
    170169 
    171170enum : 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      =0x00008000L 
     171    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 
    197196} 
    198197 
     
    276275 */ 
    277276enum : 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 styles 
    325     */ 
    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 messages 
    342     */ 
    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 Styles 
    387     */ 
    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                 =0x0008 
     277    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 
    437436} 
    438437 
     
    470469// PIXELFORMATDESCRIPTOR stuff 
    471470enum : 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 = 0x80000000 
     471    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 
    492491} 
    493492export int ChoosePixelFormat(HDC hdc, PIXELFORMATDESCRIPTOR* ppfd); 
     
    520519export BOOL SwapBuffers(HDC); 
    521520 
     521export int GetSystemMetrics(int nIndex); 
    522522enum : 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 */ 
     601export BOOL SetWindowPos(HWND hWnd,HWND hWndInsertAfter,int X,int Y,int cx,int cy,UINT uFlags); 
     602enum : 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
     621const HWND HWND_TOP = cast(HWND)0; 
     622const HWND HWND_BOTTOM = cast(HWND)1; 
     623const HWND HWND_TOPMOST = cast(HWND)-1; 
     624const HWND HWND_NOTOPMOST = cast(HWND)-2; 
    532625 
    533626// 
     
    605698 * 
    606699 * Authors: 
    607  * yaneurao, Walter Bright, Stewart Gordon 
     700 *  yaneurao, Walter Bright, Stewart Gordon 
    608701 */ 
    609702private import std.windows.syserror; 
     
    613706    foreach (char c; s) 
    614707    { 
    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       
    638731    } 
    639732    reslen = s.length; 
  • branches/bughunt/samples/widgets.d

    r42 r49  
    1616    auto win = new Window("Widgets"); 
    1717    win.quitOnDestroy = true; 
     18    win.backgroundColor = systemBackgroundColor(); 
    1819    win.layoutMgr = new FlowLayout; 
    1920