找回密码
 加入
搜索
查看: 9272|回复: 20

[AU3基础] 求助:这个是什么控件呢?

 火.. [复制链接]
发表于 2011-3-16 14:37:15 | 显示全部楼层 |阅读模式
本帖最后由 awfymwvf 于 2011-3-16 14:38 编辑

我看了这个贴子:
http://www.autoitx.com/forum.php ... =%B9%F6%B6%AF%CC%F5



这界面是如何做出来的。这个软件安装器是读取INI来创建每一行的。也就是说是动态创建的。

这到底是个什么控件呢。是多个控件在一起,还是一个自己设计的控件呢?

如果自已创建。左边的各项都是动态创建的。右边的滚动条怎么实现呢?

自己想了好久也没想出来。唉。。。。

望各位大侠给解惑。谢谢大家了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-3-16 19:39:44 | 显示全部楼层
回复 1# awfymwvf

用 Au3Info 能看到,大概就是标签 + 图片之类,只是不知如何滚动。。。。
发表于 2011-3-16 21:23:53 | 显示全部楼层
随便写了一个,有点乱,但原理是差不多的
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>
#include <StaticConstants.au3>
#include <Array.au3>


$GUI = GUICreate("Form1", 700, 500)
GUISetBkColor(0xf3f3f3)

Global $ItemArray[1][4]
_AddGUI($GUI)

GUISetState()


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $ItemArray[1][0] To $ItemArray[$ItemArray[0][0]][0]                ;CHECKBOX
                        If GUICtrlRead($nmsg) = 1 Then
                                $v = _ArraySearch($ItemArray, $nMsg, 1, -1, -1, -1, -1, 0)
                                If $ItemArray[$v][0] = $nMsg Then
                                        GUICtrlSetBkColor($ItemArray[$ItemArray[0][1]][1], $GUI_BKCOLOR_TRANSPARENT)
                                        GUICtrlSetColor($ItemArray[$ItemArray[0][1]][2], 0x0000ff)
                                        GUICtrlSetColor($ItemArray[$ItemArray[0][1]][3], 0x0000ff)                        
                                        
                                        GUICtrlSetBkColor($ItemArray[$v][1], 0x00a8ec)                                
                                        GUICtrlSetColor($ItemArray[$v][2], 0xffffff)
                                        GUICtrlSetColor($ItemArray[$v][3], 0xffffff)                                
                                        $ItemArray[0][1] = $v
                                EndIf
                        EndIf
                EndSwitch
WEnd

Func _AddGUI($GUI)
        $Item_GUI = GUICreate("", 550, 400, 120, 70, $WS_CHILD, "", $GUI)
        GUISetBkColor(0xffffff)
        GUISetState()
        
        Local $ItemNum = 12, $x = 10, $y = 0, $ItemH = 60, $ItemW = 520
        For $i = 1 To $ItemNum
                GUICtrlCreateGraphic($x, $y+$ItemH, $ItemW, 1, $SS_ETCHEDHORZ) ;建立分割线
                
                ReDim $ItemArray[UBound($ItemArray)+1][4]
                                
                $ItemArray[UBound($ItemArray)-1][0] = GUICtrlCreateCheckbox("", $x+5, $y+25, 15, 15)        ;CHECKBOX
                $ItemArray[UBound($ItemArray)-1][1] = GUICtrlCreateLabel("", $x+30, $y, 490, $ItemH)        ;背景框
                        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
                        GUICtrlSetState(-1, $GUI_DISABLE)
                GUICtrlCreateLabel($i & "-" & Random(1111111, 9999999, 1), $x+40, $y+15, 200, 25)                ;项目文本
                        GUICtrlSetFont(-1, 16, 800)
                        GUICtrlSetColor(-1, 0x0000ff)
                        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
                GUICtrlCreateLabel("说明文本:" & Random(1111111, 9999999, 1), $x+40, $y+40, 200, 25)        ;项目说明文本
                        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
                $ItemArray[UBound($ItemArray)-1][2] = GUICtrlCreateLabel("手动安装", $x+340, $y+22, 50, 20)
                        GUICtrlSetFont(-1, 9, 400, 4)
                        GUICtrlSetCursor(-1, 0)
                        GUICtrlSetColor(-1, 0x0000ff)
                        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
                $ItemArray[UBound($ItemArray)-1][3] = GUICtrlCreateLabel("自动安装", $x+420, $y+22, 50, 20)
                        GUICtrlSetFont(-1, 9, 400, 4)
                        GUICtrlSetCursor(-1, 0)
                        GUICtrlSetColor(-1, 0x0000ff)
                        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)                        
                $ItemArray[0][0] = UBound($ItemArray)-1
                $y += $ItemH
        Next
        GUIRegisterMsg($WM_SIZE, "WM_SIZE")
        GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
        _GUIScrollBars_Init($Item_GUI, 0, $ItemH*$ItemNum*0.059)                                ;初始化滚动条 上下值的最佳比例是 项目数*单项的高*0.059
        GUISwitch($GUI)
