아래 뜨는 Download 나 PC App Store는 모두의 프린터와 상관없는 광고입니다!!
특히 PC App Store는 악성 소프트웨어이니 절대 클릭하지 마세요!!
모두의 프린터는 어떠한 경우에도 본인인증, 회원가입, 카드결제를 요구하지 않습니다.
다운로드를 유도하는 애드센스 광고를 피로곰이 배포하는 프로그램들의 다운로드 링크로 착각하지 않도록 주의하시기 바랍니다. 피로곰이 배포하는 모든 프로그램은 본인인증, 회원가입, 이용료 결제 없이 무료로 사용가능합니다.
많이 찾는 글들...
  1. PC App Store 제거 방법
  2. Ghostscript/GhostPCL 설치 안내
  3. 파일 다운로드가 차단되는 경우
  4. 내 컴퓨터의 32비트,64비트 여부 아는법
  5. 'Windows의 PC 보호' 문제
  6. 모두의 프린터 실행후 환경설정창 뜨지 않고 무반응
  7. Ghostscript PDF변환 불가. Can't load Ghostscript DLL
  8. 대법원 인터넷 등기소, 전자소송, 경매,전자공탁등 대법원계열 사이트관련
  9. 모두의 프린터 사용후 네트워크 장애가 발생하는경우. (대법원 인터넷등기소 등)
  10. 출력시 모두의 프린터가 강제종료 되는 경우.'지원하지 않는 PDF또는 가상 프린터입니다.'
  11. 오픽(OPic), 연결상태 확인 불가 프린터, 등록되지 않은 프린터(MarkAny e-PageSAFER)
  12. YBM 토익성적표 관련(정상적인 프린터로 출력을 진행하시기 바랍니다)
  13. 리포트뷰어(ReportViewer) 관련(특수목적프린터, 문서변환 프로그램을 제거해주세요)
  14. 인터넷증명발급센터 서트피아(Certpia) 관련 안내
  15. 인강사이트 관련 - 출력에 매우 오래 걸림, PDF파일 버벅거림, PDF여는데 오래걸림 등등
  16. '잘못된 프린터 데이터를 수신하였습니다.' 문제
  17. MS서피스, 삼성 갤럭시북 등 ARM기반 랩탑, '잘못된 프린터 데이터를 수신하였습니다.' 문제

[Go언어/GUI] WebView 로딩 문제 ..

앞서 강좌?? 까진 아니어도 여튼간에.. Go언어에서 윈도 Gui를 구성하는 법에 대한 글들 중 웹뷰를 설명한 적 있는데요. 이 웹뷰를 사용함에 있어서 한 가지 눈에 거슬리는 부분이 생기실겁니다.

보시면.. 창이 뜨고 잠시후에 웹뷰가 표시되는 걸 보실 수 있는데요.. 이건 이 IWebBrowser2라는 놈이 OLE/COM 그러니까 흔히 말하는 OCX로 만들어진 놈이라.. 

원래 MFC로 다이얼로그 베이스의 프로그램을 만들거나 할 경우에는 프로그램의 생성자 즈음에 이 OCX객체의 초기화 관련 코드도 진행을 하기 때문에 .. 창이 표시되기 전에 웹뷰 관련 초기화가 이미 진행이 된 상태라 창이 표시되는 시점과 웹뷰가 준비된 시점이 거의 비슷하지만..

이 lxn/walk의 웹뷰는.. 기본적으로 lxn/win 패키지에서 동적으로 IWebBrowser2 객체를 끌어오는 형식을 취하고 있기 때문에 실제론 창이 생성돼서 보이는 시점보다 웹뷰가 초기화되고 사이트가 로딩돼서 뜨는 시점이 차이가 날 수 있습니다.

이런 식으로 쓰면 문제점이.. 웹뷰를 통해서 무언가를 보여주기 위해서 웹뷰를 쓰는데.. 웹뷰의 내용을 보기도 전에 사용자가 창을 닫아버리면 아무 의미가 없어지죠..

그리하여..

우선 창을 보이지 않게 생성한 후 웹뷰의 초기화 및 준비가 끝나면 창을 보여주도록 해봅니다.

