나는 wxMenuBar, wxPanel, wxTextCtrl 및 wxStaticBitmap 만 포함하는 간단한 프레임을 제공하는 wxPerl 응용 프로그램을 만들었습니다. 개발 및 배포 플랫폼은 Windows XP 이상입니다.Windows 바로 가기에서 프로그램을 실행할 때 왜 wxPerl이 wxStaticBitmap을 그리지 않습니까?
이미지는 다음과 같이 양식에 추가 : 나 이미지를 표시 아무런 문제가 없었습니다
my $logoData = Wx::Bitmap->new(App::Resource::Images::getLogoPath(), wxBITMAP_TYPE_BMP);
my $logo = Wx::StaticBitmap->new($self, -1, $logoData);
. 필자는 Inno Setup으로 사용자 데스크탑에 아이콘을 추가하는 설치 프로그램을 만들었습니다. 해당 바로 가기를 사용하여 응용 프로그램을 시작하면 창에서 내 wxStaticBitmap을 그릴 수 없습니다. 애플리케이션이 포커스를 잃고 다른 윈도우가 그 위로 이동하는 경우에만, 그러면 wxStaticBitmap이 그려집니다.
시작 메뉴, 빠른 시작 또는 wxpar을 사용하여 컴파일 한 직후에 응용 프로그램을 시작하거나 perl 인터페터 만 있으면 wxStaticBitmap을 정상적으로 표시합니다.
내 wxFrame에서 Refresh()
과 Update()
을 호출하는 것만이 발견되었습니다. 이 wxFrame을 만든 후 Show(1)
이라고 말하고 바로 그 다음에 Refresh()
과 Update()
을 호출합니다. 그러나 지금까지는 운이 없었습니다.
바로 가기에 첨부 된 작업 디렉토리는 무엇입니까? getLogoPath()는 절대 또는 상대입니까? – fennec
getLogoPath()는 실제로 임시 파일을 만들고 절대 값입니다. 나는 File :: Temp를 사용한다. 이미지로드는 문제가되지 않습니다. 일단 무언가가 프레임이 다시 그려지기 시작하면 모든 것이 잘되기 때문입니다. – Htbaa
또한 Wx :: Frame 파생 클래스의 생성자에 비트 맵을 추가해야합니다. 패널, textcontrols 등처럼. – Htbaa