EndFunc


Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)                        ;设置垂直滚动条
        #forceref $Msg, $wParam, $lParam
        Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
        Local $index = -1, $yChar, $yPos
        Local $Min, $Max, $Page, $Pos, $TrackPos

        For $x = 0 To UBound($aSB_WindowInfo) - 1
                If $aSB_WindowInfo[$x][0] = $hWnd Then
                        $index = $x
                        $yChar = $aSB_WindowInfo[$index][3]
                        ExitLoop
                EndIf
        Next
        If $index = -1 Then Return 0


        ;获取所有垂直滚动条信息
        Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
        $Min = DllStructGetData($tSCROLLINFO, "nMin")
        $Max = DllStructGetData($tSCROLLINFO, "nMax")
        $Page = DllStructGetData($tSCROLLINFO, "nPage")
        ;为稍后进行比较保存位置
        $yPos = DllStructGetData($tSCROLLINFO, "nPos")
        $Pos = $yPos
        $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")

        Switch $nScrollCode
        Case $SB_TOP ;点击HOME键盘键
                DllStructSetData($tSCROLLINFO, "nPos", $Min)

        Case $SB_BOTTOM ;点击END键盘键
                DllStructSetData($tSCROLLINFO, "nPos", $Max)

    Case $SB_LINEUP ;点击顶端箭头
                DllStructSetData($tSCROLLINFO, "nPos", $Pos - 1)

        Case $SB_LINEDOWN ;点击底部箭头
                DllStructSetData($tSCROLLINFO, "nPos", $Pos + 1)

        Case $SB_PAGEUP ;点击滚动箱上端的快速滚动
                DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)

        Case $SB_PAGEDOWN ;点击滚动箱上端的快速滚动
                DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)

        Case $SB_THUMBTRACK ;拖动滚动箱
                DllStructSetData($tSCROLLINFO, "nPos", $TrackPos)
        EndSwitch
 
        ;~ // 设置位置然后修正它. 由于窗口的调整可能会和设置的值不同.

        DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
        _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
        _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
        ;// 如果位置改变, 滚动窗口并升级
        $Pos = DllStructGetData($tSCROLLINFO, "nPos")

        If ($Pos <> $yPos) Then
                _GUIScrollBars_ScrollWindow($hWnd, 0, $yChar * ($yPos - $Pos))
                $yPos = $Pos
        EndIf

        Return $GUI_RUNDEFMSG

EndFunc

