You can easily dynamically a dataobject with the DataWindow's or DataStore's Create() function, passing it a syntactically correct DataWindow source (like what you see when you Edit Source on a DataWindow in the IDE). There's even a function, the Transaction object's SyntaxFromSQL(), that will help you build a syntax from a SELECT statement, although you can build this syntax string however you'd like.
The problem I see in your question is that you're not starting from a SELECT statement, but from a cursor object passed back from the database. I don't believe there is any support anywhere in PB for such a cursor. (You can create a cursor within your PowerScript, but as I understand what you're saying, that is different.) So, since there is no DataWindow syntax that is compatible with a DBMS-generated cursor, I believe the answer to your question as it stands is that it can't be done.
One alternative, if you have control over the stored procedure, is to change it to pass back the string of the SELECT statement. This way, not only can you dynamically create the DataWindow syntax (SyntaxFromSQL()) and generate the DataWindow (Create()), but you'll also get better performance, since the DataWindow in most cases (e.g. not when a RetrieveRow event is coded) will retrieve the entire data set in as few network blocks as possible with "one" network transaction, as opposed to the cursor which will only retrieve one row at a time.
Good luck,
Terry.