Re: How do I return variables to main dialog
On 28 mar, 18:35, Joseph M. Newcomer <newco...@flounder.com> wrote:
Note that you cannot retrieve information from the *controls* after the d=
ialog completes;
there are a couple different styles you *can* use.
(1) store anything you want in a CArray.std::vector/CMap/std::map/whateve=
r which is in the
secondary dialog; provide an interface by which the caller can retrieve i=
t
(2) SendMessage to a parent window containing information of interest
(3) Use a callback method; you pass in a pointer to a method in the paren=
t dialog and it
is called each time something needs to be sent to the parent
The first one is the best choice if you need to retrieve information only=
*after* the
dialog has completed
The second one is the best choice if you can deal with the information in=
crementally, but
then note that if you click "cancel" you have to deal with "undoing" any =
changes you made
The third choice is the worst choice, because it has all the disadvantage=
s of the second
method but is far clumsier to use
Note that I did not suggest any mechanism by which you #include the paren=
t dialog header
file in the child dialog and call methods of the parent dialog. This w=
ould be just wrong.
joe
On Mon, 28 Mar 2011 08:21:46 -0700 (PDT), Mikel <mikel.l...@gmail.com> wr=
ote:
On 28 mar, 16:58, Ed <m...@right.her> wrote:
In my main dialog, when the user clicks on a file in the ListBox windo=
w
I pass that filename to another class to open it.
That class will open and read the full contents of the selected file.
I wish this class to return variables from the file it read to the mai=
n
Dialog.
I need to return parts of what it found within the file.
Exampls: A keyword found within the file.
How do I do this?
Partial code below:
----------------------------------------------------------------
CFileProcess FProc; // FileProcess is class to read the file selected
void CMyDlg::OnSelchangeListcip()
{
//... code for selected file
FProc.Readit(Name); //Name is the filename of the selected
//Reatit is the routine in FileProcess that opens and reads the file
//more routines are going to be added to the FileProcess class
//... code to work on returned variables
}- Ocultar texto de la cita -
- Mostrar texto de la cita -
You could just add GetX functions to your CFileProcess class and call
them after you've read the file.
Just like what you'd do with CFileDialog to know the selected file
(e.g. CFileDialog::GetPathName())
Joseph M. Newcomer [MVP]
email: newco...@flounder.com
Web:http://www.flounder.com
MVP Tips:http://www.flounder.com/mvp_tips.htm- Ocultar texto de la cita -
- Mostrar texto de la cita -
Joe, either you or I have misunderstood the OP's requirements. Or I
have misunderstood your answer.
What I understand the OP wants is this:
The dialog calls a member of another class (CFileProc) to read a file.
After reading the file, some information that was in the file (and
CFileProc has read) has to go to the dialog
What I would do (in MyDlg.cpp):
#include "FileProcess.h"
void CMyDlg::OnSelchangeListcip()
{
//... code for selected file
// The OP has put the following line outsid OnSelChange...
// Without more info, I would put it here.
CFileProcess FProc; // FileProcess is class to read the file
selected
FProc.Readit(Name); //Name is the filename of the selected
...
//... code to work on returned variables
x = FProc.GetX();
y = FProc.GetY();
FunctionThatUsesZ(FProc.GetZ());
}
As I said, just like CFileDialog:
CFileDialog dlg(...);
if(dlg.DoModal() == IDOK)
{
CString mypath = dlg.GetPathName();
}