Func WM_SIZE($hWnd, $Msg, $wParam, $lParam)                                ;设置窗口尺寸
        #forceref $Msg, $wParam
        Local $index = -1, $yChar, $xChar, $xClientMax, $xClient, $yClient, $ivMax
        For $x = 0 To UBound($aSB_WindowInfo) - 1
        If $aSB_WindowInfo[$x][0] = $hWnd Then
                $index = $x
                $xClientMax = $aSB_WindowInfo[$index][1]
                $xChar = $aSB_WindowInfo[$index][2]
                $yChar = $aSB_WindowInfo[$index][3]
                $ivMax = $aSB_WindowInfo[$index][7]
                ExitLoop
        EndIf
        Next
        If $index = -1 Then Return 0

        Local $tSCROLLINFO = DllStructCreate($tagSCROLLINFO)
 
        ;修正客户区域尺寸
        $xClient = BitAND($lParam, 0x0000FFFF)
        $yClient = BitShift($lParam, 16)
        $aSB_WindowInfo[$index][4] = $xClient
        $aSB_WindowInfo[$index][5] = $yClient
 
        ;设置垂直滚动范围和页面大小
        DllStructSetData($tSCROLLINFO, "fMask", BitOR($SIF_RANGE, $SIF_PAGE))
        DllStructSetData($tSCROLLINFO, "nMin", 0)
        DllStructSetData($tSCROLLINFO, "nMax", $ivMax)
        DllStructSetData($tSCROLLINFO, "nPage", $yClient / $yChar)
        _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
 
        ;设置水平滚动范围和页面大小
        DllStructSetData($tSCROLLINFO, "fMask", BitOR($SIF_RANGE, $SIF_PAGE))
        DllStructSetData($tSCROLLINFO, "nMin", 0)
        DllStructSetData($tSCROLLINFO, "nMax", 2 + $xClientMax / $xChar)
        DllStructSetData($tSCROLLINFO, "nPage", $xClient / $xChar)
        _GUIScrollBars_SetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)

        Return $GUI_RUNDEFMSG
EndFunc
发表于 2011-3-16 21:36:25 | 显示全部楼层
本帖最后由 afan 于 2011-3-16 21:56 编辑

貌似很多人都对这类工具界面感兴趣哦~ 我看了下那个工具,应该不难做,不过我没兴趣做,也没时间玩它 ^ ^
主要的几乎就是 GUICtrlCreatePic + GUICtrlCreateLabel,复选框也是图片,Tab切换页面也是图片……
另外创建个$WS_CHILD样式的子窗口,至于如何设置滚动条,可以看看 _GUIScrollBars_Init() 例子

没留神LS已经给出例子了…… 效果不错,不过还需调整下,比如 Local $ItemNum = 7 就没滚动条了,或者 =200 位置也不太准~ 将 0.059 改为 0.0598) 貌似就ok了
发表于 2011-3-16 21:43:38 | 显示全部楼层
其实是不用子窗体的.
发表于 2011-3-16 22:06:37 | 显示全部楼层
这其实就是个ListView控件,用标准的SysListView32控件就能实现这样的界面。给ListView加上LVS_OWNERDRAWFIXED样式,在WM_DRAWITEM消息函数中自己画。

评分

参与人数 1金钱 +50 收起 理由
3mile + 50 闻君一席话,胜读十年书

查看全部评分

发表于 2011-3-16 22:59:51 | 显示全部楼层
看了P大的指点,果然犀利.
呵呵,闻君一席话,胜读十年书.
个人理解如下,希望学会点东西.
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>


;~ typedef   struct   tagDRAWITEMSTRUCT   {
;~         UINT       CtlType;                                               //控件类型
;~         UINT       CtlID;                                                     //控件ID
;~         UINT       itemID;                                                 //菜单项、列表框或组合框中某一项的索引值
;~         UINT       itemAction;                                       //控件行为
;~         UINT       itemState;                                           //控件状态
;~         HWND       hwndItem;                                   //父窗口句柄或菜单句柄
;~         HDC         hDC;                                                       //控件对应的绘图设备句柄
;~         RECT       rcItem;                                                 //控件所占据的矩形区域
;~         DWORD     itemData;                                     //列表框或组合框中某一项的值
;~ }   DRAWITEMSTRUCT,   *PDRAWITEMSTRUCT,   *LPDRAWITEMSTRUCT;
;~ 下面详细解释各个变量或机构的含义:

;~ DRAWITEMSTRUCT结构文档(根据Msdn翻译)

;~ DRAWITEMSTRUCT

