Appendix A

See Graphic

Corel® PerfectScript™ Examples





8072

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate REGIONRESETLIST command
Loop = 1
Yes = 6
WM_SYSCOMMAND = 274
DIALOGDEFINE(1000; 20; 20; 107; 125; NoFrame!; "RegionResetList")
DIALOGADDFRAME(1000; 100; 10; 10; 10; 10; Frame! | Filled! | Gray!)
DIALOGADDHOTSPOT(1000; 101; 10; 10; 10; 10; Click!)
DIALOGADDTEXT(1000; 0; 28; 10; 75; 15; Left!; "Click to clear list")
DIALOGADDLISTBOX(1000; 102; 10; 35; 85; 75; Sorted!; var)
CALL(AddItems)
DIALOGSHOW(1000; 101; Msg)
WHILE(Loop = 1)
ENDWHILE
DIALOGDESTROY(1000)
QUIT
LABEL(Msg)
 IF(Msg[5] = WM_SYSCOMMAND)
  Loop = 0
 ENDIF
 IF(Msg[3] = 101)
  REGIONRESETLIST("1000.102")
   MESSAGEBOX(vResult; "Macro Example"; "Do 
    you want to start over?"; IconQuestion! | YesNo!)
 IF(vResult = Yes)
  CALL(AddItems)
 ELSE
  Loop = 0
 ENDIF
 ENDIF
 RETURN
LABEL(AddItems)
 FOREACH(vList; {"Apples"; "Bananas"; "Oranges"; "Grapes"; "Pears"})
  DIALOGADDLISTITEM(1000; 102; vList)
 ENDFOR
 RETURN

8073

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate REGIONSELECTLISTITEM command
Loop = 1
lParam = 7
WM_SYSCOMMAND = 274
DIALOGDEFINE(1000; 50; 50; 205; 125; Percent! | NoFrame!; "RegionSelectListItem")
DIALOGADDTEXT(1000; 0; 0; 15; 107; 15; Center!; "Select a fruit")
DIALOGADDLISTBOX(1000; 100; 11; 35; 85; 75; Sorted!; var)
DIALOGADDLISTBOX(1000; 101; 108; 35; 85; 75; UnSorted!; var)
FOREACH(vList; {"Oranges"; "Grapes"; "Apples"; "Pears"; "Watermelon"; "Grapefruit"; 
"Peaches"; "Bananas"})
 DIALOGADDLISTITEM(1000; 100; vList)
 DIALOGADDLISTITEM(1000; 101; vList)
ENDFOR
DIALOGHANDLE(hItem; 1000; 100)
DIALOGSHOW(1000; 100; Msg)
WHILE(Loop = 1)
ENDWHILE
DIALOGDESTROY(1000)
QUIT
LABEL(Msg)
 IF(Msg[5] = WM_SYSCOMMAND)
  Loop = 0
 ENDIF
 IF(LWORD(Msg[lParam]) = hItem)
  REGIONGETSELECTEDTEXT(vSelectItem; "1000.100")
  REGIONSELECTLISTITEM("1000.101"; vSelectItem)
 ENDIF
 RETURN
FUNCTION LWORD(vNum)
 vNum = vNum & 65535
 RETURN(vNum)
ENDFUNC

8074

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate REGIONSETCHECK command
Loop = 1
WM_SYSCOMMAND = 274
vCheck = 1
DIALOGDEFINE(1000; 50; 50; 160; 75; Percent! | NoFrame!; "RegionSetCheck")
DIALOGADDFRAME(1000; 100; 10; 10; 10; 10; Frame! | Filled! | Gray!)
DIALOGADDHOTSPOT(1000; 101; 10; 10; 10; 10; Click!)
DIALOGADDTEXT(1000; 0; 28; 10; 125; 15; Left!; "Click to select/deselect 
check box")
DIALOGADDCHECKBOX(1000; 102; 60; 35; 50; 15; "Check Box"; var)
DIALOGSHOW(1000; 101; Msg)
WHILE(Loop = 1)
ENDWHILE
DIALOGDESTROY(1000)
QUIT
LABEL(Msg)
 IF(Msg[5] = WM_SYSCOMMAND)
  Loop = 0
 ENDIF
 IF(Msg[3] = 101)
 IF(vCheck = 1)
  REGIONSETCHECK("1000.102"; Check!)
  vCheck = 0
 ELSE
  REGIONSETCHECK("1000.102"; UnCheck!)
  vCheck = 1
 ENDIF
 ENDIF
 RETURN

8075

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate REGIONSETFOCUS command
Loop = 1
lParam = 7
WM_SYSCOMMAND = 274
DIALOGDEFINE(1000; 20; 30; 107; 110; NoFrame!; "RegionSetFocus")
DIALOGADDTEXT(1000; 0; 0; 15; 107; 15; Center!; "Select a button")
DIALOGADDLISTBOX(1000; 100; 10; 35; 85; 35; Sorted!; var)
FOREACH(vList; {"Radio Button 1"; "Radio Button 2"; "Radio Button 3"})
 DIALOGADDLISTITEM(1000; 100; vList)
ENDFOR
DIALOGHANDLE(hItem; 1000; 100)
DIALOGADDRADIOBUTTON(1000; 101; 10; 75; 15; 15; "1"; var)
DIALOGADDRADIOBUTTON(1000; 102; 40; 75; 15; 15; "2"; var)
DIALOGADDRADIOBUTTON(1000; 103; 70; 75; 15; 15; "3"; var)
DIALOGSHOW(1000; 100; Msg)
WHILE(Loop = 1)
ENDWHILE
DIALOGDESTROY(1000)
QUIT
LABEL(Msg)
 IF(Msg[5] = WM_SYSCOMMAND)
  Loop = 0
 ENDIF
 IF(LWORD(Msg[lParam]) = hItem)
  REGIONGETSELECTEDTEXT(vRB; "1000.100")
  SWITCH(vRB)
   CASEOF "Radio Button 1": vFocus = "101"
   CASEOF "Radio Button 2": vFocus = "102"
   CASEOF "Radio Button 3": vFocus = "103"
  ENDSWITCH
 REGIONSETFOCUS("1000." + vFocus)
 ENDIF
 RETURN
FUNCTION LWORD(vNum)
 vNum = vNum & 65535
 RETURN(vNum)
ENDFUNC

8076

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate REGIONASETWINDOWTEXT command
Loop = 1
vNmbr = 2
WM_SYSCOMMAND = 274
DIALOGDEFINE(1000; 50; 50; 150; 50; Percent! | NoFrame!; "RegionSetWindowText")
DIALOGADDFRAME(1000; 100; 10; 10; 10; 10; Frame! | Filled! | Gray!)
DIALOGADDHOTSPOT(1000; 101; 10; 10; 10; 10; Click!)
DIALOGADDTEXT(1000; 102; 28; 10; 125; 15; Left!; "Click to change text")
DIALOGSHOW(1000; 101; Msg)
WHILE(Loop = 1)
ENDWHILE
DIALOGDESTROY(1000)
QUIT
LABEL(Msg)
 IF(Msg[5] = WM_SYSCOMMAND)
  Loop = 0
 ENDIF
 IF(Msg[3] = 101)
  ChangeTitle
 ENDIF
 RETURN
LABEL(ChangeTitle)
 vChange = "Click " + vNmbr
 REGIONSETWINDOWTEXT("1000"; vChange)
 REGIONSETWINDOWTEXT("1000.102"; vChange)
 ASSIGN(vNmbr; vNmbr + 1)
 RETURN

8077

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate REGIONSHOWWINDOW command
Loop = 1
WM_SYSCOMMAND = 274
vDisable = 1
DIALOGDEFINE(1000; 50; 50; 175; 75; Percent! | NoFrame!; "RegionShowWindow")
DIALOGADDFRAME(1000; 100; 10; 10; 10; 10; Frame! | Filled! | Gray!)
DIALOGADDHOTSPOT(1000; 101; 10; 10; 10; 10; Click!)
DIALOGADDTEXT(1000; 0; 28; 10; 125; 15; Left!; "Click to hide/show the 
following text")
DIALOGADDTEXT(1000; 102; 0; 35; 175; 15; Center!; "Novell GroupWise* 4.1")
DIALOGSHOW(1000; 101; Msg)
WHILE(Loop = 1)
ENDWHILE
DIALOGDESTROY(1000)
QUIT
LABEL(Msg)
 IF(Msg[5] = WM_SYSCOMMAND)
  Loop = 0
 ENDIF
 IF(Msg[3] = 101)
 IF(vDisable = 1)
  REGIONSHOWWINDOW("1000.102"; Hide!)
  vDisable = 0
 ELSE
  REGIONSHOWWINDOW("1000.102"; Show!)
  vDisable = 1
 ENDIF
 ENDIF
 RETURN

8078

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate COPYFILE, DOESFILEEXIST, GETCURRENTDIRECTORY, and DOESDIRECTORYEXIST 
commands
VARERRCHK(Off!)
HRt = NTOC(0F90Ah)
CALL(GetFileNames)
CALL(CheckNames)
CALL(CopyFiles)
QUIT
LABEL(GetFileNames)
 GETSTRING(vSource; "Current directory: " + GETCURRENTDIRECTORY + HRt + 
HRt + "File to copy:"; "Copy File"; 100)
 GETSTRING(vDestination; "File to copy: " + vSource + HRt + HRt + "To:"; 
"Copy File"; 100)
 RETURN
LABEL(CheckNames)
 IF(NOT(DOESFILEEXIST(vSource) = True))
  ErrorMsg(vSource + " does not exist")
 ENDIF
 vLen = STRLEN(vDestination)
 vCnt = vLen
 WHILE(NOT(vResult = "\") OR (vStrLen = 0))
  vResult = SUBSTR(vDestination; vCnt; 1)
  vCnt = vCnt - 1
 ENDWHILE
 // parsed filename is not used vFilename = SUBSTR(vDestination; vCnt + 
2; vLen - vCnt)
 vDirectoryName = SUBSTR(vDestination; 1; vCnt)
 IF(DOESDIRECTORYEXIST(vDirectoryName) = True)
  RETURN
 ELSE
  ErrorMsg(vDirectoryName + " does not exist")
 ENDIF
LABEL(CopyFiles)
 IF(COPYFILE(vSource; vDestination; NoPrompts!) = True)
   MESSAGEBOX(x; "COPYFILE"; "File copied successfully";
    IconInformation!)
 ELSE
  ErrorMsg("File not copied")
 ENDIF
 RETURN
PROCEDURE ErrorMsg(Msg)
 BEEP
 MESSAGEBOX(x; "Error"; Msg; IconExclamation!)
 QUIT
ENDPROC

8079

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate GETCURRENTDIRECTORY and SETCURRENTDIRECTORY command
ONCANCEL(QuitMacro)
HRt = NTOC(0F90Ah)
LABEL(SetCurrentDir)
 GETSTRING(vNewDir; "Current directory: " + GETCURRENTDIRECTORY + HRt + 
Hrt 
		+ "New directory:"; "Directory Commands"; 100)
 IF(SETCURRENTDIRECTORY(vNewDir) = False)
  BEEP
   MESSAGEBOX(x; "Error"; "Invalid directory";
    IconExclamation!)
  GO(SetCurrentDir)
 ELSE
   MESSAGEBOX(x; "Current Directory"; vNewDir;
    IconInformation!)
 ENDIF
 QUIT
LABEL(QuitMacro)
 MESSAGEBOX(x; "End Macro"; "You chose Cancel or pressed Esc"; IconInformation!)
 QUIT

8080

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate CREATEDIRECTORY and DELETEDIRECTORY commands
ONCANCEL(QuitMacro)
HRt = NTOC(0F90Ah)
LABEL(CreateDir)
 GETSTRING(vCreateDir; "Current directory: " + GETCURRENTDIRECTORY + HRt 
+ Hrt 
		+ "New directory:"; "Create New Directory"; 100)
 IF(CREATEDIRECTORY(vCreateDir) = False)
  BEEP
   MESSAGEBOX(x; "Error"; "Directory not created";
    IconExclamation!)
  GO(CreateDir)
 ELSE
   MESSAGEBOX(vYesNo; "New Directory"; vCreateDir 
 IF(vYesNo = 6)
   MESSAGEBOX(x; "Delete Directory"; "Directory 
    deleted: " + DELETEDIRECTORY(vCreateDir))
 ENDIF
 ENDIF
 QUIT
LABEL(QuitMacro)
 MESSAGEBOX(x; "End Macro"; "You chose Cancel or pressed Esc"; IconInformation!)
 QUIT

8081

APPLICATION(WP; "WordPerfect"; Default; "US")
// Create a directory named c:\test
// Demonstrate RENAMEDIRECTORY command
ONCANCEL(QuitMacro)
HRt = NTOC(0F90Ah)
CREATEDIRECTORY ("c:\test";Prompts!)
GETSTRING(vNewName; "Type a new name for directory c:\test:"; "Rename a 
Directory"; 100)
RENAMEDIRECTORY ("c:\test";vNewName;Prompts!)
MESSAGEBOX(vYesNo; "Renamed Directory"; "Delete " + vNewName + " now?";IconQuestion!|YesNo!)
IF(vYesNo = 6)
 DELETEDIRECTORY(vNewName)
 MESSAGEBOX(x;"Delete Directory";"Directory " + vNewName + " deleted.")
ELSE
 MESSAGEBOX(x;"Renamed Directory";"Directory " + vNewName + " not deleted.")
ENDIF
QUIT
LABEL(QuitMacro)
 MESSAGEBOX(x;"End Macro"; "You chose Cancel or pressed Esc";IconInformation!)
 QUIT

8082

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate GETFILEATTRIBUTES command
ONCANCEL(QuitMacro)
HRt = NTOC(0F90Ah)
GETSTRING(vFilename; "File:"; "Get File Attributes"; 100)
IF(NOT(vFilename = ""))
 MESSAGEBOX(x; ""; GETFILEATTRIBUTES(vFilename))
ENDIF
QUIT
LABEL(QuitMacro)
 MESSAGEBOX(x; "End Macro"; "You chose Cancel or pressed Esc"; IconInformation!)
 QUIT

8083

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate SETFILEATTRIBUTES command
ONCANCEL(QuitMacro)
HRt = NTOC(0F90Ah)
GETSTRING(vFilename; "Set read-only attribute." + HRt + Hrt + "File:"; 
"SETFILEATTRIBUTES"; 100)
IF(NOT(vFilename = ""))
 MESSAGEBOX(x; "SETFILEATTRIBUTES"; "Read-only status: " + SETFILEATTRIBUTES(vFilename; 
ReadOnly!; Prompts!))
ENDIF
QUIT
LABEL(QuitMacro)
 MESSAGEBOX(x; "End Macro"; "You chose Cancel or pressed Esc"; IconInformation!)
 QUIT

8084

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate GETFILEDATEANDTIME command
ONCANCEL(QuitMacro)
HRt = NTOC(0F90Ah)
GETSTRING(vFilename; "Date and time." + HRt + Hrt + "File:"; "GETFILEDATEANDTIME"; 
100)
IF(NOT(vFilename = ""))
 MESSAGEBOX(x; "Number of seconds since Jan 1, 1980"; GETFILEDATEANDTIME(vFilename))
ENDIF
QUIT
LABEL(QuitMacro)
 MESSAGEBOX(x; "End Macro"; "You chose Cancel or pressed Esc"; IconInformation!)
 QUIT

8085

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate SETFILEDATEANDTIME command
ONCANCEL(QuitMacro)
HRt = NTOC(0F90Ah)
GETSTRING(vFilename; "Date and time." + HRt + Hrt + "File:"; "GETFILEDATEANDTIME"; 
100)
IF(NOT(vFilename = ""))
 MESSAGEBOX(x; "New File Date and Time Stamp"; "Result: " + SETFILEDATEANDTIME(vFilename; 
485780000) + " (Jun 30, 1994 / 7:02a)")
ENDIF
QUIT
LABEL(QuitMacro)
 MESSAGEBOX(x; "End Macro"; "You chose Cancel or pressed Esc"; IconInformation!)
 QUIT

8086

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate DELETEFILE command
ONCANCEL(QuitMacro)
GETSTRING(vFilename; "File:"; "DELETEFILE"; 100)
IF(NOT(vFilename = ""))
 IF(NOT(DELETEFILE(vFilename; Prompts!) = True))
  Msg = vFilename + " not deleted"
 ELSE
  Msg = vFilename + " successfully deleted"
 ENDIF
 MESSAGEBOX(x; "DELETEFILE"; Msg; IconInformation!)
ENDIF
QUIT
LABEL(QuitMacro)
 MESSAGEBOX(x; "End Macro"; "You chose Cancel or pressed Esc"; IconInformation!)
 QUIT

8087

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate RENAMEFILE command
ONCANCEL(QuitMacro)
HRt = NTOC(0F90Ah)
LABEL(begin)
 GETSTRING(vOldName; "Old file name:"; "RENAMEFILE"; 100)
 IF(vOldName = "")
  GO(begin)
 ENDIF
 GETSTRING(vNewName; "Old file: " + vOldName + HRt + HRt + "New file name:"; 
"RENAMEFILE"; 100)
 IF(NOT(vNewName = ""))
   IF(NOT(RENAMEFILE(vOldName; vNewName; Prompts!) 
    = True))
   Msg = vOldName + " not renamed"
  ELSE
   Msg = "New file name: " + vNewName
  ENDIF
  MESSAGEBOX(x; "RENAMEFILE"; Msg; IconInformation!)
 ENDIF
 QUIT
LABEL(QuitMacro)
 MESSAGEBOX(x; "End Macro"; "You chose Cancel or pressed Esc"; IconInformation!)
 QUIT

8088

APPLICATION(WP; "WordPerfect"; Default; "US")
// Before playing this macro, create a file named File_IO, amd save it 
in the default macros
//directory in ANSI (Windows) Text format
// Demonstrate OPENFILE, CLOSEFILE, FILEWRITE, FILEREAD, FILEPOSITION, 
FILEISEOF, and FILESIZE commands
CALL(OpenInfo)
CALL(WriteToFile)
CALL(ReadFromFile)
CALL(QuitMacro)
LABEL(OpenInfo)
 HRt = NTOC(0F90Ah)
 ASSIGN(vPath; EnvPaths(Macros!))
 hFile = OPENFILE(vPath + "FILE_IO.DOC"; ReadWrite!; DenyNone!; AnsiText!)
 IF(hFile 0)
  ErrorMsg("opening"; hFile)
 ELSE
   vIsEOF = "Postion marker (EOF): " + FILEISEOF(hFile)
   vSize = "File size: " + FILESIZE(vPath + 
    "FILE_IO.DOC")
   MESSAGEBOX(X;"File Information"; vIsEOF + 
    HRt + HRt + vSize)
 ENDIF
 RETURN
LABEL(WriteToFile)
 FORNEXT(z; 1; 10; 1)
 IF(FILEWRITE(hFile; "WordPerfect is a great product! ";
  NoNewLine!) 0)
  ErrorMsg("writing to"; hFile)
 ENDIF
 ENDFOR
 RETURN
LABEL(ReadFromFile)
 FILEPOSITION(hFile; 0; FromBeginning!)
 IF(FILEREAD(hFile; vText) 0)
  ErrorMsg("reading from"; hFile)
 ELSE
  MESSAGEBOX(x; "File I/O"; vText)
 ENDIF
 RETURN
PROCEDURE ErrorMsg(Msg; hFile)
 BEEP
 MESSAGEBOX(x; "Error"; "Error " + Msg + " file"; IconExclamation!)
ENDPROC
LABEL(QuitMacro)
 IF(NOT(CLOSEFILE(hFile)) = True)
  BEEP
   MESSAGEBOX(x; "Error"; "Error closing file";IconExclamation!)
 ELSE
   MESSAGEBOX(x; "File I/O"; "File successfully 
    closed")
 ENDIF
 QUIT

8089

APPLICATION(WP; "WordPerfect"; Default; "US")
// Before playing this macro, create a file named File_IO in the default 
macros directory,
// and save the file in ANSI (Windows) Text format
// Demonstrate FILETRUNCATE command
CALL(OpenWriteToReadFromFile)
CALL(QuitMacro)
LABEL(OpenWriteToReadFromFile)
 HRt = NTOC(0F90Ah)
 ASSIGN(vPath; EnvPaths(Macros!))
 hFile = OPENFILE(vPath + "FILE_IO.DOC"; ReadWrite!;
 DenyNone!; AnsiText!)
 IF(hFile 0)
   MESSAGEBOX(x; "Error"; "Error opening file";
    IconExclamation!)
  QUIT
 ENDIF
 Test(FILEWRITE(hFile; "WordPerfect is a wonderful product!"; NoNewLine!); 
"FILEWRITE")
 Test(FILEPOSITION(hFile; 0; FromBeginning!); "FILEPOSITION")
 Test(FILEREAD(hFile; vText); "FILEREAD")
 Test(FILEPOSITION(hFile; 20; FromBeginning!); "FILEPOSITION")
 Test(FILETRUNCATE(hFile); "FILETRUNCATE")
 Test(FILEPOSITION(hFile; 0; FromBeginning!); "FILEPOSITION")
 Test(FILEREAD(hFile; vTruncate); "FILEREAD")
 MESSAGEBOX(x; "File I/O - Truncate File"; vText+HRt+HRt+vTruncate)
 RETURN
PROCEDURE Test(vError; vStr)
 // vError = value returned from FILE command
 IF(vError 0)
  BEEP
  MESSAGEBOX(x; "Error"; vStr; IconExclamation!)
  GO(QuitMacro)
 ENDIF
 ENDPROC
LABEL(QuitMacro)
 IF(NOT(CLOSEFILE(hFile)) = True)
  BEEP
   MESSAGEBOX(x; "Error"; "Error closing file";
    IconExclamation!)
 ELSE
   MESSAGEBOX(x; "File I/O"; "File successfully 
    closed")
 ENDIF
 QUIT

8090

APPLICATION(WP; "WordPerfect"; Default; "US")
// Demonstrate FILEERROR and FINDFILE commands
vPath = EnvPaths(Macros!)
vFilename = FILEFIND(vPath + "*.wcm"; Normal!; 1)
WHILE(vFilename != "")
 CALL DisplayName(vFilename)
 vFilename = FILEFIND("";;1)
ENDWHILE
PROCEDURE DisplayName(vFilename)
 MESSAGEBOX(x; "FILEFIND"; vFilename; IconInformation!)
ENDPROC
MESSAGEBOX(x; "Message"; "Error code = " + FILEERROR)

8091

// There are two macros in this example
// The INCLUDE macro is compiled when you play the main macro
// Demonstrate INCLUDE command
// INCLUDE macro: INC.WCM
// Without compiling, save this macro in the macros directory 
APPLICATION (A1; "WordPerfect"; Default; "US")
Type("2")
PROCEDURE TestProc(x)
 Type(x)
ENDPROC
//Main macro: PARENT.WCM
APPLICATION (A1; "WordPerfect"; Default; "US")
AddTextBox (1600w; 12000w; 9000w; 10000w)
Type("1")
INCLUDE("C:\PRWIN30\MACROS\INC.WCM")
Type("3")
CALL TestProc(4)
QUIT

8093

APPLICATION(A1; "WordPerfect"; Default; "US")
// Demonstrate DIALOGSHOW and DIALOGDISMISS commands
HRt = NTOC(0F90Ah)
WM_COMMAND = 273
WM_SYSCOMMAND = 274
vPopup = "Popup item 1"
vList = "List item 1"
DIALOGSHOW("Dialog1"; "WordPerfect"; Msg)
x := 0
While(x = 0)
Endwhile
QUIT
LABEL(MSG)
 IF((Msg[5] = WM_SYSCOMMAND) OR (Msg[3] = "CancelBttn"))
  BEEP
  x = 1
  RETURN
 ENDIF
 IF(Msg[5] = WM_COMMAND)
  DIALOGDISMISS("Dialog1"; "OKBttn")
  MsgBox
  DIALOGSHOW("Dialog1"; "WordPerfect"; Msg)
 ENDIF
 RETURN
LABEL(MsgBox)
 MESSAGEBOX(z; "Selections"; vList + HRt + HRt + vPopup + HRt)
 RETURN

8094

APPLICATION(A1; "WordPerfect"; Default; "US")
// Demonstrate REGIONISVISIBLE, DIALOGSHOW, and DIALOGDISMISS commands
DialogDefine("Dialog"; 50; 50; 200; 200; Percent!; "REGIONISVISIBLE")
DialogAddPushButton("Dialog"; 1; 85; 10; 25; 13; NonDefaultBttn!; "OK")
DialogAddPushButton("Dialog"; 2; 85; 30; 25; 13; DefaultBttn!; "Cancel")
DialogShow("Dialog"; "WordPerfect"; Msg)
x = 0
WHILE(x != 1)
 REGIONISVISIBLE (vResult; "Dialog.1")
 MESSAGEBOX(z; "OK button"; "Visible: " + CheckResult(vResult))
 REGIONSHOWWINDOW ("Dialog.1"; Hide!)
 REGIONISVISIBLE (vResult; "Dialog.1")
 MESSAGEBOX(z; "OK button"; "Visible: " + CheckResult(vResult))
 x = 1
ENDWHILE
DialogDismiss("Dialog"; "CancelBttn")
QUIT
LABEL(Msg)
RETURN
FUNCTION CheckResult(vResult)
 IF(vResult = 0)
  vResult = "No"
 ELSE
  vResult = "Yes"
 ENDIF
 RETURN(vResult)
ENDFUNC

8095

APPLICATION(A1; "WordPerfect"; Default; "US")
OnError (ErrorMsg)
DialogDefine ("Dialog1"; 50; 50; 200; 100; Percent! | OK! | Cancel!; "Dialog 
Example")
DialogAddPushButton("Dialog1"; "PushBttn1"; 153; 35; 38; 14; NonDefaultBttn!; 
"Add Ctrl")
DialogAddPushButton("Dialog1"; "PushBttn2"; 153; 55; 38; 14; NonDefaultBttn!; 
"Get hwnd")
DialogShow ("Dialog1"; "WordPerfect"; Msg)
CallbackWait
Quit
Label(Msg)
 If (Msg[5] = 274)
  DialogDestroy ("Dialog1")
  CallbackResume
  Return
 Endif
 Switch (Msg[3])
   CaseOf "OKBttn": MessageBox(x; "OK Button";
    "You pressed OK"; IconInformation!)
  CaseOf "CancelBttn":
   DialogDestroy("Dialog1")
   CallBackResume
   Return
  CaseOf "PushBttn1":
   DialogAddProgress ("Dialog1"; "ProgressCtrl"
     10;10; 180; 15)
  CaseOf "PushBttn2":
   hwnd := RegionGetHandle ("dialog1.ProgressCtrl")
   MessageBox (x; "Window Handle"; hwnd)
 EndSwitch
 Return
Label (ErrorMsg)
 MessageBox (x; "Error"; "You pressed the Get hwnd button before the Add 
Ctrl button."; IconExclamation!)
 Return

8096

APPLICATION(A1; "WordPerfect"; Default; "US")
DialogDefine ("Dialog1"; 50; 50; 200; 100; Percent! | OK! | Cancel!; "Dialog 
Example")
DialogAddPushButton("Dialog1"; "PushBttn1"; 153; 35; 38; 14; NonDefaultBttn!; 
"Run Calc")
DialogAddPushButton("Dialog1"; "PushBttn2"; 153; 55; 38; 14; NonDefaultBttn!; 
"Toggle")
DialogAddPushButton("Dialog1"; "PushBttn3"; 153; 15; 38; 14; NonDefaultBttn!; 
"Close App")
DialogLoad("Dialog1"; "WordPerfect")
RegionShowWindow ("Dialog1.PushBttn2"; Hide!)
RegionShowWindow ("Dialog1.PushBttn3"; Hide!)
x = 1
DialogShow ("Dialog1"; "WordPerfect"; Msg)
CallbackWait
Quit
Label(Msg)
 If (Msg[5] = 274)
  DialogDestroy ("Dialog1")
  CallbackResume
  Return
 Endif
 Switch (Msg[3])
   CaseOf "OKBttn": MessageBox(x; "OK Button";
    "You pressed OK"; IconInformation!)
  CaseOf "CancelBttn":
   DialogDestroy("Dialog1")
   CallBackResume
   Return
  CaseOf "PushBttn1":
   AppExecute ("c:\windows\calc.exe")
   RegionShowWindow ("Dialog1.PushBttn2"; Show!)
   RegionShowWindow ("Dialog1.PushBttn3"; Show!)
  CaseOf "PushBttn2":
   If(x=1)
   AppShow ("Calculator"; Hide!)
   x := 0
   Else
   AppShow ("Calculator"; Restore!)
   x := 1
   EndIf
  CaseOf "PushBttn3":
   AppClose ("Calculator")
   RegionShowWindow ("Dialog1.PushBttn2"; Hide!)
   RegionShowWindow ("Dialog1.PushBttn3"; Hide!)
 EndSwitch
 Return

8097

APPLICATION(A1; "WordPerfect"; Default; "US")
OnError (ErrorMessage)
DialogDefine ("Dialog1"; 50; 50; 200; 100; Percent! | OK! | Cancel!; "Dialog 
Example")
DialogAddPushButton("Dialog1"; "PushBttn1"; 153; 35; 38; 14; NonDefaultBttn!; 
"Add Ctrl")
DialogAddPushButton("Dialog1"; "PushBttn2"; 153; 55; 38; 14; NonDefaultBttn!; 
"Get Date")
DialogShow ("Dialog1"; "WordPerfect"; Msg)
CallbackWait
Quit
Label(Msg)
 If (Msg[5] = 274)
  DialogDestroy ("Dialog1")
  CallbackResume
  Return
 Endif
 Switch (Msg[3])
   CaseOf "OKBttn": MessageBox(x; "OK Button";
    "You pressed OK"; IconInformation!)
  CaseOf "CancelBttn":
   DialogDestroy("Dialog1")
   CallBackResume
   Return
  CaseOf "PushBttn1":
   vDay := DateDay()
   vMonth := DateMonth()
   vYear := DateYear()
   DialogAddDate ("Dialog1"; "DateCtrl"; 10
     10; 50; 15; Validate!;
   var; vYear; vMonth; vDay)
  CaseOf "PushBttn2":
   MessageBox(x; "Selected Date"; RegionGetWindowText
     ("Dialog1.DateCtrl"))
 EndSwitch
 Return
Label(ErrorMessage)
 MessageBox(x; "Error"; "You may have selected Get Date before Add Ctrl"; 
IconExclamation!)
 Return

8098

APPLICATION(A1; "WordPerfect"; Default; "US")
DialogDefine ("Dialog1"; 50; 50; 200; 100; Percent! | OK! | Cancel!; "Dialog 
Example")
DialogAddPushButton("Dialog1"; "PushBttn1"; 153; 35; 38; 14; NonDefaultBttn!; 
"Add Ctrl")
DialogAddPushButton("Dialog1"; "PushBttn2"; 153; 55; 38; 14; NonDefaultBttn!; 
"Start")
DialogShow ("Dialog1"; "WordPerfect"; Msg)
CallbackWait
Quit
Label(Msg)
 If (Msg[5] = 274)
  DialogDestroy ("Dialog1")
  CallbackResume
  Return
 Endif
 Switch (Msg[3])
   CaseOf "OKBttn": MessageBox(x; "OK Button";
    "You pressed OK"; IconInformation!)
  CaseOf "CancelBttn":
   DialogDestroy("Dialog1")
   CallBackResume
   Return
  CaseOf "PushBttn1":
   DialogAddProgress ("Dialog1"; "ProgressCtrl"
     10;10; 180; 15)
  CaseOf "PushBttn2":
   ForNext (vPercent; 1; 100; 1)
   RegionSetProgressPercent("Dialog1.ProgressCtrl"
     vPercent)
   Wait(1)
   EndFor
   RegionSetProgressPercent("Dialog1.ProgressCtrl"
     0)
 EndSwitch
 Return

8099

APPLICATION(A1; "WordPerfect"; Default; "US")
DialogDefine ("Dialog1"; 50; 50; 200; 100; Percent! | OK! | Cancel!; "Dialog 
Example")
DialogAddPushButton("Dialog1"; "PushBttn1"; 153; 35; 38; 14; NonDefaultBttn!; 
"Dialog1")
DialogAddPushButton("Dialog1"; "PushBttn2"; 153; 55; 38; 14; NonDefaultBttn!; 
"Dialog2")
DialogShow ("Dialog1"; "WordPerfect"; Msg)
//DialogSetProperties ("Dialog1")
CallbackWait
Quit
Label(Msg)
 If (Msg[5] = 274)
  DialogDestroy ("Dialog1")
  CallbackResume
  Return
 Endif
 Switch (Msg[3])
   CaseOf "OKBttn": MessageBox(x; "OK Button";
    "You pressed OK"; IconInformation!)
  CaseOf "CancelBttn":
   DialogDestroy("Dialog1")
   CallBackResume
   Return
  CaseOf "PushBttn1":
   vAns := DoesDialogExist ("Dialog1")
   DialogAddText ("Dialog1"; 101; 10; 10; 100
  CaseOf "PushBttn2":
   vAns := DoesDialogExist ("Dialog2")
   DialogAddText ("Dialog1"; 101; 10; 10; 100
 EndSwitch
 Return

8100

APPLICATION(A1; "WordPerfect"; Default; "US")
DialogDefine ("Dialog1"; 50; 50; 200; 100; Percent! | OK! | Cancel!; "Dialog 
Example")
DialogAddListBox ("Dialog1"; "ListCtrl"; 10; 10; 120; 70; Unsorted!; vItem)
DialogAddPushButton("Dialog1"; "PushBttn1"; 153; 35; 38; 14; NonDefaultBttn!; 
"Add Item")
DialogAddPushButton("Dialog1"; "PushBttn2"; 153; 55; 38; 14; NonDefaultBttn!; 
"Get Cnt")
vCount := 1
DialogShow ("Dialog1"; "WordPerfect"; Msg)
CallbackWait
Quit
Label(Msg)
 If (Msg[5] = 274)
  DialogDestroy ("Dialog1")
  CallbackResume
  Return
 Endif
 Switch (Msg[3])
   CaseOf "OKBttn": MessageBox(x; "OK Button";
    "You pressed OK"; IconInformation!)
  CaseOf "CancelBttn":
   DialogDestroy("Dialog1")
   CallBackResume
   Return
  CaseOf "PushBttn1":
   vItem := "Item" + vCount
   RegionAddListItem ("Dialog1.ListCtrl"; vItem)
   vCount := vCount + 1
  CaseOf "PushBttn2":
   vNmbr := RegionGetListCount ("Dialog1.ListCtrl")
   MessageBox (x; "List Items"; "Number: " + vNmbr)
 EndSwitch
 Return

8101

APPLICATION(A1; "WordPerfect"; Default; "US")
OnError (ErrorMsg)
DialogDefine ("Dialog1"; 50; 50; 200; 100; Percent! | OK! | Cancel!; "Dialog 
Example")
DialogAddPushButton("Dialog1"; "PushBttn1"; 153; 35; 38; 14; NonDefaultBttn!; 
"Add Ctrl")
DialogAddPushButton("Dialog1"; "PushBttn2"; 153; 55; 38; 14; NonDefaultBttn!; 
"Modify")
DialogShow ("Dialog1"; "WordPerfect"; Msg)
CallbackWait
Quit
Label(Msg)
 If (Msg[5] = 274)
  DialogDestroy ("Dialog1")
  CallbackResume
  Return
 Endif
 Switch (Msg[3])
   CaseOf "OKBttn": MessageBox(x; "OK Button";
    "You pressed OK"; IconInformation!)
  CaseOf "CancelBttn":
   DialogDestroy("Dialog1")
   CallBackResume
   Return
  CaseOf "PushBttn1":
   DialogAddEditBox ("Dialog1"; "EditCtrl";
     10; 10; 120; 50; Left! | Multiline!; vText; 100)
   RegionSetWindowText ("Dialog1.EditCtrl";
     "Modify text.")
   RegionSetFocus ("Dialog1.EditCtrl")
  CaseOf "PushBttn2":
   vMod := RegionGetModified ("Dialog1.EditCtrl")
   MessageBox (x; "Modify List Box"; vMod)
   RegionSetFocus ("Dialog1.EditCtrl")
 EndSwitch
 Return
Label (ErrorMsg)
 MessageBox (x; "Error"; "You pressed Modify before Add Ctrl."; IconExclamation!)
 Return

8102

APPLICATION(A1; "WordPerfect"; Default; "US")
OnError (ErrorMsg)
DialogDefine ("Dialog1"; 50; 50; 200; 100; Percent! | OK! | Cancel!; "Dialog 
Example")
DialogAddPushButton("Dialog1"; "PushBttn1"; 153; 35; 38; 14; NonDefaultBttn!; 
"Add Ctrl 1")
DialogAddPushButton("Dialog1"; "PushBttn2"; 153; 55; 38; 14; NonDefaultBttn!; 
"Add Ctrl 2")
DialogShow ("Dialog1"; "WordPerfect"; Msg)
CallbackWait
Quit
Label(Msg)
 If (Msg[5] = 274)
  DialogDestroy ("Dialog1")
  CallbackResume
  Return
 Endif
 Switch (Msg[3])
   CaseOf "OKBttn": MessageBox(x; "OK Button";
    "You pressed OK"; IconInformation!)
  CaseOf "CancelBttn":
   DialogDestroy("Dialog1")
   CallBackResume
   Return
  CaseOf "PushBttn1":
   DialogAddBitmap ("Dialog1"; "BCtrl"; 10;
     10; 50; 50; SizeBmpToCtl!; "c:\windows\cars.bmp")
  CaseOf "PushBttn2":
   RegionSetBitmapFilename ("Dialog1.BCtrl"
     "c:\windows\arcade.bmp")
 EndSwitch
 Return
Label (ErrorMsg)
 MessageBox (x; "Error"; "You pressed Add Ctrl 2 before Add Ctrl 1"; IconInformation!)
 Quit