The steps are roughly these:
1. Have a look for the windows printer shares (for this you will need the smbclient installed). Even if you know the machine name of the printer already, this step will make sure you have samba client access working.
Code:
smbclient -L <WinXP box IP address>
2. Use the CUPS GUI (for this you will need cupsys and cupsys-client installed). Open a browser, and load the address "http://localhost:631/", since CUPS provides a webpage interface on port 631.
3. Add a printer, give it a name (no spaces), a location, and a description. You will need the root password to do this.
4. Set the device type to "Windows Printer via SAMBA".
5. Set the URI which includes the name that was listed earlier by smbclient, for example something like "smb://192.168.1.2/HP_LPT1". If the printer is passworded, you would use something like "smb://username:password@192.168.1.2/HP_LPT1".
6. Set up the make and manufacturer information (so that it knows how to format jobs for this printer). If you can't find your printer, you might be able to use a postscript driver instead. Some printer drivers are in separate packages (eg hp-ppd).
7. You can now test the printer.
This can be done in other ways (for example, a Windows server can provide support for TCP/IP based printing by adding in the "Print Services for Unix" network component, which means you can use the 'lpd:' protocol instead of 'smb:').
If the windows box does not have a fixed ip address, you can set up winbind (install winbind, and add "wins" to the end of the hosts line in "/etc/nsswitch.conf"). This will enable you to use the server name rather than IP address.