I'm trying to add a bitmap to my GUI.
I've looked at the BitmapInline package
(http://jeb.ca/perl/win32-gui-docs/index.pl/win32-gui-bitmapinline) to
inline the bitmap I should use
in my code, and I've looked at the BitmapSample
(http://jeb.ca/perl/win32-gui-docs/index.pl/code_samples?wid=62&sid=6&func=v
iewSubmission)
to see how to add the bitmap.
I even combined the two by using the inlined bitmap in the sample.
[ In the code below you'll find the inlined version of the zapotec image
erick used in his sample. ]
However, when I try to use the bitmap in my real app, the bitmap just
doesn't show up.
I've added the -style = WS_OVERLAPPEDWINDOW to my main window's declaration,
and the -style => 14 to my label's def after looking at the samples (but
I'm not sure what they stand for).
Anyway,
stripping all that is not needed from my app, here's what I am left with
(see code below).
If anyone could explain what I am doing wrong, it would be **greatly**
appreciated.
Thanks in advance,
Frank
Look after this block of code for the code that is working.
Here's the code that is *NOT* working.
The bitmap simply doesn't show up:
===
#!/usr/bin/perl
use Win32;
use Win32::GUI;
use Win32::GUI::BitmapInline ();
use strict;
use warnings;
#GUI globals:
my $mainWindow;
MAIN:
StartGUI();
exit(0);
sub StartGUI
{
InitGUI();
$mainWindow->Show();
LOG("Showing Main Window; starting Dialog Cycle.");
my $exitCode = Win32::GUI::Dialog();
LOG("Dialog cycle exiting with '$exitCode'.");
ERROR("Terminating with error code '$exitCode'.")
unless -1 == $exitCode;
}
sub InitGUI
{
#Main window:
my $desktop = Win32::GUI::GetDesktopWindow();
my $dtWidth = Win32::GUI::Width($desktop);
my $dtHeight = Win32::GUI::Height($desktop);
my $mainWindowWidth = 400;
my $mainWindowHeight = 300;
my $mainWindowX = ($dtWidth-$mainWindowWidth)/2;
my $mainWindowY = ($dtHeight-$mainWindowHeight)/2;
$mainWindow = new Win32::GUI::Window(
-text => "My Main Window",
-name => "MainWindow",
-pos => [ $mainWindowX,
$mainWindowY ],
-style=> WS_OVERLAPPEDWINDOW,
-size => [ $mainWindowWidth,
$mainWindowHeight ]
)
or ERROR("Could not initialize main window: $!");
LOG("Main Window initialized.");
$mainWindow->AddLabel(
-name => "lblMainIntro",
-pos => [10, 10],
-size => [209, 101],
-text => "A lot of foooooooo",
-align=> "left"
)
or ERROR("Could not initialize main window (introductory label): $!");
LOG("Introductory label added.");
my $logoBitmap = new Win32::GUI::BitmapInline( q(
Qk0yJQAAAAAAADIBAAAoAAAAYAAAAGAAAAABAAgAAAAAAAAkAAASCwAAEgsAAD8AAAA/AAAAACml
AAg5pQAYQpwACDmtABhClAAAOa0AKVKMAAApnAAYKYwAGEKlABA5hAAhUowAECmMABAxhAAhQpwA
IUqMAClSlAAhMXsAIUKUABgxjAAYSqUAGDmUAAg5nAApWpwAIVqcACE5hAAhUpwAIUqcABg5pQAY
OZwAGEKtABBCpQAYMXsACDGEABA5nAAQOZQAGDmtAAAxrQAIKYwAGEqcABBCnAAAMaUAIVqlACFS
lAApWqUAECGEABhChAAAOaUAIVKlABAxnAAIKYQAGEqMACExhAAYSpQAGFKcABA5pQApWpQAGCl7
ABAhjAAQQpQACCGEABhKhAAYUpQAEhISCgogCg0gCgoKCgoNCgoNCgoNCgoNDQYPCwsGBisGBgYQ
KwsQEREZIBkgEREZEREZERERERELEBAGKxALEA8GBgYGEAYLBAIVHR0SAicONTUOGw4SGw4bEhsS
DSAuEhISCg0KDQoKIAogCg0KDQ0KDSEKDQoKDwYGEAsPCwsLCwYGBgYGEBERERERIBERGREZERkR
GRAGBgYQBgYLCxAGDxALCzMGHR0EFRUCFQ4SDhsSDicSDjUSGwQSIA0KDQ0gCg0uDQ0uDQ0KDQ0K
CgoNCg0KCgsGEAYGEAsQBhAGEAsQECsGCxcXNBEREREZERkRGTQRFxcPBgY4CwYLBgsGEBALBhAQ
MwIVHR0CFQ4nEhsSBDUOEgQSEhIEEhIbCgoKIAoKDQoNDQoNCgoNCgoKDQohDQYQBisLBgYGEAsP
CwYLBgYLFxgXGhkRGRkREREZEREXFxcYEAsQBhAGEAYGCwsLDwYGCwYEIwQVFSMOBAQCEgQOBBIb
EhIbEhISDSAKCg0NCgoKCg0KDQ0KDSENCg0NCwsPDwYLDysLBhAQBhAGOAsXGhcYGhEREREZERkR
ERgYGhcXFxAGEA8LDwsQBgYGBgsGBgsQAgICAgQCFRIbDhsSGxsSDhsSGxsSCg0KDQoNCg0KDQ0K
DSEKCg0KCgYPBgYGCwsQBgsQDw8LBjMGFxcaFxgaGBoYERkZERERKhoqFywXGhcXBg8GEBAPCxAG
EBAGEBAGDxUCAgQdFQQCDicSGxIbEhIbEhISDQoKDQoKDQoNCgoNCgoNDQoNDRAGBgYGCxAPCwsL
BgYGCxAGFxcXGhcXGCoYKhERERkaGiwYGhgsFxoXEBAGBgYGCw8rBg8LCzMGBjMjFR0EAhUCBAQO
EgISGwISGxsECg0KCg0KDQ0KDQ0KDQ0KIQohKwYLBhAPEAYrCwsLBisGCxcXGBcYLBgYMBoaMCAZ
GSoaKhoqGBcYFxcXFwsQDwsPEAYGCxAPDwYGDxAGIxUiFR0VAhsEDhICEhICEhIODQoKDQ0KDQ0m
ISEmISYhJgIEDgQCBCMCAgQCBAIVBBUVBAkUCAwIDC0TCAwTEwgIDBMMCAgIEwgMExMIFBQVAgQC
BAISAgQEAhUjBAICBCIxIjEiMSIdHQISDicSDg4SCg0KCgoNCgomISEmISEmJgICBAIEDhIEBAIE
AgQCBAQJFAkCCQgMEwgIDAwIDAwIEwgTDAgMCBMTCAgnCQkwAgIEFQIEAgICEg4CBBUEFQ4iMSIx
HTEiHRIONQQbEgQSDQoNCg0KDQ0hJiEmISYyDgQODgIEBAIEAgIEFQIEFQQJAhQUFAgIDAwICAwI
CBMTDAgMEwgTCAwIEwIUFA4UFAQCBAQVAgQEAgQCFQICBCMOIiIdIh0iMQ4EDhICEhICDQoNCg0K
DQ0hJiYhMgIEAgQCBAIEAiMOAhUjFQQOCQkJFAkCFAkJEwwIDAwIExMIEwwTCAgMDBMICQkJFAkJ
FAIUBAIEBAIEAgQCBAIVAg4EBDEiHTExHRUCEgQCEhInCgoNCgoNCgomITImJgQCBAISBBICAhIC
EgICDhIUAhQnAhQJCRQJHxMICDkMDAwIDAgMCAwTDAwJFB8UAgIUAicJFAQCBAQVBAICBAIEBAQC
AgQiMSIiMR0EHRsSDg4ODQoNCg0KIQ0mJiYyAgIEHQQCAgQOBAICBBICBBQCFAkJCQkUCQkfCQgT
CAgMCAwTCAwMCAgICB8JCQkJCQkCCQkUAgQCBCMEAgQCBAQCBAQEAhUCIh0iIiMdBAIONQQSDQoN
DSEhDQ0mMgQEAg4VBAQCBAIEAgIEAgQEFBQCCQknCRQtDAgIDBMMEwgMEwgMCBMICAgMCAgTCBMM
EwkUCQkJJwknAhUOAh0EAgIEAgI7BAQEAiIiHQQVIwQdEgISCg0KCg0KDQomMgIVBAQjIwIODgIS
AgQCFRIUAgkJMBQJFAkUCAgTCAgIExMIDAwICAgTDAgIDBMMCAgICQkJAgIUCScJJwQEBAQCBAQC
BBUSAgIVBAQxIh0CFR0VHRIODQohCgoNCg0mAgQCAgICAgQCBAQCBAIEAhQCFCcJFAkJKAkJHwwM
DAgTDAgTDAwMDAwICAwIDAgIDAgUCR8JCQkUAgkCCQ4CAhUEAgQEDgQCAgQCBAIEIiMVAiMEIycO
DQoNDSENIQsVBB0EBAIEDgQCAQMvAQEBAwUDAwMFBQUDAwUFAwUHAQEAAAAHARYAAAcAAQABAAAH
AAMFBQUFJQMDBQMFAwUDAQMvASUBBBUVBAQCBAQVAhUCFRUCFRUODQ0KCg0hMhAEFQQVKAQCAhUV
AS8DAQMvBQUDBQUDAwMDBQMDAwMDAAcBBwcBBwABBwAWAAEHAAABAyUDAwMDAwMFAwUDBS8DBSkB
BS8BAgICBAIVAgIEAhAVHR0EHRUjISEhDQ0hDwYCBAQOBAIEFQQCAwEvAQMDAwMDAwMFAwUDAAAA
AQEAAQEHAQAHAQEHAQAAAQABBwEABwEHAAApAwMFAwMFBQMDAwEBAQMBBAQEAgIEFQQEFRAGFRUV
AgQdIQ0hIQsGBg8CEgQCBB0CFQIEAwEBBQUFBQUDAwMFBQUDJQEAAAEHAQEHARYAFhYAFgEABwcA
FgAHAQcBByUDAwMFAwMFBQUDBQUDLykBBBUCBAQCBAQCBBAPCx0jHRUVDSENMg8PDxAEAgIVBAQE
AhUCAQUDAwMDAwMDBQUDAwMDBQUBAAAAAAAABwEAAAABAAcBBwEAAAEABwEAAAUFBQUDBQUDAwMD
AwMDAwEFFQQEBAQCAgQCBAYGBgsVFR0VDTIyCy4PBgYVBAIEAiMEFQQEAQMFAwMFAwMFAwMFBQUF
AwMlAQEAFgEHAQABAAcAAAAAAQAWAAcBAAABBQMDBQMFAwMFAwMFAwMDAwMBBAIOAgIEBAQVAg8L
CwYLHQQiMg8LBgYGDy4EBAQOAgQEAgICAwMvBQUDAwMFAwUDBQMFAwUDBQAAFgEABwcBAAEHABYA
AQAHAAcBAAMDAwMDBQMDBQUDAwUDBQMFAwUDJxUEAgICBBUCAgsPBg8PDxUdBgYGDwsPCw8EIwQC
BAIEFQQUAwMDAwUDAwUDBQMFAwABAAEHAQcBAAAAAQEHAQAAAQAABwEAFgEAAAAHAQEAAAMFAwMF
BQMDAwMDBQMFCQ4EAgQOBAQEAjMzEAsPDwYPCwsGBgYLBg8VOyMjFQQdBAIJBQMFBQMFBQMFAwUD
BQUAAQAABwAAFhYAAAcAAAEBAAABAAAWAAAWBxYABwcBAAUFAwUFAwUFAwUDAwMDFAkEBAQCBBUC
FQYGDw8PCw8GMwYQBgYPCwYjBAQVIyMVFBQCAwMDAwUFBQUFAwUFBQUDBQAAAQEABxYAAAABAAcB
AAAAAAcAFgcBAAEAAQAFAwUFAyUFAwMFAwMFAwMDCQIUEgIVAgICFQYGCxAPCw8LBgYLBgsPDw8V
IwQjBCgiKCIJLwUFBSkFJQMFBQMFAwMlBRYABwAWAAAAARYABwEHAQEHFgABAAAHAAAHAAMDBQUD
BQUDAwUDBQUDBQMFFBQnCQQEAhUEBAsQDwsGEAYQCysGBg8PBg87FRUEFQkCHx8oAwMDKQMDAwUD
AwMFBQUFAwABAAcAAQEABwABAAAABwABAAAAAQEAAQEAASUFBQUFJQMFBQMFAwMFAwUDCQkUFCcC
FQIEAg8GEA8LBgsQCwsPDwYLDw8VIyMCCQkoIigfJQMFAwMFJQUFBQMAAQEWAAAAAAAHAQAABwAB
AAAAAAAAAQEAFgEAAAcAAQAAAAcAAQUDBQUFAwMFAwMDCSgJJxQJJwQCBAsQBgYQCwYPEAsQDxAG
EA8jAhQJAgIfKBYoBSUFLyUDBQMlJQUBAAAAAAEHAQABBwEBAAEHBxYAFgABAAAHAAAHAQEABwEH
AQEHAAUFAwMDBQUDBQMFAigJCQICCQQCBBAGCwsGBg8QDwYLBg8GBhAEIwIUCQkoCQk3BQUlBQUD
AAUDAwMHARYHAQcBBwcAAQcABwABAAAAAAAHAQEBAAEABwcBAAAABwABAAMFJQUAAwMFAwUDHxQC
KAIUAhQVBA8LCw8LDwszBgsGCw8GCxcoAgkJJwIJHwkUBQUlBSkFAQcFAwMWAAEAFgAWAQcAFgEH
AQABBwAAAAAHAQABAAAHAQEAFgAWABYBAAUDBRYAAwMFAwADCR8JCSIoCQkCFAYLDw8LCwsGDw8G
CxAGCysUCSgJCR8UIgkJAwcFJQUlKQEpJQUAAAAAAAAABwEABwcAABYAAQAWBwEAABYAAAABAAAA
AAAAAQAHAAMlAQAABQUDJQADHx8CHwIUCQIJAg8LEA8PDw8GBhAGEA8GFxcJAgIUCS0JHx8JBSkH
BSUFBwcHAQMWBxYAARYAAQcBAAAWBwAAAAAAAQEAFgABBwcAARYAAQEHAAABAAMBAAABAwMDAQEF
HwkfCQkUFAIUCRoXDwYGBgYPKwYLBgYXFywIFAIUFAgIOh8fAwABBwUlBwcHBykWAAABBwEAAAcB
FgcBAAAABwAAFhYAAAABBwcAFhYABwEAAAcAAAAAAAAAAwEAFgEFCQkIDAkJHwkCCBgXFwYGCwYG
Dw8LBhcYGBgMCAkJIgw8EwkfBQAHAAcFAAApBwAABwcAAAAAFgAAAAEHAAEHAQcBAAAAAQEHAAEA
AAABAAAWAAEHAQcBAQcBAwcBAAclHwwMCBQJKAkTLRcaGAYLDwYLBg8GFxcXFxoTCBQJFBMMCBMJ
JQABAAcpBwcHKQcHAAEHAAEHAAAWAAcBAAABAAAAAQEWAAABBwcBAAcAAQAAAQcBAAAABwAAFgEA
AAEFHxMMEwkJCQwMCBcXGBcXDwYQBgsXGBoaGhgICAgIFAwMEwwIKQcBAAEHACkHAAAHAAAHAAAB
BwcBAQABABYAAQEHAAEHAQEHAQcBAAAAAQAAAQAAAAABAAAHAQAHAQcAExMICCgUDAgMExoaGBcX
Fw8LIBcaFywXGBgIEwgTCAgIDAgIAAEABwcABwcABwcpBxYpBwAHAAAABwEAAQABAAABAAABAAAB
AAEAABYABwcBABYAFgAHAAcBBxYAAAEHCC0MDAktCAwICBgaGhoYGBcRERgYGBoXFxcTDAgTDBMT
CBMIAQABAAEAAAAWAAAHAAcABwcBABYAAR4cDgkkHBwcHBwcHBweDhwBBwABAAEAFgABAAcBAAAH
AQABAAABDAgMCAwMEwgIDCwXGhgYFxEREREZFywwGBgIEwwIEwgICAwIAAAAAQABBwAWAAABAAEH
BwcABwEABxwcCQ4eHDccCQ43JB4cCRwBABYAAQABAAAAAQcBAAAAAQABAAcBOhMMDAwIDAgMExgs
GBoaIBEgGRkRGRoYKiwIDBMIEwgTDBMIAQAWAAAHABYABwcpBwcBAAABAAAWADcJHB4cCR4cCSQO
CQkJHh4HAAAAABYAAAcBBwEAAAAWAAcAAQEACBMIDAgVCBMMCBoaGBcZERkRERkRGRcYGCoICAwI
DBMIEwgTAAAAAQEAAQAHAQAHACkHBwEHBwcAASQJHhweHgkkHB4kHBwkDhwBAQEHAQABAAAAAQAW
AAEABwEABwcBExMICAw5DAgIDBoqGBERGREZGRERGRkRLBoTDBMMLQgICBMIARYAARYAAAEAAAcA
BwcAFikABwcAAAkcCR4JHCQeHBweHBwJHBwAARYAAAABAAcABwcAAQAHAAcAAAABCAgIDAwTCAgT
CCoaEREZEREZERkZEREZETAIEwwIDAwTDAgTAAAAAQAHAQcWBwEABwcAKQcBBwEAFhweCQ4kHAkJ
HAkcHiQJCSQBAAAHAQEABwEHAQABAAABAAABAQEHCAwtDAgMCAgIExoZGTQREREREREZERkRETYM
CAgMEwgMCAgMAAEABwcABwAAAQcAAQEHBwAHKQcAABwcHiQ3DhwJHhweJAkkHA4AFgEAAAcBAAAA
BwcHAAEHAQAABwABDAgICAwTDBMMDBkRGRERGRkZERkRERERERkICAgTCDkIDAwIBwEHAAAABwcB
AAEBBwEAFgcWAAcBBw4eDgkcHiQeDhwOJBweHDcAARYABwAWAAABBwEABwEAAQEAAQABCAwICAgT
LQgMExERERkRGRERGREZEREZGSoTCAgMCAwMCAgIAQABBwcBAAAHAQAAAAAHAAApBwAHAB4JJCQJ
JA4cHh4kDgkcHgkAAAAAAQEAAQAAAQcBAAAHAQAAAAEACAgIDAwIDAgTCBEgERERERkRERERGRkR
ERoTCAwICAgMEwwMBwcAAQAHARYAAAABAAcBAAcAAAAAAR4kDg4kDh4JJAkcCQkcCRwWAAEAAAAA
BwcBAAAAAQEAAAAWAAABExMMLQwIEwwIDDYgGREZGRkRIBERGRkXMBoMCAwmCAwTDAwMAAAAFhYA
AQEABwABAAABBwAABwcpAR4eJBwkHg4eJB4eDgkeHBwAAQEAAQEAAQAHAAcAAQAHAAcAAAABCAgM
ExMMExMIDBgsMBkRGRkREREZERg2NiwIEwgICDItDAgMARYBAAAAAQAAAQAHAQcBAAEAAQAHABwJ
CR4OJAkkDg4cHiQOJBwBAAEAAAAAAQEAAQEHAAABAAEAFgEACBMMCAgIDBMICDAYGBEZGREZGRkZ
ERcsGioTCAwMLS0TCBMIAAAAAAEHABYBAAcBAAAAAQABBwABAAkkHiQeDh4eHB4eHAkcHgkAAQAW
AAEHAAABAAABABYABwABAAABEwgMCAwIDAwICCw2GhcRIBkRERkYFxoaNhgMDAwIPAwMCAgIAAAB
AAEAAAcBAAAAAAAAAQEBAAcAAR4JHiQeHg4eJB4cCR4JCQ4AABYAARYAAAcBBwAABwABAAABBwAA
DAgTEwwICBMIExcXNhgaGBERGRcXGhgsGCwTCAwtCAwIExMIARYAAAAWAAEAFhYAAQEHAAAAAQEA
ACQcHgkkDh4kDg4eHBwkHCQBAAAAFgABBwEAABYAAQAWAAEHAAcBOQwtDBQTCAgICBoqGhcXFxk0
ERcYFxcaGhoIEwgMKBMICAwTBwABBwEAFgABAAABAAEAAQEABwEHAQ4cHB4OHBwJHBweDh4OHA4A
FgEAAAAAAQABBwABBwcAAQABBwApDAgMCAkJExMTExgXGBcYFxcREBAGFxg+GhcMCCgUCQgIDAgU
BQcBAAAAAQAAFgABAAABAAEAAQcAAQEAAQABAAAAAQABBwAWAAEHAQAWAAEABwEHAAABAAcAAQAB
BwADHwgMCBQJCRMIExoXGBoYBgYGECsGGBc2FyoIDB8fHxMICB8JAwEHAAEDAAEBAAEAAAcABwcA
AAABAAEHAAcHBxYAABYAAQAAAAABAAEAFgABAAAAARYAFgABBQEAAQEDHy0IDAkJFBQICBoXFxca
CwYQEAYQBhcXGBoIBCgUAgwMCBQfAwABAAUDAQAHAQABBwEAAQEABwEAAQABBwEBAAABAAAABwAB
AAAAAQAABwcAAQEABwAAAAApAwAHAAcFHwkIDAkJCQkEDBgYFwYLEAYQBhAGCxAPGBoJFAkoCQgU
CQkUBQcABQMFAQAAAQMBABYAAQEHAAEHAQcBBwcBBwABBwABAAABAAAAAQAAAAAHAAEHAQMAAAAH
AwUFAAAFHx8fCQIoCQkJAhoYBhA9LhAGEAYrBgY4FxcUDicJAhQJCQkUAwEFAwUDAAEpAwUHAQAH
AAABAAABAAEAAQEAAAEAAQEAAQEAAAAWAAABAQABAAAAAAUDARYABQUFAwEDCQkJHwkJCQIUCRcX
CwY4DwYQCwYGBhAPEBcUAgkwFAkUCQkJBQMFJQUFAQADBQMBAAABBQAAAQcABwcABwABAAAHAAAH
AAAWAAAABwcABwMDAQEAAQMFAwABAwUDBQcFHwkUCQkUAgkCFAsGBgYGDw8LCxAGDwYQBgsCFAkU
CQkUCQkUAwMFAyUFAQUDBQMBACUDAQEAAQAHAAAWAAABBwcBAAABAAABBwAAAAABAAEAAwEAAAUF
BQUAAwMFBQUFCQkUFCcJJwICIwsLBhAGBjMPCwYLBgsGEAYVAg4JFBQOFAkJBQUDBQUDBQUDBQUA
AQMHAAEHAAEAFgAAFgEAAQAAAQEHAAEHAAABAQAAAQAHAQUAAQMFAwMFBQMFAwMFFAkfCQkCCQkE
HQ8LBgYQCwYLDxAGCwYLDwsOBDAJFBQCFBQJAwMFAwMFAwMFBQMABRYAAQABAAABAAABAAcAAAEW
AAABAAABAAAHAAcBBwEAAAMFAAUDAwUDBQUDBQUDCQkCHxQJMAQVBA8PBhAGBgsPDw8GCwYLDwsC
DgICFAknCRQCBQUDBQUFAwMFBQMFAyUFBQABAAEAAQAWAAABAAcBAAABAAABAAABAAEAAAMFAwMF
AwMFAwUFAwMFAwMFFAkUDgIUBAQCAgYQBgYLBgYLBgsGDzgPCwYCFQQEDgIJFBQUAwMFBQMFAwUF
BQUFBQMFAwUDAAABAAEAARYAAAAAFgEHAAEHAAcAAQAWAwUDBQUDBQUDBQUDAwUDBQUDCRQCFAkE
AgISDgYLBhAGEBAGDw8GEDMGEAYEAgIOBBQOFBQJBQMDAwMDBQMFBQMFAwUDBQMBAAEAFgAHBwAB
BxYAAAABBwABBwABAAAAAAUDBQMFAwMFAwMFBQUDAwUDCQIJAgIVBAQCBAsGCwYGEAsLEAYPBgYG
EAsCAgIOBAQVCScJAwMFAwUDBQUDBQMFBQUDJQABBwABFgAAAAEAAQEAAAAHAQcBAAABAAAHAAED
BQMDBQUDBQUDBQUDAwMFCQIUBAQOBBUEFQYQBhAGEAYGEAsGCwsGCwYCBAIEAgIEBAkUAQUDBQMF
AwMFAwUDAwUDFhYAABYAAAABBwAHAQcBBwcBBwAABwEAAAEAAQAAAwMFAwMFAwMFAwMFAwUDFBQC
BAQVAg4EIw8QBgYQBhALDwYGDwYLEAYEAgIEBCMOAhUCBQUDAwMFAwUFAwMFBQMAKQABAAABAAEA
AQEAAAAAAQAHAAEHAQcWAAABAAABAAMFAwUDBQUDBQUvAwUDAgQVDgQCDgIEAgYGBgYGCwY4Dw8G
DxALBgYCEgIEBAIEDgQCBQMFAQMDBQUDBQMFAwUDBQMFAwABAAEAAQEABwAHAQAABwcHAAABACUD
AwMFAwUDBQUDAwMFAwUDBQMDFQQCAgIEAgQCBA8PBhAGEAYQCg8PDwsLEBAEAgQCFQQCBAIVAQUD
AwMFAwMFAwUFBQMFBQUFAwEHAAABAAAWABYAAAAWAAABBwAHABYlJQMFBQMFAwUDBQUDBQMDAwUB
AgIEBBICEiMEAgYPKwsQBhUCDQ0PDxAQBhACEhUEAiMEAgQCAQMFAwMFAwMFAwMFAwUDBQUDAAAB
ABYAARYAAQABBwEABwcAAAEAFgABAwUDBQUDBQMFAwMDAwMDBQEvFQQEDgIEAhICBAYQBgYGBg4C
DSEKCg8GEAYCAg4SAhUVAg4EAQElAwMFAwMFAwMFBQUDAwAABwAWAAEHAQcBAQEBAAABAAcAAAAA
AQcBBwUDBQUDBQMDBQUDAwMDKQMvFQQEAgQCBAQCEgYGEBAEAhsOCg0KDA8PBgYEDgICAg4EFQIC
AS8BKQUDAwMDBQMDBQMFBQEAAQEAAQABAAEABwAABxYABwAWAAcWKQEAAQAFAwMFAwUDBQMDBS8B
AwEBAgQCBAIEBAICBAsGKxUOEhICCg0KCg0PDxAEAgIVEgQCBAQEKQElAQEFAwUFAwUDAwUDAwMF
AwUDBykHARYAARYAAQABAAAAFgAABQMFAwMFAwUDBQMFAwMDAwMBLykBBB0EAgICFQQEAhAGBgIC
DgIOCg0KDQ0NCg8CAgIEAg4EAgQEAhUCBAIEDgIJFCgJCQkJFCgfCQkIDAwMEwwTDAgMDAwIEwwM
DAwMLR8iHzcJCQkJFAkUFAICDg4OBAIEFRICBAIEDgIEBAYdBA4EGxIbDQoKCgoKDQ8SAg4EDgQE
EgQjBA4EAhUEBDAOFAkUAhQfCQkJCQwMCAgIExMICAgIEwgMCAgTCAgMDCIfHygWKBQUCRQJAgIV
EgQEDgIEDgQCFQQCBBUEAh0EDhsOAgIODQ0NCgoNCg0EAgICBAICAgICDgICBAIEDgIUAgkCFCgJ
CQkUHxMIDAwTCAwTExMMCBMIExMMCAgILQgWKBYoHwkOFAkUFAQCBAICBAQEAgQEFQQVAgIEBAQO
AhICGxsEDQoNCg0KDQ0mIQQSBAISAhUEAgQVBA4CBAQCBAkJCQkCFCgMCAw5EwwTDBMIOggTCAgT
CBMICAwMDAgMOigfCQkJCRQEAgQCBAQCAgQEAgQEAgISBAIiIgISAg4SAg4ECg0KDQoNCgomJgIC
BBICFQQjBAIEDgQEAhUEAhQUAhQJAgkCHx8JHwgMCAgIEwgMEwgIExMIDAkJKCgfAiIiKAkUAgQC
EgISAgQCBAICBAIVAgQCAjEdHQ4CGycODgQOCgoNCg0KDQ0hJiYEAgIEAgQOAgQCBAIEFQQOBBUC
CQkwCRQJCQkJCQgTCAgMCC0IDBMMCAgTExQJCR8CHwIJCQIJDg4EAgQCAgISAgQCBAQCBAQCBCIC
HQ4OBBInEhIODS4NCg0KCg0mISEmISMEAgQEAgQEBAQEAgQCBAQOFQkCFBQJCQIJLQgIEwgIEwgM
CAgTDAgIDBMTCQICCQIUHyMEBAIEAg4CFQIVAgIEAgIEDgIxHQIiHQIOEhsEDhICCgoNDQ0KDQoy
JiYyJg4CBAIVBAQCBBUCFRUVAgIEBAQJAgkUCQkICAwIDAgMCAwTCAwIEwwICAgIDBQJCQkUDhUC
BBUVAhUEAgQCDgQCBAQCDiIiHR0CHRsSJwQbGxsOCgoKCgoNCgoNJiEmISYVAhUEAgQVBAQVBAQE
FQQCBAQUFBQCCQgMDDkMCBMIDAgTCAgTCBMTCAwTCAkUAiIJFCMVFQQCBAIEBAIEBAIEEgQEFSId
HR0dHQQOEhIOBAQSDS4NIC4NCg0KDQoNCgoKDQ8PDwsGEBAGCwsPEBAQBg8QDxgXFxcaGBoYGzYa
KioZETAaLBoYFxcsGBcXGAYLEAsGEAYQBgYQBgYGCwsGBgYdAg4ODg4CEhsOEhIbEhI1DQ0uCg0K
DQ0NCg0NDQ0NCg8PDw8GCwYGBg8GCwYGBgsLBhoXGioXGBoXKiowGhERERgaKiwYGBcaFxoXKwsP
Dw8LBgsGCxAPBgsGEBALEAQOBAIbBAISGxIEJxsSGxsSCg0KDQ0NCgoKDQoKCgoKDQ0PDwYGEAsP
DwsPDwsPBgYGCxAPFxcaFxcYGBoYKhEZESoaFywaGhgqFxcYEAYGEBAPMzgPBgYrBhALEAYLBgIO
Dg4EDg4EAhsbEg4SAhIOCg0KICAKCgoKCgoNCg0KCgoNCg8PMwYGEBAPBgYGCwYGBhAGMxcXGhoa
FyoREREZERERGBgsGBoXGAYLCwsGBgsQBhAGDxAPBgYGDwYdEg4OAhsODg4OBBIbBAQOGxIbCgoN
DQ0NCgoNCg0KDQoKDQoNCg8PDwsPCwYQCxArBgYGCw8GBgsrGBgXGBEgESARICARIBcYFxcXFwsQ
BgsLEBALCwsGCwYQBisLBh0VJw4CGxInEhsSGxsSDhsEEhIbLiAuDS4NDQ0KDQ0KCg0KDSEKDQ0P
Dw8LBg8GBgYQBhAPDwYLBgYGGhcXGBERGRERERE0ERoYFxcXBgYGCwYGCxAGBhAGBgYLBgYGBgQC
EhIOBBsSAgIbBBISGxIbEgQSCiAuCg0gCgoKDQ0KCg0KDQ0KDQ0MCg8PBgYGCwYPBgYLBgsGBhAG
CxcRERERLhERGRERICARBgYGBgsQBhAGBgsLDw8GCwsQBhAEBAIbAhIOEg41DhsSGxsSGxsSEhsS
CgoKIAouDQ0gCgoKDQoNCgoNCgoKDQ8PDw8PDwsPEBAGCw8GDwsGBhERGSARERkRESAZEREREQ8Q
BgYLEAYLCwsQBgYQBgYPCxUCDg4SDgInDhIOEgQOEhIbEhISGxISEhISCiAKIC4KDQ0KCg0KDQ0K
DQ0KIQoPDwsGKwsGBgsGCw8QDwsLBhkZERE0EREZIBERICAgERALCxAGCwYQEBAGEAYLCxALBg4E
Dg4CJw4OEg41DhsSGxsSJxIbIC4KEhISCgoKDQ0KDQ0KDQ0KDQ0KIQoNCgoNCg8PDw8LBgYLDwYP
BgY0ETQRESARICA0ESARNBkRERk0BhAGEAYLEAsGCw8QBgsLHQ4CAgIOAgIODg4OBA4SDgQOEhIO
CgoN
));
LOG("Logo Bitmap generated from inline data.");
my $logoLabel = $mainWindow->AddLabel(
-name => "lblLogo",
-pos => [229, 10],
-size => [161, 101],
-align => "center",
-text => "Appia",
-style => 14,
-visible => 1
)
or ERROR("Could not initialize main window (Logo Label): $!");
LOG("Appia Logo Label added.");
$logoLabel->SetImage($logoBitmap);
$logoLabel->Resize(161, 101);
$mainWindow->AddButton(
-name => "btnStart",
-pos => [75, 131],
-size => [80, 20],
-align => "center",
-valign => "center",
-default=> 1,
-ok => 1,
-text => " &Start"
)
or ERROR("Could not initialize main window (Start Button): $!");
LOG("Start Button added.");
$mainWindow->AddButton(
-name => "btnMainCancel",
-pos => [245, 131],
-size => [80, 20],
-align => "center",
-valign => "center",
-cancel => 1,
-text => " &Cancel"
)
or ERROR("Could not initialize main window (Cancel Button): $!");
LOG("Cancel Button added.");
$mainWindow->AddLabel(
-name => "lblProgress",
-pos => [10, 200],
-size => [100, 20],
-align => "right",
-fill => "white",
-text => "Progress:"
)
or ERROR("Could not initialize main window (Progress Label): $!");
LOG("Progress Label added.");
LOG("All GUI elements initialized.");
}
sub TerminateGUI
{
if (@_)
{
LOG("Terminating GUI on error:\n$_[0].");
}
else
{
LOG("Terminating GUI.");
}
return -1;
}
sub MainWindow_Terminate
{
return TerminateGUI();
}
sub btnMainCancel_Click
{
LOG("User clicked on Main Cancel button.");
return TerminateGUI();
}
sub btnStart_Click
{
LOG("Pressed on Start");
}
sub LOG
{
print STDERR "LOG: ".$_[0]."\n";
}
sub WARN
{
LOG(@_);
}
sub ERROR
{
print STDERR "ERROR: ".$_[0]."\n";
exit(1);
}
===
Here's the code that works, based on the Bitmap Sample by erick.
===
use Win32::GUI;
use Win32::GUI::BitmapInline ();
$M = Win32::GUI::MakeMenu(
"&File" => "File",
" > &Open" => "Open",
" > E&xit" => "Exit",
"&Bitmap" => "Bitmap",
" > &Info" => "Info",
" > &Resize window to bitmap" => "Resize",
);
$W = new Win32::GUI::Window(
-title => "Win32::GUI::Bitmap test",
-left => 100,
-top => 100,
-width => 400,
-height => 400,
-style => WS_OVERLAPPEDWINDOW,
-menu => $M,
-name => "Window",
) or print_and_die("new Window");
#$B = new Win32::GUI::Bitmap('zapotec.bmp') or print_and_die("new Bitmap");
$B = new Win32::GUI::BitmapInline( q(
Qk0yJQAAAAAAADIBAAAoAAAAYAAAAGAAAAABAAgAAAAAAAAkAAASCwAAEgsAAD8AAAA/AAAAACml
AAg5pQAYQpwACDmtABhClAAAOa0AKVKMAAApnAAYKYwAGEKlABA5hAAhUowAECmMABAxhAAhQpwA
IUqMAClSlAAhMXsAIUKUABgxjAAYSqUAGDmUAAg5nAApWpwAIVqcACE5hAAhUpwAIUqcABg5pQAY
OZwAGEKtABBCpQAYMXsACDGEABA5nAAQOZQAGDmtAAAxrQAIKYwAGEqcABBCnAAAMaUAIVqlACFS
lAApWqUAECGEABhChAAAOaUAIVKlABAxnAAIKYQAGEqMACExhAAYSpQAGFKcABA5pQApWpQAGCl7
ABAhjAAQQpQACCGEABhKhAAYUpQAEhISCgogCg0gCgoKCgoNCgoNCgoNCgoNDQYPCwsGBisGBgYQ
KwsQEREZIBkgEREZEREZERERERELEBAGKxALEA8GBgYGEAYLBAIVHR0SAicONTUOGw4SGw4bEhsS
DSAuEhISCg0KDQoKIAogCg0KDQ0KDSEKDQoKDwYGEAsPCwsLCwYGBgYGEBERERERIBERGREZERkR
GRAGBgYQBgYLCxAGDxALCzMGHR0EFRUCFQ4SDhsSDicSDjUSGwQSIA0KDQ0gCg0uDQ0uDQ0KDQ0K
CgoNCg0KCgsGEAYGEAsQBhAGEAsQECsGCxcXNBEREREZERkRGTQRFxcPBgY4CwYLBgsGEBALBhAQ
MwIVHR0CFQ4nEhsSBDUOEgQSEhIEEhIbCgoKIAoKDQoNDQoNCgoNCgoKDQohDQYQBisLBgYGEAsP
CwYLBgYLFxgXGhkRGRkREREZEREXFxcYEAsQBhAGEAYGCwsLDwYGCwYEIwQVFSMOBAQCEgQOBBIb
EhIbEhISDSAKCg0NCgoKCg0KDQ0KDSENCg0NCwsPDwYLDysLBhAQBhAGOAsXGhcYGhEREREZERkR
ERgYGhcXFxAGEA8LDwsQBgYGBgsGBgsQAgICAgQCFRIbDhsSGxsSDhsSGxsSCg0KDQoNCg0KDQ0K
DSEKCg0KCgYPBgYGCwsQBgsQDw8LBjMGFxcaFxgaGBoYERkZERERKhoqFywXGhcXBg8GEBAPCxAG
EBAGEBAGDxUCAgQdFQQCDicSGxIbEhIbEhISDQoKDQoKDQoNCgoNCgoNDQoNDRAGBgYGCxAPCwsL
BgYGCxAGFxcXGhcXGCoYKhERERkaGiwYGhgsFxoXEBAGBgYGCw8rBg8LCzMGBjMjFR0EAhUCBAQO
EgISGwISGxsECg0KCg0KDQ0KDQ0KDQ0KIQohKwYLBhAPEAYrCwsLBisGCxcXGBcYLBgYMBoaMCAZ
GSoaKhoqGBcYFxcXFwsQDwsPEAYGCxAPDwYGDxAGIxUiFR0VAhsEDhICEhICEhIODQoKDQ0KDQ0m
ISEmISYhJgIEDgQCBCMCAgQCBAIVBBUVBAkUCAwIDC0TCAwTEwgIDBMMCAgIEwgMExMIFBQVAgQC
BAISAgQEAhUjBAICBCIxIjEiMSIdHQISDicSDg4SCg0KCgoNCgomISEmISEmJgICBAIEDhIEBAIE
AgQCBAQJFAkCCQgMEwgIDAwIDAwIEwgTDAgMCBMTCAgnCQkwAgIEFQIEAgICEg4CBBUEFQ4iMSIx
HTEiHRIONQQbEgQSDQoNCg0KDQ0hJiEmISYyDgQODgIEBAIEAgIEFQIEFQQJAhQUFAgIDAwICAwI
CBMTDAgMEwgTCAwIEwIUFA4UFAQCBAQVAgQEAgQCFQICBCMOIiIdIh0iMQ4EDhICEhICDQoNCg0K
DQ0hJiYhMgIEAgQCBAIEAiMOAhUjFQQOCQkJFAkCFAkJEwwIDAwIExMIEwwTCAgMDBMICQkJFAkJ
FAIUBAIEBAIEAgQCBAIVAg4EBDEiHTExHRUCEgQCEhInCgoNCgoNCgomITImJgQCBAISBBICAhIC
EgICDhIUAhQnAhQJCRQJHxMICDkMDAwIDAgMCAwTDAwJFB8UAgIUAicJFAQCBAQVBAICBAIEBAQC
AgQiMSIiMR0EHRsSDg4ODQoNCg0KIQ0mJiYyAgIEHQQCAgQOBAICBBICBBQCFAkJCQkUCQkfCQgT
CAgMCAwTCAwMCAgICB8JCQkJCQkCCQkUAgQCBCMEAgQCBAQCBAQEAhUCIh0iIiMdBAIONQQSDQoN
DSEhDQ0mMgQEAg4VBAQCBAIEAgIEAgQEFBQCCQknCRQtDAgIDBMMEwgMEwgMCBMICAgMCAgTCBMM
EwkUCQkJJwknAhUOAh0EAgIEAgI7BAQEAiIiHQQVIwQdEgISCg0KCg0KDQomMgIVBAQjIwIODgIS
AgQCFRIUAgkJMBQJFAkUCAgTCAgIExMIDAwICAgTDAgIDBMMCAgICQkJAgIUCScJJwQEBAQCBAQC
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
DAgTEwwICBMIExcXNhgaGBERGRcXGhgsGCwTCAwtCAwIExMIARYAAAAWAAEAFhYAAQEHAAAAAQEA
ACQcHgkkDh4kDg4eHBwkHCQBAAAAFgABBwEAABYAAQAWAAEHAAcBOQwtDBQTCAgICBoqGhcXFxk0
ERcYFxcaGhoIEwgMKBMICAwTBwABBwEAFgABAAABAAEAAQEABwEHAQ4cHB4OHBwJHBweDh4OHA4A
FgEAAAAAAQABBwABBwcAAQABBwApDAgMCAkJExMTExgXGBcYFxcREBAGFxg+GhcMCCgUCQgIDAgU
BQcBAAAAAQAAFgABAAABAAEAAQcAAQEAAQABAAAAAQABBwAWAAEHAQAWAAEABwEHAAABAAcAAQAB
BwADHwgMCBQJCRMIExoXGBoYBgYGECsGGBc2FyoIDB8fHxMICB8JAwEHAAEDAAEBAAEAAAcABwcA
AAABAAEHAAcHBxYAABYAAQAAAAABAAEAFgABAAAAARYAFgABBQEAAQEDHy0IDAkJFBQICBoXFxca
CwYQEAYQBhcXGBoIBCgUAgwMCBQfAwABAAUDAQAHAQABBwEAAQEABwEAAQABBwEBAAABAAAABwAB
AAAAAQAABwcAAQEABwAAAAApAwAHAAcFHwkIDAkJCQkEDBgYFwYLEAYQBhAGCxAPGBoJFAkoCQgU
CQkUBQcABQMFAQAAAQMBABYAAQEHAAEHAQcBBwcBBwABBwABAAABAAAAAQAAAAAHAAEHAQMAAAAH
AwUFAAAFHx8fCQIoCQkJAhoYBhA9LhAGEAYrBgY4FxcUDicJAhQJCQkUAwEFAwUDAAEpAwUHAQAH
AAABAAABAAEAAQEAAAEAAQEAAQEAAAAWAAABAQABAAAAAAUDARYABQUFAwEDCQkJHwkJCQIUCRcX
CwY4DwYQCwYGBhAPEBcUAgkwFAkUCQkJBQMFJQUFAQADBQMBAAABBQAAAQcABwcABwABAAAHAAAH
AAAWAAAABwcABwMDAQEAAQMFAwABAwUDBQcFHwkUCQkUAgkCFAsGBgYGDw8LCxAGDwYQBgsCFAkU
CQkUCQkUAwMFAyUFAQUDBQMBACUDAQEAAQAHAAAWAAABBwcBAAABAAABBwAAAAABAAEAAwEAAAUF
BQUAAwMFBQUFCQkUFCcJJwICIwsLBhAGBjMPCwYLBgsGEAYVAg4JFBQOFAkJBQUDBQUDBQUDBQUA
AQMHAAEHAAEAFgAAFgEAAQAAAQEHAAEHAAABAQAAAQAHAQUAAQMFAwMFBQMFAwMFFAkfCQkCCQkE
HQ8LBgYQCwYLDxAGCwYLDwsOBDAJFBQCFBQJAwMFAwMFAwMFBQMABRYAAQABAAABAAABAAcAAAEW
AAABAAABAAAHAAcBBwEAAAMFAAUDAwUDBQUDBQUDCQkCHxQJMAQVBA8PBhAGBgsPDw8GCwYLDwsC
DgICFAknCRQCBQUDBQUFAwMFBQMFAyUFBQABAAEAAQAWAAABAAcBAAABAAABAAABAAEAAAMFAwMF
AwMFAwUFAwMFAwMFFAkUDgIUBAQCAgYQBgYLBgYLBgsGDzgPCwYCFQQEDgIJFBQUAwMFBQMFAwUF
BQUFBQMFAwUDAAABAAEAARYAAAAAFgEHAAEHAAcAAQAWAwUDBQUDBQUDBQUDAwUDBQUDCRQCFAkE
AgISDgYLBhAGEBAGDw8GEDMGEAYEAgIOBBQOFBQJBQMDAwMDBQMFBQMFAwUDBQMBAAEAFgAHBwAB
BxYAAAABBwABBwABAAAAAAUDBQMFAwMFAwMFBQUDAwUDCQIJAgIVBAQCBAsGCwYGEAsLEAYPBgYG
EAsCAgIOBAQVCScJAwMFAwUDBQUDBQMFBQUDJQABBwABFgAAAAEAAQEAAAAHAQcBAAABAAAHAAED
BQMDBQUDBQUDBQUDAwMFCQIUBAQOBBUEFQYQBhAGEAYGEAsGCwsGCwYCBAIEAgIEBAkUAQUDBQMF
AwMFAwUDAwUDFhYAABYAAAABBwAHAQcBBwcBBwAABwEAAAEAAQAAAwMFAwMFAwMFAwMFAwUDFBQC
BAQVAg4EIw8QBgYQBhALDwYGDwYLEAYEAgIEBCMOAhUCBQUDAwMFAwUFAwMFBQMAKQABAAABAAEA
AQEAAAAAAQAHAAEHAQcWAAABAAABAAMFAwUDBQUDBQUvAwUDAgQVDgQCDgIEAgYGBgYGCwY4Dw8G
DxALBgYCEgIEBAIEDgQCBQMFAQMDBQUDBQMFAwUDBQMFAwABAAEAAQEABwAHAQAABwcHAAABACUD
AwMFAwUDBQUDAwMFAwUDBQMDFQQCAgIEAgQCBA8PBhAGEAYQCg8PDwsLEBAEAgQCFQQCBAIVAQUD
AwMFAwMFAwUFBQMFBQUFAwEHAAABAAAWABYAAAAWAAABBwAHABYlJQMFBQMFAwUDBQUDBQMDAwUB
AgIEBBICEiMEAgYPKwsQBhUCDQ0PDxAQBhACEhUEAiMEAgQCAQMFAwMFAwMFAwMFAwUDBQUDAAAB
ABYAARYAAQABBwEABwcAAAEAFgABAwUDBQUDBQMFAwMDAwMDBQEvFQQEDgIEAhICBAYQBgYGBg4C
DSEKCg8GEAYCAg4SAhUVAg4EAQElAwMFAwMFAwMFBQUDAwAABwAWAAEHAQcBAQEBAAABAAcAAAAA
AQcBBwUDBQUDBQMDBQUDAwMDKQMvFQQEAgQCBAQCEgYGEBAEAhsOCg0KDA8PBgYEDgICAg4EFQIC
AS8BKQUDAwMDBQMDBQMFBQEAAQEAAQABAAEABwAABxYABwAWAAcWKQEAAQAFAwMFAwUDBQMDBS8B
AwEBAgQCBAIEBAICBAsGKxUOEhICCg0KCg0PDxAEAgIVEgQCBAQEKQElAQEFAwUFAwUDAwUDAwMF
AwUDBykHARYAARYAAQABAAAAFgAABQMFAwMFAwUDBQMFAwMDAwMBLykBBB0EAgICFQQEAhAGBgIC
DgIOCg0KDQ0NCg8CAgIEAg4EAgQEAhUCBAIEDgIJFCgJCQkJFCgfCQkIDAwMEwwTDAgMDAwIEwwM
DAwMLR8iHzcJCQkJFAkUFAICDg4OBAIEFRICBAIEDgIEBAYdBA4EGxIbDQoKCgoKDQ8SAg4EDgQE
EgQjBA4EAhUEBDAOFAkUAhQfCQkJCQwMCAgIExMICAgIEwgMCAgTCAgMDCIfHygWKBQUCRQJAgIV
EgQEDgIEDgQCFQQCBBUEAh0EDhsOAgIODQ0NCgoNCg0EAgICBAICAgICDgICBAIEDgIUAgkCFCgJ
CQkUHxMIDAwTCAwTExMMCBMIExMMCAgILQgWKBYoHwkOFAkUFAQCBAICBAQEAgQEFQQVAgIEBAQO
AhICGxsEDQoNCg0KDQ0mIQQSBAISAhUEAgQVBA4CBAQCBAkJCQkCFCgMCAw5EwwTDBMIOggTCAgT
CBMICAwMDAgMOigfCQkJCRQEAgQCBAQCAgQEAgQEAgISBAIiIgISAg4SAg4ECg0KDQoNCgomJgIC
BBICFQQjBAIEDgQEAhUEAhQUAhQJAgkCHx8JHwgMCAgIEwgMEwgIExMIDAkJKCgfAiIiKAkUAgQC
EgISAgQCBAICBAIVAgQCAjEdHQ4CGycODgQOCgoNCg0KDQ0hJiYEAgIEAgQOAgQCBAIEFQQOBBUC
CQkwCRQJCQkJCQgTCAgMCC0IDBMMCAgTExQJCR8CHwIJCQIJDg4EAgQCAgISAgQCBAQCBAQCBCIC
HQ4OBBInEhIODS4NCg0KCg0mISEmISMEAgQEAgQEBAQEAgQCBAQOFQkCFBQJCQIJLQgIEwgIEwgM
CAgTDAgIDBMTCQICCQIUHyMEBAIEAg4CFQIVAgIEAgIEDgIxHQIiHQIOEhsEDhICCgoNDQ0KDQoy
JiYyJg4CBAIVBAQCBBUCFRUVAgIEBAQJAgkUCQkICAwIDAgMCAwTCAwIEwwICAgIDBQJCQkUDhUC
BBUVAhUEAgQCDgQCBAQCDiIiHR0CHRsSJwQbGxsOCgoKCgoNCgoNJiEmISYVAhUEAgQVBAQVBAQE
FQQCBAQUFBQCCQgMDDkMCBMIDAgTCAgTCBMTCAwTCAkUAiIJFCMVFQQCBAIEBAIEBAIEEgQEFSId
HR0dHQQOEhIOBAQSDS4NIC4NCg0KDQoNCgoKDQ8PDwsGEBAGCwsPEBAQBg8QDxgXFxcaGBoYGzYa
KioZETAaLBoYFxcsGBcXGAYLEAsGEAYQBgYQBgYGCwsGBgYdAg4ODg4CEhsOEhIbEhI1DQ0uCg0K
DQ0NCg0NDQ0NCg8PDw8GCwYGBg8GCwYGBgsLBhoXGioXGBoXKiowGhERERgaKiwYGBcaFxoXKwsP
Dw8LBgsGCxAPBgsGEBALEAQOBAIbBAISGxIEJxsSGxsSCg0KDQ0NCgoKDQoKCgoKDQ0PDwYGEAsP
DwsPDwsPBgYGCxAPFxcaFxcYGBoYKhEZESoaFywaGhgqFxcYEAYGEBAPMzgPBgYrBhALEAYLBgIO
Dg4EDg4EAhsbEg4SAhIOCg0KICAKCgoKCgoNCg0KCgoNCg8PMwYGEBAPBgYGCwYGBhAGMxcXGhoa
FyoREREZERERGBgsGBoXGAYLCwsGBgsQBhAGDxAPBgYGDwYdEg4OAhsODg4OBBIbBAQOGxIbCgoN
DQ0NCgoNCg0KDQoKDQoNCg8PDwsPCwYQCxArBgYGCw8GBgsrGBgXGBEgESARICARIBcYFxcXFwsQ
BgsLEBALCwsGCwYQBisLBh0VJw4CGxInEhsSGxsSDhsEEhIbLiAuDS4NDQ0KDQ0KCg0KDSEKDQ0P
Dw8LBg8GBgYQBhAPDwYLBgYGGhcXGBERGRERERE0ERoYFxcXBgYGCwYGCxAGBhAGBgYLBgYGBgQC
EhIOBBsSAgIbBBISGxIbEgQSCiAuCg0gCgoKDQ0KCg0KDQ0KDQ0MCg8PBgYGCwYPBgYLBgsGBhAG
CxcRERERLhERGRERICARBgYGBgsQBhAGBgsLDw8GCwsQBhAEBAIbAhIOEg41DhsSGxsSGxsSEhsS
CgoKIAouDQ0gCgoKDQoNCgoNCgoKDQ8PDw8PDwsPEBAGCw8GDwsGBhERGSARERkRESAZEREREQ8Q
BgYLEAYLCwsQBgYQBgYPCxUCDg4SDgInDhIOEgQOEhIbEhISGxISEhISCiAKIC4KDQ0KCg0KDQ0K
DQ0KIQoPDwsGKwsGBgsGCw8QDwsLBhkZERE0EREZIBERICAgERALCxAGCwYQEBAGEAYLCxALBg4E
Dg4CJw4OEg41DhsSGxsSJxIbIC4KEhISCgoKDQ0KDQ0KDQ0KDQ0KIQoNCgoNCg8PDw8LBgYLDwYP
BgY0ETQRESARICA0ESARNBkRERk0BhAGEAYLEAsGCw8QBgsLHQ4CAgIOAgIODg4OBA4SDgQOEhIO
CgoN
));
($width, $height) = ($W->GetClientRect)[2..3];
$BITMAP = $W->AddLabel(
-left => 0,
-top => 0,
-width => $width,
-height => $height,
-style => 14,
-name => "Bitmap",
-visible => 1,
-text => "ouch",
);
$BITMAP->SetImage($B);
$BITMAP->Resize($width, $height);
$I = new Win32::GUI::DialogBox(
-title => "Bitmap info",
-left => 110,
-top => 110,
-width => 300,
-height => 200,
-name => "InfoWindow",
);
$ttop = 10;
$I_Width = MakeInfoControls("Width", "Width:");
$I_Height = MakeInfoControls("Height", "Height:");
$I_Depth = MakeInfoControls("Depth", "Color depth:");
$I_Compr = MakeInfoControls("Compr", "Compression:");
$I_Size = MakeInfoControls("Size", "Image size:");
sub MakeInfoControls {
my($name, $text) = @_;
my $Lbl = $I->AddLabel(
-text => $text,
-left => 10,
-top => $ttop,
-name => $name."_Label",
);
my $Ctrl = $I->AddLabel(
-text => "I'm a placeholder",
-left => 110,
-top => $ttop,
-name => $name,
);
$ttop += 22;
return $Ctrl;
}
$I_Close = $I->AddButton(
-text => "Close",
-left => $I->ScaleWidth-70,
-top => $I->ScaleHeight-35,
-width => 60,
-height => 25,
-name => "InfoClose",
);
$W->Show;
Win32::GUI::Dialog();
sub Window_Resize {
$BITMAP->Resize($W->ScaleWidth, $W->ScaleHeight);
}
sub Window_Terminate {
$W->PostQuitMessage(0);
}
sub Open_Click {
my $file = "*.bmp\0" . " " x 260;
$file = GUI::GetOpenFileName(-file => $file);
print $file, "\n";
undef $B;
$B = new GUI::Bitmap($file);
if($B) {
$BITMAP->SetImage($B);
Window_Resize();
}
}
sub Info_Click {
$W->Disable();
my ($x, $y, $depth, $compr, $size) = $B->Info();
my @compr = qw( Uncompressed RLE-8bit RLE-4bit Uncompressed );
print "X = $x\nI_Width = $I_Width\n";
$I_Width->Text($x);
$I_Height->Text($y);
$I_Depth->Text($depth);
$I_Compr->Text($compr[$compr]);
$I_Size->Text($size);
$I->Show();
}
sub InfoWindow_Terminate {
$W->Enable();
$W->SetForegroundWindow();
$I->Hide();
return 0;
}
sub InfoClose_Click {
InfoWindow_Terminate();
}
sub Resize_Click {
my ($x, $y) = $B->Info();
my $ax = $W->Width - $W->ScaleWidth;
my $ay = $W->Height - $W->ScaleHeight;
if($x and $y) {
print "Bitmap size is $x x $y\n";
$W->Resize($x+$ax, $y+$ay);
} else {
print "Can't get bitmap size...\n";
print "LastError=", Win32::GetLastError(), "\n";
}
}
sub Exit_Click {
$W->PostQuitMessage(0);
}
sub print_and_die {
my($text) = @_;
my $err = Win32::GetLastError();
die "$text: Error $err\n";
}
===