I am not that familar with DrDialog but it looks like its window functions do not provide any method to change the system icon. So you would need to use either a rexx dll or an external program to do this. VP provides an example rexx dll in rexxext.pas, gcc also has some sample code.
To load and change the icon you would use WinLoadPointer & WM_SETICON eg:
(* attach the icon, if any *)
hicon := WinLoadPointer( HWND_DESKTOP, NULLHANDLE, usResID );
if hicon <> NULLHANDLE then
WinSendMsg( hwnd, WM_SETICON, MPFROMLONG( hicon ), 0 )
To find the window handle of your dialog you could use WinBeginEnum to find all the open programs and then match on the dialog name or process id.
I do not know whether it is possible to add additional (icon) resources to a DrDialog res file, you may need to experiment a little.
Where you call your new function from within your drrexx program will depend on what you want to do. You could try adding it to the init routine but whether this works would depend on where in the dialog creation process (before, during or after) the init stuff is read.
Just some ideas.