;~ DRAWITEMSTRUCT   为需要自绘的控件或者菜单项提供了必要的信息。在需要绘制的控件或者菜单项对应的WM_DRAWITEM消息函数中得到一个指向该结构的指针。   DRAWITEMSTRUCT结构的定义如下:
;~ typedef   struct   tagDRAWITEMSTRUCT   {
;~ UINT   CtlType;
;~ UINT   CtlID;
;~ UINT   itemID;
;~ UINT   itemAction;
;~ UINT   itemState;
;~ HWND   hwndItem;
;~ HDC   hDC;
;~ RECT   rcItem;
;~ ULONG_PTR   itemData;
;~ }   DRAWITEMSTRUCT;

;~ 结构成员:

;~ CtlType
;~ 指定了控件的类型,其取值如下表所示。

;~ 取值
;~ 描述

;~ ODT_BUTTON
;~ 按钮控件

;~ ODT_COMBOBOX
;~ 组合框控件

;~ ODT_LISTBOX
;~ 列表框控件

;~ ODT_LISTVIEW
;~ 列表视图控件

;~ ODT_MENU
;~ 菜单项

;~ ODT_STATIC
;~ 静态文本控件

;~ ODT_TAB
;~ Tab控件

;~ CtlID

;~ 指定了自绘控件的ID值,而对于菜单项则不需要使用该成员

;~ itemID
;~ 表示菜单项ID,也可以表示列表框或者组合框中某项的索引值。对于一个空的列表框或组合框,该成员的值为–1。这时应用程序只绘制焦点矩形(该矩形的坐标由rcItem   成员给出)虽然此时控件中没有需要显示的项,但是绘制焦点矩形还是很有必要的,因为这样做能够提示用户该控件是否具有输入焦点。当然也可以设置 itemAction   成员为合适值,使得无需绘制焦点。

;~ itemAction
;~ 指定绘制行为,其取值可以为下表中所示值的一个或者多个的联合。

;~ 取值
;~ 描述

;~ ODA_DRAWENTIRE
;~ 当整个控件都需要被绘制时,设置该值

;~ ODA_FOCUS
;~ 如果控件需要在获得或失去焦点时被绘制,则设置该值。此时应该检查itemState成员,以确定控件是否具有输入焦点。

;~ ODA_SELECT
;~ 如果控件需要在选中状态改变时被绘制,则设置该值。此时应该检查itemState   成员,以确定控件是否处于选中状态。


;~ itemState
;~ 指定了当前绘制操作完成后,所绘项的可见状态。例如,如果菜单项应该被灰色显示,则可以指定ODS_GRAYED状态标志。其取值可以为下表中所示值的一个或者多个的联合。

;~ 取值
;~ 描述

;~ ODS_CHECKED
;~ 如果菜单项将被选中,则可设置该值。该值只对菜单项有用。

;~ ODS_COMBOBOXEDIT
;~ 在自绘组合框控件中只绘制选择区域。

;~ ODS_DEFAULT
;~ 默认值。

;~ ODS_DISABLED
;~ 如果控件将被禁止,则设置该值。

;~ ODS_FOCUS
;~ 如果控件需要输入焦点,则设置该值。

;~ ODS_GRAYED
;~ 如果控件需要被灰色显示,则设置该值。该值只在绘制菜单时使用。

;~ ODS_HOTLIGHT
;~ Windows   98/Me,   Windows   2000/XP:   如果鼠标指针位于控件之上,则设置该值,这时控件会显示高亮颜色。

;~ ODS_INACTIVE
;~ Windows   98/Me,   Windows   2000/XP:   表示没有激活的菜单项。

;~ ODS_NOACCEL
;~ Windows   2000/XP:   控件是否有快速键盘。

;~ ODS_NOFOCUSRECT
;~ Windows   2000/XP:   不绘制捕获焦点的效果。

;~ ODS_SELECTED
;~ 选中的菜单项。

;~ hwndItem
;~ 指定了组合框、列表框和按钮等自绘控件的窗口句柄;如果自绘的对象时菜单项,则表示包含该菜单项的菜单句柄。

