본문 바로가기
728x90

윈도gui11

[Go언어/윈도GUI] 파일 드래그앤드랍(Drag&Drop) 처리 우선 앞서 lxn/walk 와 win 을 제 깃헙으로 클론해서 따로 관리한다고 글 올렸으니 참고하시구요. https://modu-print.tistory.com/731 Go언어 윈도 GUI 개발관련 win/walk 패키지 분리 기존에 Go언어로 윈도 GUI 개발과 관련하여 lxn/win, lxn/walk 패키지를 이용한 개발 방법을 글로 작성 했었는데요.. 작성한 글중중에도 .. WebView 의 자바스크립트 오류와 관련해서 이 패키지들을 수정 modu-print.tistory.com 창이나 특정 UI 객체에 드래그앤드랍을 통한 파일처리가 필요한 경우가 있습니다. 예를들어 파일리스트에 파일을 드래그앤 드랍으로 던지면 던진 파일들이 추가가 된다던지.. LineEdit 에 파일을 드래그앤드랍하면 해당 파일의.. 1일1고(111GO) | 2022. 3. 23.
[Go언어/GUI] WebView 로딩 문제 .. 앞서 강좌?? 까진 아니어도 여튼간에.. Go언어에서 윈도 Gui를 구성하는 법에 대한 글들 중 웹뷰를 설명한 적 있는데요. 이 웹뷰를 사용함에 있어서 한 가지 눈에 거슬리는 부분이 생기실겁니다. 보시면.. 창이 뜨고 잠시후에 웹뷰가 표시되는 걸 보실 수 있는데요.. 이건 이 IWebBrowser2라는 놈이 OLE/COM 그러니까 흔히 말하는 OCX로 만들어진 놈이라.. 원래 MFC로 다이얼로그 베이스의 프로그램을 만들거나 할 경우에는 프로그램의 생성자 즈음에 이 OCX객체의 초기화 관련 코드도 진행을 하기 때문에 .. 창이 표시되기 전에 웹뷰 관련 초기화가 이미 진행이 된 상태라 창이 표시되는 시점과 웹뷰가 준비된 시점이 거의 비슷하지만.. 이 lxn/walk의 웹뷰는.. 기본적으로 lxn/win 패키.. 1일1고(111GO) | 2022. 2. 22.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #13 앞서 12개의 글을 쓰면서 작성한 예제 코드를 올립니다. 포함된 파일들에 대해서 설명 드리자면 DEMO.ico, test.ico 아이콘 파일입니다. img0.png, img1.png, img3.png ImageView 예제에서 사용된 이미지 파일입니다. list_model.go, list_sample.go, test_table_cbmodel.go TableView 예제를 포함한 소스파일 main.go main 함수가 존재하고 대부분의 예제에 사용된 함수들이 있습니다. Makefile make 명령을 위한 Makefile walk_wrap.go 피로곰이 막 만든 walk 랩퍼 WALK_WRAP.manifest syso 파일을 만들기 위한 메니페스트 파일 WALK_WARP.syso rsrc 명령으로 만들어진.. 1일1고(111GO) | 2022. 2. 16.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #12 아마 walk와 제가 대충 만든 walk_wrap.go 를 이용한 윈도 gui 프로그래밍에 대한 글은 이게 마지막? 이지 않을까 싶은데요 응용법이나 그런걸 좀더 세세하게 글을 더 쓸지는 모르겠지만. 이번에 다룰 내용은 특정 GUI요소에 대한게 아니라 Go와 Walk를 가지고 윈도GUI를 함에 있어서 가장 주의해야할 사항을 말씀드리겠습니다. Go언어의 가장큰 장점은 동시성 프로그래밍이 매우 단순하다는 것이지요.. 흔히 윈도 프로그래밍을 할때 스레드(Thread)를 생성할때는 위의 CreateThread나 _beginthread 같은 함수를 사용하는데 인자도 많고 복잡해 보입니다.. Go언어의 경우 그냥 앞에 go만 붙여서 쓰면 스레드로 동작을 하는 매우 단순한 구조를 가지고 있는데다 Managed 언어이니.. 1일1고(111GO) | 2022. 2. 16.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #11 이번에는 .. 얼마전에 모두의 프린터 업데이트 하면서 추가시킨 웹뷰(WebView)를 다뤄보도록 하겠습니다. 한가지 주의 하실점은 윈도 API에서 지원하는 WebView는 흔히 IWebBrowser2 라고 불리는 COM+로 오랜세월 윈도에 내장된 레거시 브라우져 컴포넌트를 이용하게 됩니다. 그말은 현재 우리가 많이쓰는 HTML5 기반의 크롬이나 엣지나 파이어폭스 같은 브라우저보다 몇세대 전 기술을 사용하는 .. 그냥 쉽게 IE라고 보시면 됩니다. 그렇다 보니 너무 최신의 CSS나 HTML, Javascript 를 사용한 페이지 에서는 스크립트 오류나 기타 여러 증상이 나타날 순 있습니다. 크로미움 엣지 기반의 WebView2를 MS에서 발표 했습니다만 아직 윈도10에서는 런타임을 추가로 설치하지 않으면 .. 1일1고(111GO) | 2022. 2. 16.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #9 이번엔 가장 활용도가 높은 편인 테이블뷰에 대해서 알려드리겠습니다. 우선;; interface{}를 사용해서 조금 고급지게 리스트박스를 위한 모델구조를 잡고 하면 보긴 좋긴 하겠으나 애초에 그냥 막 짜서 적용해서 쓰기 바쁜 와중에 만들어 쓴 코드고.. lxn/walk 의 샘플 코드에 존재하는 것들을 크게 건드리지 않고 사용하다보니 그닥 맘에 드는 구조는 아니라는 점은 미리 말씀드립니다. 우선 테이블을 구성하기 위해서는 2개의 구조체와 몇가지 메소드를 미리 작성하셔야 합니다. /** *TestListItem **/ type TestListItem struct { Name string Level int Sex int Class string checked bool } /** *TestListModel **/ .. 1일1고(111GO) | 2022. 1. 11.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #8 이번에는 .. 드롭다운박스를 다뤄보도록 하겠습니다. func comboTest1() { mgr, _ := NewWindowMgrNoResize("콤보박스 테스트", 640, 200, GetIcon()) dd1 := mgr.DropDownBox([]string{"1.하하", "2.호호", "3.ㅋㅋ", "4.ㅎㅎ"}) dd1.CurrentIndexChanged().Attach(func() { fmt.Printf("선택된 인덱스 : %d, 선택된 값 : %s\n", dd1.CurrentIndex(), dd1.Text()) }) mgr.StartForeground() } 요래 DropDownBox 메소드를 사용하시면 되구요 인자는 []string 배열로 지정 됩니다. 보통 드롭다운박스는 보여지는 텍스트 값 또.. 1일1고(111GO) | 2022. 1. 10.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #7 이번엔 각종 설정창 등을 만드는데 어찌보면 가장 유용하게 사용하는 체크박스(Checkbox)에 대해서 다뤄보도록 하겠습니다. func (m *WinResMgr) CheckBox(text string, checked bool, attachFunc func()) *walk.CheckBox CheckBox 메소드를 사용하시면 되구요. text string 인자는 체크박스 옆의 라벨 텍스트를 지정하는거고 checked bool 은 초기 기본 체크 상태입니다. true 면 생성시 체크가 된 상태로, false 이면 생성시 체크가 안된 상태로 생성됩니다. attachFunc func() 인자는 체크박스의 체크 상대가 변경될 시에 호출되는 이벤트 핸들러 함수를 지정하면 됩니다. func checkBoxTest1() .. 1일1고(111GO) | 2022. 1. 3.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #6 이번엔 EditText? EditBox? 여튼;; 텍스트고 숫자고 입력을 받는 놈을 다뤄보겠습니다. func (m *WinResMgr) NumberEdit() *walk.NumberEdit func (m *WinResMgr) LineEdit(ro bool) *walk.LineEdit func (m *WinResMgr) TextEdit(ro bool) *walk.TextEdit func (m *WinResMgr) TextArea(ro bool) *walk.TextEdit 이정도 되겠습니다.. ro bool 인자가 있는 놈들은 read only 에 대한 flag입니다. ro 값이 true 이면 수정이 불가능한 놈이 되겄지요. 각 함수의 차이점을 말씀 드리자면 .. NumberEdit - 숫자만 입력 가능한 .. 1일1고(111GO) | 2021. 12. 23.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #4 Go로 윈도 네이티브 GUI 줘 패기... 4번째 입니다. 이번엔 레이아웃에 대한 부분을 다뤄보도록 합니다. 앞서 C/C++에서 윈도 API를 가지고 GUI 어플리케이션을 만드는게 매우 비효율적인 노가다 개삽질이라는 식의 표현을 한적이 있는데요. 그 이유는 .. API에서 모든 UI객체는 전부다 윈도입니다. 창도 윈도 버튼도 윈도 에디트 박스도 체크박스도 스크롤바도 스크롤바 안의 상하단 버튼도 죄~~다 윈도입니다. 그 말은 그 하나하나를 다 CreateWindow 를 하고 그 각 객체별로 WndProc 같은 메시지 프로시저를 한땀 한땀 다 등록을 시켜야 한단 소리죠 그래야 키보드 입력이던 마우스 클릭이던 내용을 그리고 지우고 지지고 볶고 .. 가 가능합니다. 그렇게 수 없이 많은 반복적인 코드를 생성해야.. 1일1고(111GO) | 2021. 12. 10.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #3 Go언어로 윈도GUI .. 3번째 글입니다. 우선 관련 글들을 작성하면서 계속 사용하게될 소스파일 하나 먼저 던져 놓고 시작하겠습니다. walk_wrap.go 라고 매번 치기 귀찮으니 이놈, 저놈, 랩퍼 등등으로 쓸수 있으니 알아서 잘 보시기 바랍니다. 이놈에 대해 이래저래 쓰기 앞서서.. 웹 프로그래밍을 할때도 그렇고 GUI 프로그래밍을 할때도 그렇고 콘솔 프로그램과 달리 프로그램을 만들다 보면 메시지 박스를 띄워서 뭔가를 하거나 확인 창을 띄워야 하거나 하는 경우가 있습니다. 이런 놈들이죠.. 앞에 놈은 자바스크립트의 alert 같은 놈이고 뒤엣놈은 confirm 같은 놈입니다. 이렇게 메시지 박스나 확인창을 생성해주는 두 함수에 대해서 먼저 설명을 하고 넘어 가겠습니다. func MsgBox(msg.. 1일1고(111GO) | 2021. 12. 9.
728x90