|
Thanks for the advice! I put the following code at the top... not sure why one program builds without it and this one doesnt... ? Thanks again! JennyP
<br />
#ifndef __AFXCVIEW_H__<br />
#include "Afxcview.h"
#endif<br />
|
|
|
|
|
Hello all.
I am wondering if someone could give me a step in the right direction. I have created a simple dialog-based application. I have also created another dialog for the configuration screen. I can call this dialog just fine by declaring a variable of it and calling doModal() and it works great.
Now, what I am wondering is the best way to "share" the data between the two of them. For instance, this is what I was doing now (and it don't work!). I had created some protected variables on the CONFIG dialog. I've also created some methods such as isConfigured(). In my main dialoag, I was doing something of this nature:
ConfigureDialog myConfigDlg;
myConfigDlg.readConfiguration();
if ( myConfigDlg.isConfigured() ) {
...
}
etc...
Now that appears to work great except for one thing. I had put this into my OnInitDialog() method for the main dialog ... so when the main dialog starts, it reads the configuration and makes sure everything is OK.
I also need to access this configuration during button presses on the main dialog. So, what I did
is in my onBnClicked() method, I put another ConfigureDialog myConfigDlg; in there and straight-way checked one of the variables with its method, and it did not "save over the data". I have since realized that I've only created an instance of this dialog. (Somewhat new to OOP). So, when the program left the OnInitDialog method, it destroyed that instance so all that data that it read is long gone.
So, what I am wondering is what may be the best way for me to go ahead with a configuration routine? I kind of wanted to have one class, which was the configure class, that did all of the reading/writing/etc of the configuration file. But the question is, how can I instantiate that class one time in my main dialog (for instance during OnInitDialog() ) and then keep it "in scope" for that entire dialog to read?
Hope I explained that enough! Thanks in advance for the replies.
|
|
|
|
|
Just to be real clear on what I'd like to do.
App starts. Main dialog is initialized.
Configure dialog is somehow instantiated.
I call configuredlg.readConfig()
On the main dialog I press "begin processing"
I call configuredlg.getTemporaryPath();
... at this point, I do not want it to have to read the configuration file again to get this information. I want to have it stored one time in a protected/private variable within the class after I called .readConfig().
so pretty much
CString CSConfigureDlg getTemporaryPath() {
return theTempPath;
}
I am also wondering, can I solve my problems (would this be the best way) in my main dialog .h header file, just to create a variable of type CSConfigureDlg() ??
|
|
|
|
|
Here are a couple of possibilities: 1) Declare your dialog object globaly, then you could access it from any where and keep/access the infomation stored in it via that object (Example: g_CfgDlg.GetWhatEver()), 2) Declare your dialog object as a member of your main dialog or application class for the same reasons as in 1 above.
INTP
|
|
|
|
|
Keep the config data in your main class, as an instance of another class and make it visible to the config dialog, probably by passing it in through the constructor, and visible in the dialog class, so that it can be grabbed back when the dialog is closed. Something like this:
class ConfigData
{
// config stuff here
}
class MainDialog
{
private ConfigData m_configData;
// Read in oninitmethod
private void OnClickShowConfig()
{
MyConfigDialog dlg(m_configData, this);
if(dlg.DoModal() == IDOK)
{
m_configData = dlg.configData;
}
}
}
The config dialog saves the changed data to disk, and has only got a constructor which takes the config as well as the usual parameters with defaults ( parent dialog, etc. That what the this is being passed in for, the parent window )
My MFC is VERY rusty, two years since I used it. But that should be the general idea.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
Has anyone here used the extended mapi interface? and if so do you know what has to be changed to use the GUID's that are declared in mapiguid.h? I have included everything the MSDN library specifies and have even defined the proper defines, but when I build I get the following error:
EmailMessage.obj : error LNK2001: unresolved external symbol _IID_IMessage
Can anyone help me?
|
|
|
|
|
#include <initguid.h>
or
#define INITGUID
|
|
|
|
|
I included mapiguid.h mapix.h and #defined initguid and uses_iid_imapimessage and when I build I still get the error on the link.
|
|
|
|
|
How about MapiDefs.h
Thank You
Bo Hunter
|
|
|
|
|
I included that as well and several other of the mapi includes. the error seems to be an issue of the lib files linked, but I included uuid.lib, mapi32.lib, ole32.lib, and oleaut32.lib.
|
|
|
|
|
Hi,
I'd like to know how I can draw simple 2D Shapes like Rectangles, Triangles, Boxes, Circles with Microsoft Visual C++ 6.0 in DOS ? Is there something like a "dosgraphs.h" header file with pre-defined prototypes for drawing such objects ? If there is something like this where can I get a tutorial ?
Thanks in advance
Tolga
|
|
|
|
|
This is not possible because VC++ 6.0 cannot create a DOS application. It can create a console application, but this is not the same thing. To do this, you’d need an older version of VC++ (like say 1.x or 2.x). Furthermore, DOS uses the concept of different screen modes to display graphics; a Windows console app does not support this. Yes, Windows can run a DOS app (like some games), but these are two different things.
However, VC++ 6.0 can work very well with Windows graphics using the GDI, OpenGL, DirectX, etc. But, if it must be DOS then look for an older version of VC++ first.
Jeremy Falcon
|
|
|
|
|
Well actually the program I wrote opens up in a DOS Console and all the data is input from the DOS Console, but could I do something like this: use the gl.h to create the 2D shapes which open up in Windows ?
Tolga
|
|
|
|
|
I created a simple app using the wizard. It was a dialog based app. It works fine, but does nothing expect close when you hit the button. However, I have a problem when I add a Rich Edit control. The app compiles fine, but the app window does not appear when I run it. Nothing happens. I stepped through the code and found it exits at a DoModal call. What's up? Thanks.
|
|
|
|
|
AfxInitRichEdit() needs to be called.
A rich person is not the one who has the most, but the one that needs the least.
|
|
|
|
|
|
I am starting getting this "CXX0030: Error: expression can not be evaluated" from the debugger after configuring my application to use the CxImage class. The error message is at the Value column on all recordset fields at the Variables window. Now I am not able to see the values in the recordset to debug the application. Please help.
Elizabeth
|
|
|
|
|
If you Paste the Actual Code as well you will get more replies that way
Live as if your were to die tomorrow. Learn as if you were to live forever.
-Mahatma Gandhi
|
|
|
|
|
Here is the function. Before I made the changes at Project Settings to use the CxImage class, I was able to see the values from each field at m_pListSet. Now all I am seeing is "CXX0030: Error: expression can not be evaluated".
void CDeliveryForm::LoadDeliverableList()
{
m_comboDeliverable.ResetContent();
if (!m_pListSet->IsBOF())
{
m_pListSet->MoveFirst();
while (!m_pListSet->IsEOF())
{
if (m_pListSet->m_ROUTE_TO_WAM_DATE != 0 && m_pSet->m_ACCEPTED == "1")
m_comboDeliverable.AddString(m_pListSet->m_TITLE + " (deliverred)");
else
m_comboDeliverable.AddString(m_pListSet->m_TITLE);
m_pListSet->MoveNext();
}
}
m_comboDeliverable.AddString("NEW");
if (!m_pListSet->IsBOF())
{
int target_record = 0;
//get to the deliverable
if (m_pDoc->m_deliverable_id != "")
{
m_pListSet->MoveFirst();
while (!m_pListSet->IsEOF())
{
if (m_pListSet->m_DELIVERABLE_ID == m_pDoc->m_deliverable_id)
break;
target_record ++;
m_pListSet->MoveNext();
}
}
//reset to 0 if no record found
if (m_pListSet->IsEOF())
target_record = 0;
//set selected item in list
m_comboDeliverable.SetCurSel(target_record);
m_pListSet->Move((target_record+1), SQL_FETCH_ABSOLUTE);
}
}
Elizabeth
|
|
|
|
|
What are some good books for shell programming? One by Dino Esposito is out of print and its really old. If I can find it is it still useful?
Thanks,
ns
|
|
|
|
|
Yeah, I believe it's really good. I got a different book, 2nd hand, which was also good, but I forget what it was called. Yeah, I'm just a world of useful info....
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
|
Thanks! Its downloadable at amazon. I am reading your series of articles.....
|
|
|
|
|
I'm using MSHTML and creating a URLMoniker to browse to a web page. Using IPropertyNotifySink::OnChanged works fine for a successfull page, but is there any way to get the http status so I can detect failures?
|
|
|
|
|
What I want to do is when a program prints something , and the printer icon appears in the notification area that my program is also run, or to have my program already running but it can detect when another program prints something.
All my program does right now is allow the user to enter how many pages he/she printed in color and/or black and white.
Thank you.
|
|
|
|