Changeset 13

Show
Ignore:
Timestamp:
12/06/07 20:42:15 (9 months ago)
Author:
Chris Miller
Message:

Control.onKeyPress and keyPress now take KeyPressEventArgs?.
Fixed MenuItem?.radioCheck.
Added function Control.enableVisualStyle to toggle visual style per control.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/win32/dfl/base.d

    r12 r13  
    852852 
    853853/// 
     854class KeyPressEventArgs: KeyEventArgs 
     855{ 
     856    /// 
     857    this(dchar ch) 
     858    { 
     859        this(ch, (ch >= 'A' && ch <= 'Z') ? Keys.SHIFT : Keys.NONE); 
     860    } 
     861     
     862    /// ditto 
     863    this(dchar ch, Keys modifiers) 
     864    in 
     865    { 
     866        assert((modifiers & Keys.MODIFIERS) == modifiers, "modifiers parameter can only contain modifiers"); 
     867    } 
     868    body 
     869    { 
     870        _keych = ch; 
     871         
     872        int vk; 
     873        if(dfl.internal.utf.useUnicode) 
     874            vk = 0xFF & VkKeyScanW(ch); 
     875        else 
     876            vk = 0xFF & VkKeyScanA(cast(char)ch); 
     877         
     878        super(cast(Keys)(vk | modifiers)); 
     879    } 
     880     
     881     
     882    /// 
     883    final dchar keyChar() // getter 
     884    { 
     885        return _keych; 
     886    } 
     887     
     888     
     889    private: 
     890    dchar _keych; 
     891} 
     892 
     893 
     894/// 
    854895class MouseEventArgs: EventArgs 
    855896{ 
  • trunk/win32/dfl/control.d

    r12 r13  
    38793879     
    38803880    /// 
    3881     protected void onKeyPress(KeyEventArgs kea) 
     3881    protected void onKeyPress(KeyPressEventArgs kea) 
    38823882    { 
    38833883        keyPress(this, kea); 
     
    41024102    protected void onHandleCreated(EventArgs ea) 
    41034103    { 
     4104        if(!(cbits & CBits.VSTYLE)) 
     4105            _disableVisualStyle(); 
     4106         
    41044107        Font fon; 
    41054108        fon = font; 
     
    55635566    Event!(Control, KeyEventArgs) keyDown; /// 
    55645567    //KeyEventHandler keyPress; 
    5565     Event!(Control, KeyEventArgs) keyPress; /// 
     5568    Event!(Control, KeyPressEventArgs) keyPress; /// 
    55665569    //KeyEventHandler keyUp; 
    55675570    Event!(Control, KeyEventArgs) keyUp; /// 
     
    57915794    /+ 
    57925795    // /// 
     5796    // I don't think this is reliable. 
    57935797    final bool hasVisualStyle() // getter 
    57945798    { 
     
    58095813    } 
    58105814    +/ 
     5815     
     5816     
     5817    package final void _disableVisualStyle() 
     5818    { 
     5819        assert(isHandleCreated); 
     5820         
     5821        HMODULE hmuxt; 
     5822        hmuxt = GetModuleHandleA("uxtheme.dll"); 
     5823        if(hmuxt) 
     5824        { 
     5825            auto setWinTheme = cast(typeof(&SetWindowTheme))GetProcAddress(hmuxt, "SetWindowTheme"); 
     5826            if(setWinTheme) 
     5827            { 
     5828                setWinTheme(hwnd, " "w.ptr, " "w.ptr); // Clear the theme. 
     5829            } 
     5830        } 
     5831    } 
     5832     
     5833     
     5834    /// 
     5835    public final void enableVisualStyle(bool byes = true) 
     5836    { 
     5837        if(byes) 
     5838        { 
     5839            if(cbits & CBits.VSTYLE) 
     5840                return; 
     5841            cbits |= CBits.VSTYLE; 
     5842             
     5843            if(isHandleCreated) 
     5844            { 
     5845                _crecreate(); 
     5846            } 
     5847        } 
     5848        else 
     5849        { 
     5850            if(!(cbits & CBits.VSTYLE)) 
     5851                return; 
     5852            cbits &= ~CBits.VSTYLE; 
     5853             
     5854            if(isHandleCreated) 
     5855                _disableVisualStyle(); 
     5856        } 
     5857    } 
    58115858     
    58125859     
     
    64436490            case WM_CHAR: 
    64446491                { 
    6445                     int vk; 
    6446                     if(dfl.internal.utf.useUnicode) 
    6447                         vk = 0xFF & VkKeyScanW(cast(wchar)msg.wParam); 
    6448                     else 
    6449                         vk = 0xFF & VkKeyScanA(cast(char)msg.wParam); 
    6450                     scope KeyEventArgs kea = new KeyEventArgs(cast(Keys)(vk | modifierKeys)); 
    6451                     onKeyPress(kea); 
    6452                     if(kea.handled) 
     6492                    scope KeyPressEventArgs kpea = new KeyPressEventArgs(cast(dchar)msg.wParam, modifierKeys); 
     6493                    onKeyPress(kpea); 
     6494                    if(kpea.handled) 
    64536495                        return true; 
    64546496                } 
     
    66326674        RECREATING = 0x100000, 
    66336675        HAS_LAYOUT = 0x200000, 
     6676        VSTYLE = 0x400000, // If not forced off. 
    66346677    } 
    66356678     
    66366679    //CBits cbits = CBits.ALLOW_LAYOUT; 
    66376680    //CBits cbits = CBits.NONE; 
    6638     CBits cbits = CBits.VISIBLE
     6681    CBits cbits = CBits.VISIBLE | CBits.VSTYLE
    66396682     
    66406683     
  • trunk/win32/dfl/form.d

    r12 r13  
    28332833     
    28342834     
    2835     /+ 
    2836     protected override void onKeyPress(KeyEventArgs ea) 
    2837     { 
    2838         super.onKeyPress(ea); 
    2839          
    2840         if(!ea.handled) 
    2841         { 
    2842             if(ea.keyCode == Keys.ESCAPE) 
    2843             { 
    2844                 if(cancelBtn) 
    2845                 { 
    2846                     cancelBtn.performClick(); 
    2847                     ea.handled = true; 
    2848                 } 
    2849             } 
    2850         } 
    2851     } 
    2852     +/ 
    2853      
    2854      
    28552835    package final bool _dlgescape() 
    28562836    { 
  • trunk/win32/dfl/internal/winapi.d

    r12 r13  
    6262     
    6363    alias ulong DWORDLONG; 
     64     
     65     
     66    alias HRESULT THEMEAPI; 
    6467     
    6568     
     
    27672770    BOOL PatBlt(HDC hdc, int nXLeft, int nYLeft, int nWidth, int nHeight, DWORD dwRop); 
    27682771    HTHEME GetWindowTheme(HWND hWnd); 
     2772    THEMEAPI SetWindowTheme(HWND hwnd, LPCWSTR pszSubAppName, LPCWSTR pszSubIdList); 
    27692773    int SetScrollInfo(HWND hwnd, int fnBar, LPSCROLLINFO lpsi, BOOL fRedraw); 
    27702774    BOOL GetScrollInfo(HWND hwnd, int fnBar, LPSCROLLINFO lpsi); 
  • trunk/win32/dfl/menu.d

    r7 r13  
    188188             
    189189            miparent = cast(MenuItem)mparent; 
    190             if(miparent.parent() && miparent.parent.hmenu) 
     190            if(miparent && miparent.hmenu) 
    191191            { 
    192192                MENUITEMINFOA miiPopup; 
     
    390390    final void radioCheck(bool byes) // setter 
    391391    { 
     392        auto par = parent; 
     393        auto pidx = index; 
     394        if(par) 
     395            par.menuItems._removing(pidx, this); 
     396         
    392397        if(byes) 
    393             _type(_type() | MFT_RADIOCHECK); 
    394         else 
    395             _type(_type() & ~MFT_RADIOCHECK); 
     398            //_type(_type() | MFT_RADIOCHECK); 
     399            fType |= MFT_RADIOCHECK; 
     400        else 
     401            //_type(_type() & ~MFT_RADIOCHECK); 
     402            fType &= ~MFT_RADIOCHECK; 
     403         
     404        if(par) 
     405            par.menuItems._added(pidx, this); 
    396406    } 
    397407     
     
    804814         
    805815         
    806         private: 
     816        package: 
    807817         
    808818        Menu _owner; 
  • trunk/win32/dfl/textbox.d

    r5 r13  
    850850            msg.result = dfl.internal.utf.callWindowProc(textBoxPrevWndProc, msg.hWnd, msg.msg, msg.wParam, msg.lParam); 
    851851    } 
    852      
    853      
    854     /+ 
    855     protected override void onKeyPress(KeyEventArgs ea) 
    856     { 
    857         //super.onKeyPress(ea); 
    858         //if(!ea.handled) 
    859         { 
    860             if(ea.keyCode == Keys.ESCAPE) 
    861             { 
    862                 /+ 
    863                 Form cp; 
    864                 cp = cast(Form)topLevelControl(); 
    865                 if(cp) 
    866                     cp._keypressed(ea); 
    867                 +/ 
    868                 ea.handled = true; 
    869                 // Note: can't let this go unhandled or Windows will close the parent. 
    870                 return; 
    871             } 
    872         } 
    873         super.onKeyPress(ea); 
    874     } 
    875     +/ 
    876852     
    877853