;~ hDC
;~ 指定了绘制操作所使用的设备环境。

;~ rcItem
;~ 指定了将被绘制的矩形区域。这个矩形区域就是上面hDC的作用范围。系统会自动裁剪组合框、列表框或按钮等控件的自绘制区域以外的部分。也就是说 rcItem中的坐标点(0,0)指的就是控件的左上角。但是系统不裁剪菜单项,所以在绘制菜单项的时候,必须先通过一定的换算得到该菜单项的位置,以保证绘制操作在我们希望的区域中进行。

;~ itemData
;~ 对于菜单项,该成员的取值可以是由

;~ CMenu::AppendMenu、
;~ CMenu::InsertMenu或者
;~ CMenu::ModifyMenu

;~ 等函数传递给菜单的值。

;~ 对于列表框或这组合框,该成员的值可以为由

;~ ComboBox::AddString、
;~ CComboBox::InsertString、
;~ CListBox::AddString或者
;~ CListBox::InsertString

;~ 等传递给控件的值。

;~ 如果ctlType   的取值是ODT_BUTTON或者ODT_STATIC,   itemData的取值为0。 
Global Const $ODT_LISTVIEW = 102

Global Const $ODA_DRAWENTIRE = 0x1
Global Const $ODA_SELECT = 0x2
Global Const $ODA_FOCUS = 0x4

Global Const $ODS_SELECTED = 0x0001

$hGUI = GUICreate("Test GUI", 300, 200)

$hListView = _GUICtrlListView_Create($hGUI, "Items|SubItems", 10, 10, 280, 180, BitOR($LVS_REPORT, $LVS_OWNERDRAWFIXED))

_GUICtrlListView_SetExtendedListViewStyle($hListView, $LVS_EX_FULLROWSELECT)

For $i = 1 To 10
    _GUICtrlListView_AddItem($hListView, "Item " & $i)
    _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 1)
Next

GUIRegisterMsg($WM_DRAWITEM, "WM_DRAWITEM")

