|
I think you problem is that;
a) you need to include both <iostream> and <fstream>
b) you need to bring the classes declared in the std namespace into scope.
I re-wrote it to do all of this;
#include <iostream>
#include <fstream>
using namespace std;
void ReadFile ( ifstream & stream );
int main () {
ifstream fin;
fin.open ( theFileName );
ReadFile ( fin );
}
void ReadFile ( ifstream & stream ) {
}
That should do it for you.
-Ben
---------
On the topic of code with no error handling -- It's not poor coding, it's "optimistic"
|
|
|
|
|
Hi, I am a new to C++ MFC design so thanks in advance for the inputs.
I am wondering if anyone can tell me where is the best place to put the SetRange(int, int) command for a spinner inside a modeless propertyPage. I understand the usual place is in OnInitDlg. However, I don't think there is a similar OnInit function for my property page/sheet.
Thanks!
|
|
|
|
|
OnInitDialog is OK, assuming that range remains the same during the lifetime of your object.
Tomasz Sowinski -- http://www.shooltz.com.pl
|
|
|
|
|
Yes, I would put SetRange in OnInitDialog too in a heart beat, but CPropertySheet class does not have the OnInitDialog function for me to inherit like in CDialog... so I'm lost for ways there.
|
|
|
|
|
Just use this:
BOOL CYourPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
return TRUE;
}
Tomasz Sowinski -- http://www.shooltz.com.pl
|
|
|
|
|
Hmm.. there is no OnInitDialog() fcn in CPropertyPage or any of its parents. This exactly what I am stuck on. I know I can initialize my SetRange in OnInitDialog if I had a dialog, but I don't I have a CPropertyPage.
btw, the tree for these classes is:
. . . . . . . . . . . . . . . . . . . . . . . .-> CDialog . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . / . . . . . . . . . . .
CObject -> CCmdTarget -> CWnd -<. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . \ . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .-> CPropertySheet. . .
So there's no OnInitDialog for CPropertySheet.
|
|
|
|
|
CPropertyPage derives from CDialog - your tree is not based on facts . If you insert CPropertySheet::OnInitDialog() into CYourPage::OnInitDialog, the CDialog::OnInitDialog will be called.
Anyway, if you don't want to use OnInitDialog, use OnSetActive or DoDataExchange instead.
Tomasz Sowinski -- http://www.shooltz.com.pl
|
|
|
|
|
Ah, yes you are correct! I was looking into the wrong place -- the CPropertySheet, instead of CPropertyPage. Thanks! My spinner works like a charm now
|
|
|
|
|
I intend to add a CEdit box to the main window (a drawing program which is NOT Dialog based) so I can always show the x,y coordinates in that box. I've added such a variable to the View class and created it in the constructor, but it does not appear in the main window, how can I make it display?
|
|
|
|
|
You have to create the edit control in your view's OnCreate() handler.
int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
m_myEdit.Create(WS_VISIBLE|WS_CHILD|WS_BORDER, CRect(10,20,30,40), this, ID_MYEDIT);
return 0;
}
---
Multitasking: Screwing up several things at once.
|
|
|
|
|
Thanks. I've successfully added it. I also added a combobox on the window, which dynamically contain some string. What I want is that when make a choice in the combobox, the code will do different things, how can I do that? It's simple in Dialog based program, but I have no idea how to do that in non-Dialog-based.
|
|
|
|
|
You do it exactly the same way as in a dialog. You just have to do it manually, classwizard will not help you. Add your message map entries and member functions.
BEGIN_MESSAGE_MAP(CTestView, CView)
ON_WM_CREATE()
ON_CONTROL(CBN_SELCHANGE, ID_MYCOMBO, OnSelChanged)
END_MESSAGE_MAP()
void CTestView::OnSelChanged()
{
DoSomethingWhenSelectionChanges();
}
---
Multitasking: Screwing up several things at once.
|
|
|
|
|
I tried but it does not work. I also tried to change ON_CONTROL to ON_NOTIFY, it does not work either. The function, say CTestView::OnSelChanged() should be declared with type "afx_msg", right? Is there any other trick besides what you said above? By the way, my application is a windows CE program, could this be the reason?
|
|
|
|
|
|
There is a WIN32 function GetFileVersionInfo to get file version information. Is there a "SetFileVersionInfo" or similiar WIN32 function to change the version information?
|
|
|
|
|
There is a WIN32 function GetFileVersionInfo to get file version information. Is there a "SetFileVersionInfo" or similiar WIN32 function to change the version information?
|
|
|
|
|
Up to my knowledge, this information is stored in the DLL as a resource! So you can change it at design time from within your compiler! What do you mean changing the value at runtime? In memory only or do you want the chage to be permenant?!
|
|
|
|
|
I know UpdateResource can be used to make the change. Do you know if there is an example showing how to change version information permanently using this function? In MSDN, there are some links about how to change dialog resource and string table resource using the function. But I didn't find anything about version.
Thanks.
|
|
|
|
|
Which C++ date/time function will work to populate a variable of type DBTIMESTAMP?
|
|
|
|
|
Does anyone know how to comment out a LARGE chunk of code in a C++ file.
I know the /* comment here */ but if you want to comment out large portion
of a file and have /* comments */ within the file you have to make /* */ all over the place to do the large part. i.e. I would like to comment out the entire file (or close to it). Some thing like a symbol at the beginning of the
file and one at the end of the file, but nothing in the middle that will stop the comment short. Thanks a bunch in return.
Keener
|
|
|
|
|
#if 0
bunch of code
#endif
------------------------------
Smaller Animals Software, Inc.
http://www.smalleranimals.com
|
|
|
|
|
Hi,
I'm working on making an application NLS compliant which is mainly dialog based. What I've to do is I need to load the application's dialog from a resource dll based on the operating system's language. My implementation is as below.
GetUserDefaultUILanguage = (GETUSERDEFAULTUILANGUAGE*)GetProcAddress(hClusAPI, "GetUserDefaultUILanguage");
LANGID Language = GetUserDefaultUILanguage();
_stprintf(g_tcsTemp, _TEXT("res%x.dll"),Language);
if(strcmp(g_tcsTemp, "res409.dll"))
{
HMODULE hLibrary = LoadLibraryEx(g_tcsTemp, NULL,LOAD_LIBRARY_AS_DATAFILE);
if(hLibrary!=NULL)
AfxMessageBox("Other library has been successfully loaded in the system");
HRSRC ResInfo = FindResource(hLibrary,"#102",RT_DIALOG);
ResHndl = LoadResource(hLibrary,ResInfo);
}
else
{
HMODULE hLibrary = LoadLibraryEx(g_tcsTemp, NULL, LOAD_LIBRARY_AS_DATAFILE);
res = GetLastError();
HRSRC ResInfo = FindResource(hLibrary, "#102",RT_DIALOG);
ResHndl = LoadResource(hLibrary, ResInfo);
}
dlg1.CreateIndirect(ResHndl,NULL);
dlg1.ShowWindow(SW_SHOWNORMAL);
This method seems to work, but since CreateIndirect returns immediately the dialog is seen for a fraction of second. Then I used InitModalIndirect API instead of CreateIndirect making the dialog resource modal. Dialog comes up but it always gives assersion in ASSERT(m_lpszTemplateName == NULL);(DLGCORE.CPP line no.430).
nResponse = dlg1.InitModalIndirect(ResHndl,NULL);
dlg1.DoModal();
If any one knows about NLS implementation by loading dialog from resource dll, Please let me know.
Thanks in advance,
Lakshmi.
|
|
|
|
|
Why don't you use a message loop after createIndirect?!
|
|
|
|
|
Hi,
Can u please elaborate
Thanks,
Lakshmi.
|
|
|
|
|
After CreateIndirect use something like:
MSG msg;
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)
{
if (!IsDialogMessage(&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
|
|
|
|