{ Programm:   AppIcon
  ~~~~~~~~
  Sprache:   MaxonPASCAL 3 / KickPascal 2.12 / OS 2.0-Includes
  ~~~~~~~~
  Sinn:      einfachere AppIcon-Programmierung und Verarbeitung
  ~~~~~           
  Autor:     PackMAN
  ~~~~~~     c/o Falk Zühlsdorff
             Lindenberg 66
             D-98693 Ilmenau/Thüringen

  ©:         FREEWARE wenn Autor in .dok / Infofenster des nicht-
                      kommerziellen Progr. erwähnt wird.

  Kommentar: Version für MAXON
  ~~~~~~~~~~ ab OS2                                                    }

PROGRAM appicon;
USES EXEC;
{$INCL 'dos.lib',
       'workbench/startup.h',
       'icon.lib',
       'wb.lib'}

TYPE    ifeld=array[1..48] of long;     {für Image}

VAR dobj       : p_DiskObject;
    myPort     : p_MsgPort;
    MyAppIcon  : p_AppIcon;
    AppMsg     : p_AppMessage;
    ex         : boolean;
    Gad        : Gadget;
    Image1     : Image;
    idat1      : ^ifeld;
    mytask     : p_task;

BEGIN
 mytask:=NIL;
 mytask:=FindTask('Workbench');             { WB offen ??? }
 IF mytask=NIL THEN exit;                   { Nein: chio...}
 IconBase:=OpenLibrary('icon.library',37);
 IF IconBase=NIL THEN exit;
 workbenchbase:=OpenLibrary('workbench.library',37);
 IF workbenchbase=NIL THEN exit;

 idat1:=ptr(alloc_mem(sizeof(ifeld),2)); {Chip}
  idat1^:=ifeld(
 %000000000000000000000000000000,
 %111111111111111111111111111110,
 %100000000000000000000000000010,
 %100001111111110100001000000010,
 %100000000100000010010000000010,
 %100000000100000001100000000010,
 %100000000100000001100000000010,
 %100000000100000010010000000010,
 %100000000100000100001000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %100000000000000000000000000010,
 %111111111111111111111111111110,
 %000000000000000000000000000000,

 %000000000000000000000000000000,
 %000000000000000000000000000000,
 %011111111111111111111111111100,
 %011110000000001011110111111100,
 %011111111011111101101111111100,
 %011111111011111110011111111100,
 %011111111011111110011111111100,
 %011111111011111101101111111100,
 %011111111011111011110111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %011111111111111111111111111100,
 %000000000000000000000000000000,
 %000000000000000000000000000000);

 Image1:=image(0,0,32,24,2,idat1,3,0,nil);
 Gad:=Gadget(NIL,0,0,32,25,GADGIMAGE,GADGIMMEDIATE+
             RELVERIFY,BOOLGADGET,^Image1,NIL,NIL,0,NIl,0,NIL);
 dobj:=GetDefDiskObject(WBDISK);
 dobj^.do_Gadget:=Gad;
 myport:=CreateMsgPort;
 myappicon:=AddAppIconA(0,0,'Klick AppIcon',myport,NIL,dobj,NIL);
 ex:=false;
 REPEAT
  AppMsg:=wait_port(myport);
  AppMsg:=get_msg(myport);
  Reply_Msg(AppMsg);
  IF AppMsg^.am_NumArgs=0
   THEN ex:=true; {Doppelklick/aktiv}
 UNTIL ex;
 ex:=RemoveAppIcon(myAppIcon);
 FreeDiskObject(dobj);
 DeleteMsgPort(myport);
END.