Go
func webviewTest() {
	mgr, win := NewWindowMgr("웹뷰 테스트", 1024, 680, GetIcon())

	wv := mgr.WebView("https://modu-print.tistory.com/category/%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C/%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%20%EB%82%B4%EC%97%AD%EC%95%88%EB%82%B4")

	wv.Navigated().Attach(func(s string) {
		if !win.Visible() {
			win.Synchronize(func() {
				win.Show()
			})
		}
	})

	mgr.HideStart()
	//mgr.StartForeground()
}

웹뷰의 Navigated 이벤트는 URL에 대한 브라우징이 끝났을 경우에 발생하는 이벤트입니다. 이 이벤트가 발생 시에 창이 보이는 상태가 아니면.. 그러니까 win.Visible()이 false를 리턴하는 경우엔 해당 윈도가 Hide 상태입니다. 그러니 보이도록 해야겠지요. 

웹뷰의 객체도 윈도 내에 있으니 상관없을 것 같긴 합니다만.. 그래도 혹시 몰라 win.Synchronize로 묶어 봤습니다.

보통 다른 예제들에서는 mgr.StartForeground()라는 메서드를 사용했는데요.. 이건 창을 시작하면서 맨 상단으로 보여줘라 라는 의미로 쓰는 놈입니다만..

페이지 로딩이 끝나기 전에는 창을 보여주지 않을 거니..

mgr.HideStart() 메서드로.. 창을 시작은 하되 보이진 않도록 해서 시작합니다.

차이가 느껴 지십뉘까?? ㅋㅋ

이상입니다.


2022.03.23일 추가 ..

위에 언급한 lxn/win, walk 를 직접 수정해 쓰는게 좀 .. 좋은 방식은 아니기도 하고 .. 저것 말고도 손봐서 쓸 일이 좀 있을것 같아서 해당 패키지들을 클론해서 따로 팠습니다.

Bash
go get github.com/pirogom/win
go get github.com/pirogom/walk

import 구문들도 lxn/win, walk 에서 pirogom/win, walk 로 변경하시면 .. 위에 언급한 수정사항은 이미 적용된 패키지를 사용 가능하십니다. 아마 앞으로 관련 글에서 다뤄지는건 lxn/win ,walk 가 아닌 제가 관리하는 win, walk 를 기반으로 할것 같습니다.

많이 찾는 글들...
  1. PC App Store 제거 방법
  2. Ghostscript/GhostPCL 설치 안내
  3. 파일 다운로드가 차단되는 경우
  4. 내 컴퓨터의 32비트,64비트 여부 아는법
  5. 'Windows의 PC 보호' 문제
  6. 모두의 프린터 실행후 환경설정창 뜨지 않고 무반응
  7. Ghostscript PDF변환 불가. Can't load Ghostscript DLL
  8. 대법원 인터넷 등기소, 전자소송, 경매,전자공탁등 대법원계열 사이트관련
  9. 모두의 프린터 사용후 네트워크 장애가 발생하는경우. (대법원 인터넷등기소 등)
  10. 출력시 모두의 프린터가 강제종료 되는 경우.'지원하지 않는 PDF또는 가상 프린터입니다.'
  11. 오픽(OPic), 연결상태 확인 불가 프린터, 등록되지 않은 프린터(MarkAny e-PageSAFER)
  12. YBM 토익성적표 관련(정상적인 프린터로 출력을 진행하시기 바랍니다)
  13. 리포트뷰어(ReportViewer) 관련(특수목적프린터, 문서변환 프로그램을 제거해주세요)
  14. 인터넷증명발급센터 서트피아(Certpia) 관련 안내
  15. 인강사이트 관련 - 출력에 매우 오래 걸림, PDF파일 버벅거림, PDF여는데 오래걸림 등등
  16. '잘못된 프린터 데이터를 수신하였습니다.' 문제
  17. MS서피스, 삼성 갤럭시북 등 ARM기반 랩탑, '잘못된 프린터 데이터를 수신하였습니다.' 문제

모두의프린터에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기