GUISetState()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_DRAWITEM($hWnd, $Msg, $wParam, $lParam)
    Local $tagDRAWITEMSTRUCT, $iBrushColor, $cID, $itmID, $itmAction, $itmState, $hItm, $hDC, $bSelected
    
    $tagDRAWITEMSTRUCT = DllStructCreate("uint cType;uint cID;uint itmID;uint itmAction;uint itmState;" & _
                                         "hwnd hItm;hwnd hDC;int itmRect[4];dword itmData", $lParam)
                                         
    If DllStructGetData($tagDRAWITEMSTRUCT, "cType") <> $ODT_LISTVIEW Then Return $GUI_RUNDEFMSG;控件类型
    
    $cID = DllStructGetData($tagDRAWITEMSTRUCT, "cID");控件ID
    $itmID = DllStructGetData($tagDRAWITEMSTRUCT, "itmID");菜单项、列表框或组合框中某一项的索引值 
    $itmAction = DllStructGetData($tagDRAWITEMSTRUCT, "itmAction");控件行为
    $itmState = DllStructGetData($tagDRAWITEMSTRUCT, "itmState");控件状态
    $hItm = DllStructGetData($tagDRAWITEMSTRUCT, "hItm");父窗口句柄或菜单句柄
    $hDC = DllStructGetData($tagDRAWITEMSTRUCT, "hDC");控件对应的绘图设备句柄 
    
    $bSelected = BitAND($itmState, $ODS_SELECTED)
    
    Switch $itmAction;判断动作
        Case $ODA_DRAWENTIRE
            If $itmState = $bSelected Then
                $iBrushColor = 0xFFFFFF
            Else
                $iBrushColor = 0x00FFFF
            EndIf
            
            Local $aBrush = DLLCall("gdi32.dll","hwnd","CreateSolidBrush", "int", $iBrushColor)
            
            Local $aBrushOld = _WinAPI_SelectObject($hDC, $aBrush[0])
            
            Local $iLeft = DllStructGetData($tagDRAWITEMSTRUCT, "itmRect", 1)
            DllStructSetData($tagDRAWITEMSTRUCT, "itmRect", $iLeft + 5, 1)
            
            _WinAPI_FillRect($hDC, DllStructGetPtr($tagDRAWITEMSTRUCT, "itmRect"), $aBrush[0])
            
            _WinAPI_SelectObject($hDC, $aBrushOld)
            
            _WinAPI_DeleteObject($aBrush[0])
            
            Local $itmText = _GUICtrlListView_GetItemText($hListView, $itmID)

            DllStructSetData($tagDRAWITEMSTRUCT, "itmRect", DllStructGetData($tagDRAWITEMSTRUCT, "itmRect", 1) + 2, 1)
            
            DllCall("user32.dll", "int", "DrawText", "hwnd", $hDC, "str", $itmText, "int", StringLen($itmText), _
                    "ptr", DllStructGetPtr($tagDRAWITEMSTRUCT, "itmRect"), "int", $DT_LEFT)
                    
            Local $iSubItmText = _GUICtrlListView_GetItemText($hListView, $itmID, 1)
            Local $aSubItmRect = _GUICtrlListView_GetSubItemRect($hListView, $itmID, 1)
            
            Local $iSubItmRect = DllStructCreate("int[4]")
            
            DllStructSetData($iSubItmRect, 1, $aSubItmRect[0], 1)
            DllStructSetData($iSubItmRect, 1, $aSubItmRect[1], 2)
            DllStructSetData($iSubItmRect, 1, $aSubItmRect[2], 3)
            DllStructSetData($iSubItmRect, 1, $aSubItmRect[3], 4)
            
            DllCall("user32.dll", "int", "DrawText", "hwnd", $hDC, "str", $iSubItmText, "int", StringLen($iSubItmText), _
                    "ptr", DllStructGetPtr($iSubItmRect), "int", $DT_LEFT)
    EndSwitch
    
    Return $GUI_RUNDEFMSG
EndFunc

评分

参与人数 1金钱 +25 贡献 +5 收起 理由
pusofalse + 25 + 5

查看全部评分

发表于 2011-3-17 00:35:24 | 显示全部楼层
试着画了一个简单的,如图,附件中有代码。



像1#那般复杂的,用标准的SysListView32控件也可以画出来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 4金钱 +25 贡献 +28 收起 理由
lpxx + 10 + 5 厉害、佩服
3mile + 10 果然犀利
lynfr8 + 15 + 3 学习了!
afan + 10 高人

查看全部评分

发表于 2011-3-17 06:42:59 | 显示全部楼层
呵呵,都写得狠好啊
 楼主| 发表于 2011-3-17 08:07:17 | 显示全部楼层
强大。太强大了。谢谢各位大侠关注。这就测试一下
发表于 2011-3-17 08:36:34 | 显示全部楼层
代码收下....
 楼主| 发表于 2011-3-18 07:45:32 | 显示全部楼层
本帖最后由 awfymwvf 于 2011-3-18 10:13 编辑

8楼P版的例子。我怎么加不上CHECKBOX呢?$LVS_EX_CHECKBOXES这个样式不管用啊?
发表于 2011-3-19 01:42:21 | 显示全部楼层
回复 13# awfymwvf


    测试发现LVS_OWNERDRAWFIXED样式和LVS_EX_CHECKBOXES扩展样式不兼容,加上LVS_EX_CHECKBOXES之后就不能设置行高了。要靠自己画,那个CheckBox也是图标。
发表于 2011-3-19 11:13:28 | 显示全部楼层
高手出马就是不一样
 楼主| 发表于 2011-3-21 08:59:56 | 显示全部楼层
本帖最后由 awfymwvf 于 2011-3-21 09:02 编辑

P版的例子真的不错。可是要自已画CHECKBOX。这个还没有想到一个好的办法

还有就是1楼图中的圆角矩形是如何画出来的呢?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-18 15:14 , Processed in 0.094931 second(s), 31 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表