Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Dialog box erzeugen


4 replies to this topic

segutmach

segutmach
  • Members
  • 9 posts

Posted 08 May 2003 - 12:17

Hallo!

Hilfe! Wie kann ich ein selbstdefiniertes Dialog box erstellen? Ich erstelle ein Dialog, dann definiere ihn laut Hilfedateien in meinem Script file. Und wenn ich es laufen lasse, dann erscheint er sich nicht.
Weiss vielleicht jemand, wo das Problem liegen kann?

So sieht der Code aus:

function NUMBER _fnHalloDialog( )
STRING szDLLName, szDialogName;
NUMBER nResult, nCmdValue, nReturn;
BOOL bDone;

begin
szDialogName = "HalloDialog";
szDLLName = SUPPORTDIR ^ "_ISUSER.DLL";
nResult = UseDLL ( szDLLName );
if ( nResult < 0 ) then
MessageBox ( "function was unable to load the DLL", WARNING );
abort;
endif;

nResult = EzDefineDialog ( "My Dialog", // nickname for dialog
ISUSER, // DLL containing the dialog's resources
szDialogName , // name of dialog in Dialogs view
0 ); // numeric resource ID for dialog; not used here
if ( nResult < 0 ) then
MessageBox ( "error in defining dialog", WARNING );
abort;
endif;

bDone = FALSE;
while ( !bDone )
nCmdValue = WaitOnDialog( "HalloDialog" );

switch ( nCmdValue )
case BUTTON_BACK:
// user clicked Back
nReturn = BUTTON_BACK;
bDone = TRUE;
case BUTTON_NEXT:
// user clicked Next
nReturn = BUTTON_NEXT;
bDone = TRUE;
case BUTTON_CANCEL:
// user clicked Cancel; ask user to verify cancellation
Do(EXIT);
endswitch;
endwhile;

EndDialog(szDialogName);
ReleaseDialog(szDialogName);


nResult = UnUseDLL ( szDLLName );
if (nResult < 0 ) then
MessageBox ( "function was unable to unload the DLL", WARNING );
endif;

end;

Die Funktion rufe ich dann in Setup.rul auf.

Ich würde sehr dankbar sein, wenn mir jemand hilft!


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 09 May 2003 - 14:05

Gibt es eine Fehlermeldung?
Bist du mal mit dem Debugger durch den Code gegangen (Schritt-für-Schritt), um zu sehen, ob er überhaupt aufgerufen wird?

segutmach

segutmach
  • Members
  • 9 posts

Posted 12 May 2003 - 08:47

Ja, mit dem Debugger bin ich durch den Code gegangen. Das Fenster wird gar nicht aufgerufen (es wird gar nicht angezeigt). Beim Aufruf der Funktion WaitOnDialog() ist ihr Return Wert '-1'. D. h., dass es einen Fehler gibt. Ich weiß nicht, wie ich weiter vorgehen soll.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 12 May 2003 - 09:28

Der erste parameter in EzDefineDialog muss mit dem Parameter in WaitOnDialog übereinstimmen.
Ausserdem kannst du dir das useDLL und die Angabe von _isuser.dll sparen. Wenn du als zweiten Parameter in EzDefineDialog einfach "" angibst, wird automatisch _isuser.dll verwendet.

Am besten schaust du dir mal den Beispiel-Code in der Hilfe an, dann werden die Zusammenhänge klarer.

segutmach

segutmach
  • Members
  • 9 posts

Posted 12 May 2003 - 10:10

Die Änderungen habe ich vorgenommen. Das kommt aber immer wieder zu dem Problem an der gleichen Stelle. Sollte ich vielleicht das Dialog box irgendwie registrieren?

Da ist nocheinmal der geänderte Code:
EzDefineDialog( "MyDialog1", // nickname for dialog
"", // DLL containing the dialog's resources
"HalloDialog1", // name of dialog in Dialogs view
0 ); // numeric resource ID for dialog; not used here
bDone = FALSE;
while (bDone = FALSE)

nControl = WaitOnDialog("MyDialog1"); //!!!!!!!!!!!!

switch (nControl)

case BUTTON_NEXT:
// user clicked Next
nReturn = BUTTON_NEXT;
bDone = TRUE;

endswitch;

endwhile;

EndDialog("MyDialog1");
ReleaseDialog("MyDialog1");