방개
비밀번호를 잊어버리셨나요?

질문

gui 디자인 관련 질문합니다

    • 글자 크기
#SingleInstance
DetectHiddenWindows, On

Gui, +LastFound +AlwaysOnTop +ToolWindow +Resize
Gui Color, 0x000000
WinSet, TransColor, 0x000000
Gui Font, s10 cWhite, Segoe UI
Gui Add, Tab3, hWndhTab x0 y0 w200 h600 +0x80 +0x40, Basic|PowerPoint|Photoshop|Illustrator|한글|Text1|Text2|Text3
Gui Tab, 1
Gui add, Button, 

Gui Show, w200 h600 NoActivate, Custom Macros
Return

Return

GuiClose:
    ExitApp
return

 

현재 제작하고 있는 온스크린 매크로입니다. 투명한 배경에 탭 별로 수십 개의 매크로 버튼을 쫙 깔아놓고 사용하려고 해요. 근데 만들다 보니 몇 가지가 잘 안 되거나, 궁금한 것들이 생겨서 글을 써 봅니다!

 

1. Tab 버튼이랑 Tab 배경의 색을 바꾸려면 어떻게 하나요? 탭 버튼은 내버려 두고, 배경만 투명화하는 방법도 궁금해요!

2. 지금 이 상태에서 스크립트를 실행하면 글자가 깨지던데, 어떡하죠?

    • 글자 크기
댓글 5
  • 2020.9.22 10:10 댓글

    질문에 대한 답은 아니지만

    배경을 투명하게 해서 스크린 위에 띄우기 보다는

    버튼크기만한 창을 여러개 만들어서 각각 띄우는 방법이 더 편할거 같습니다.

    각 창들을 관리하는 클래스나 메소드를 따로 만들어서 tab의 역할을 하는 작은 버튼으로 다루면 쉬울것 같네용

     

    오토핫키에서 창이나 컨트롤 배경을 투명화하는 방법이 없는건 아니지만

    아주 귀찮고 자잘한 작업들이 많이 필요하고 들이는 노력에 비해 얻는게 별로 없습니다.

    gdi나 d2d이용해서 직접 그려줘야 하는부분들이 있어서 그렇습니다.

  • 먹꼼님께
    수뼈글쓴이
    2020.9.22 11:14 댓글

    오오... 제가 아직 입문한지 얼마 안돼서 어떻게 하는지 잘 모르겠네요 ㅠㅠ 혹시 관련 내용이 있는 강좌가 있나요? 아니면 스크립트 간단한 예시를 들어주실 수 있을까요? 가능하다면 유료 제작 의뢰라도 요청드리고 싶은데...

  • 수뼈님께
    2020.9.23 21:03 댓글

    간단하게 예제를 써봣습니다

    한번 돌려보시면 대충 느낌이 오실거에요

    코드가 길긴해도 복잡한건 없습니다

    원하시는 형태가 이런건지는 정확히는 모르겠습니다만..참고가 되었으면 좋겠네욥:)

    #NoEnv
    #SingleInstance, Force
    
    button1:=new MyButton("test1")
    button2:=new MyButton("test2")
    button3:=new MyButton("test3")
    
    button1.show()
    button1.SetButtonEvent("methodEvent",false)
    button1.move(100,100)
    button1.ContentUpdate("new content")
    
    button2.show()
    button2.SetButtonEvent("glabelEvent")
    button2.move(200,200)
    
    button3.show()
    button3.move(300,300)
    
    layout:=new MyLayout()
    layout.Children.Push(button1)
    layout.Children.Push(button2)
    layout.Children.Push(button3)
    
    Return
    
    1::layout.SetHorizontalAlign()
    2::layout.SetVerticalAlign()
    3::
    layout.Release()
    ExitApp
    
    
    glabelEvent:
    MsgBox, button g-label event test
    return
    
    methodEvent(CtrlHwnd, GuiEvent, EventInfo, ErrLevel:="")
    {
        MsgBox, button method event test
    }
    
    class MyButton
    {
        _handle:=0
        _content:=""
        _buttonHandle:=0
        __New(content)
        {
            this._content:=content
            Gui, new, +hwndhandle +AlwaysOnTop -Caption
            this._handle:=handle
            this._setDefaultGui()
            Gui, Margin, 0, 0
            Gui, Add, Button, w100 h50 +hwndbuttonHandle, % this._content
            this._buttonHandle:=buttonHandle
            Gui, show, hide
        }
        __Delete()
        {
            this._setDefaultGui()
            GuiControl, -g, % this._buttonHandle
            Gui,Destroy
        }
        _setDefaultGui()
        {
            Gui, % this._handle . ":Default"
        }
        Show(on:=true)
        {
            this._setDefaultGui()
            Gui,show,% on?"":"hide"
        }
        Move(x,y)
        {
            WinMove, % "ahk_id" . this._handle, , x, y
        }
        SetButtonEvent(eventName, isSubroute:=true)
        {
            this._setDefaultGui()
            if(isSubroute)
            {
                GuiControl, % "+g" . eventName, % this._buttonHandle
            }
            Else
            {
                e:=Func(eventName)
                GuiControl, +g, % this._buttonHandle,% e
            }
        }
        ContentUpdate(content)
        {
            this._content:=content
            this._setDefaultGui()
            GuiControl,,% this._buttonHandle, % this._content
        }
        GetHandle()
        {
            return this._handle
        }
        GetContent()
        {
            return this._content
        }
    }
    
    class MyLayout
    {
        Children:={}
        Release()
        {
            For index, button in this.Children
            {
                button:=""
            }
        }
        SetHorizontalAlign()
        {
            margin:=120
            For i, b in this.Children
            {
                b.move(margin*i,100)
            }
        }
        SetVerticalAlign()
        {
            margin:=70
            For i, b in this.Children
            {
                b.move(100,margin*i)
            }
        }
    }

     

  • 먹꼼님께
    수뼈글쓴이
    2020.9.24 00:42 댓글

    와와와.... 정말 고맙습니다ㅠㅠㅠㅠㅠ

  • 2020.9.23 21:18 댓글

    음..먼가..들여쓰기가 엉망이네요..

    코드에서 써서 복붙한건데..ㅠㅠ

댓글 달기

서버에 요청 중입니다. 잠시만 기다려 주십시오...