|
What I meant was that (this is only one instance), the SGI STL has been designed to support the old header file naming style. That is, you would include iostream.h <-- rather than iostream -- if you do include iostream so you can access the new features you will get a lot of errors because it doesn't handle it yet for some reason.
Travis D. Mathison ---
--- After three days without programming, life becomes meaningless ...
|
|
|
|
|
sgi STL is not being built upon, hence the deprecation problem. Use STLPort instead - www.stlport.com, it has the hash table, the additional modifiers, etc., in fact everything the SGI STL has and more.
I believe VC.NET has a better STL - previously they have been stuck with an old Dinkumware implimentation for purely legal reasons.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
|
|
|
|
|
I just downloaded STLport and am reading about it's use.. thanks for the suggestion.
Travis D. Mathison ---
--- After three days without programming, life becomes meaningless ...
|
|
|
|
|
Hi,
I have an SDI application that has a CFormView derived class as well as a docking window with a CDialog derived class. When the user clicks on the Print command, the message goes to the CFormView derived class where I modified the CFileDialog with two radio buttons to either print the main CFormView or the CDialog window.
Well, when I do this and I call the CDialog derived printing code for some reason, the document gets printed three times and then throws an exception. In actuallity, it should only print one page, I also tried setting the max page to 1 to no evale. I can't figure out why this happens, I guess it could be because the CFormView class is processing the print call but I'm not sure.
Does anyone have any suggestions on how I can fix this peculiure problem?
Thanks in advance,
Craig
|
|
|
|
|
I would recommend emulating the Doc?view printing procedure for your dialog derived class. I did something similar when printing to PDF files. The whole code for that procedure here is shown, so some of the code will not be relevant to what you are doing, but it will give you some idea of how to progress:
DOCINFO di ;
CPrintInfo printInfo ;
CRefinementProDoc *pDoc = GetDocument() ;
CString filename ;
CDC dc ;
CRect draw_area ;
ASSERT_VALID(pDoc) ;
filename = pDoc->GetPathName() ;
filename.MakeLower() ;
if (filename == "")
{
filename = pDoc->GetTitle() ;
if (filename.Find(" (modified)") >= 0)
filename = filename.Left(filename.GetLength() - 11) ;
}
if (filename.Find(".sds") >= 0)
filename = filename.Left(filename.GetLength() - 4) ;
if (filename.Find(".mds") >= 0)
filename = filename.Left(filename.GetLength() - 4) ;
filename += ".pdf" ;
CFileDialog dlg(FALSE, "PDF", filename, OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY, "Adobe acrobat PDF files (*.pdf)|*.pdf||") ;
dlg.m_ofn.lpstrInitialDir = theApp.g_szLastDirectory ;
pView = this ;
dlg.SetTemplate("MYFILEOPEN", "MYFILEOPENEXPLORER") ;
dlg.m_ofn.Flags |= OFN_ENABLEHOOK ;
dlg.m_ofn.lpfnHook = (LPOFNHOOKPROC)OFNHookProcOldStyle ;
if (dlg.DoModal() == IDCANCEL)
return ;
for (int i = 0 ; i < MAX_DLLS ; i++)
global_page_status[i] = g_bAllowPrint[i] ;
filename = dlg.GetPathName() ;
HDC hDC = theApp.g_PDF.GetPrinterDC() ;
if (hDC == NULL)
return ;
OnAboutToPrint() ;
di.cbSize = sizeof(DOCINFO) ;
di.lpszDocName = pDoc->GetPathName() ;
di.lpszOutput = filename ;
dc.Attach(hDC) ;
printInfo.m_bDirect = TRUE ;
printInfo.m_rectDraw.left = 0 ;
printInfo.m_rectDraw.right = dc.GetDeviceCaps(HORZRES) ;
printInfo.m_rectDraw.top = 0 ;
printInfo.m_rectDraw.bottom = dc.GetDeviceCaps(VERTRES) ;
draw_area = printInfo.m_rectDraw ;
dc.StartDoc(&di) ;
OnPreparePrinting(&printInfo) ;
for (printInfo.m_nCurPage = 1 ; printInfo.m_nCurPage <= printInfo.GetMaxPage() ; printInfo.m_nCurPage++)
{
dc.StartPage() ;
OnPrint(&dc, &printInfo) ;
dc.EndPage() ;
printInfo.m_rectDraw = draw_area ;
}
OnEndPrinting(&dc, &printInfo) ;
dc.EndDoc() ;
VERIFY(dc.DeleteDC()) ;
if (theApp.g_bStartPDF)
ShellExecute(NULL, NULL, filename, NULL, NULL, SW_SHOWMAXIMIZED) ;
theApp.SetLastDirectory(filename.Left(filename.ReverseFind('\\'))) ;
Roger Allen
Sonork 100.10016
If I'm not breathing, I'm either dead or holding my breath.
A fool jabbers, while a wise man listens. But is he so wise to listen to the fool?
|
|
|
|
|
Roger,
Thanks so much for your example, I will try it and see if it will solve the problem I am having.
Thanks again,
Craig
|
|
|
|
|
I just created an MDI application using visual studio. I'm trying to draw graphics using openGL in the child window. How exactly do I do this. Am I supposed to attach a function for the child window class where I can draw, or do I declare an instance of the child window class in my drawing function or what?
|
|
|
|
|
Hi,
You need to draw the graphics in the OnDraw handler of your CView derived class. However, OpenGL is never that simple, so I would suggest you have a look here for an article that might help you.
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|
When subclassing controls is it posible to use a classes member function as the message handler procedure...?
class MyClass : public CWnd
{
MyHandler() { }
OnCreate()
{
WNDCLASS wc;
wc.lpfnWndProc = MyHandler;
HWND hwnd = CreateWindow(blah);
}
}
The above method didn't work for me, I haven't yet tried actually subclassing using SetWindowLong() but I can't see this working either.
Anybody have any idea's...?
Cheers!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
Only if you make the member function static. A non-static member will expect to get the hidden this pointer passed, and windows won't do that!
There's a lot of info on methods for using members as callbacks which also applies to this problem. Basically, you can use a static member or a global C-style function.
Cheers
Steen.
"To claim that computer games influence children is rediculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
|
|
|
|
|
I'm currently using a global C style function, but would prefer to use a more C++ approach.
I'll try static functions and see whats happens...
Cheers!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
Steen Krogsgaard wrote:
"To claim that computer games influence children is rediculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
LOL
Jeremy L. Falcon
"The One Who Said, 'The One Who Said...'"
|
|
|
|
|
Create a static member function in your class.
Then Call SetWindowLong, and set the GWL_USERDATA field as the this pointer in your
class. Then in your handler, you will get teh window long data and use that as your class pointer.
class MyClass : public CWnd
{
HWND m_hWnd;
public:
static LRESULT MyHandler(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
LRESULT lResult;
MyClass *ThisPtr = dynamic_cast<MyClass*>(::GetWindowLong(hWnd, GWL_USERDATA));
if (!ThisPtr)
{
}
switch (nMsg)
{
case WM_CREATE:
{
lResult = ThisPtr->OnCreate(nMsg, wParam, lParam);
...
}
case ...:
...
}
return lResult;
}
HWND CreateWindow()
{
WNDCLASS wc;
wc.lpfnWndProc = MyHandler;
m_hWnd = CreateWindow(blah);
::SetWindowLong(m_hWnd, GWL_USERDATA, (LONG)this);
return m_hWnd;
}
LRESULT OnCreate (WPARAM wParam, LPARAM lParam)
{
}
};
There are other ways that are possible, I think that this a fairly straight forward technique if you are going to Write your own class framework to manage your windows.
|
|
|
|
|
Hello,
I've tried using CreateIconIndirect to create a 256-color icon, by applying a 8bit bitmap in hbmColor. However the output icon is a 4-bit icon.. I'd appreciate if anyone can give me some help.
|
|
|
|
|
After you look at the icon data it is a 4-bit icon, or when you try to display it it is a 4-bit Icon?
|
|
|
|
|
I'm trying to print out a hex value say b to a file. But instead of printing out b it prints 11. Now I know 11 is B in hex BUT I want the letter b.
Here's one variation I have tried.
object output is a vector of ints.
for(int i = 0; i < objectOutput.size(); i++)
outfile << std::hex << objectOutput[i] << std::endl;
I've tried std::hex and std::setiosflags and many different variations and combinations but I still get 11. What am I doing wrong?
nay
|
|
|
|
|
how about this instead.
for(int i = 0; i < objectOutput.size(); i++)
outfile << setiosflags( std::ios::hex) << objectOutput[i] << std::endl;
|
|
|
|
|
I am having trouble using the SetCheck method of a CTreeCtrl. I am using Visual C++ 6.0 SP5 w/IE5.5 installed. I have a dialog with a tree control on it (placed there by the dialog editor). I have set the "Check Box" style on the editor. The check boxes appear and I can check/uncheck the boxes with a mouse. However, I cannot programatically set the check mark using SetCheck.
HTREEITEM hSel = m_wndTree.InsertItem(strText, hParent);
ASSERT(hSel);
VERIFY(m_wndTree.SetCheck(hSel, TRUE));
Any ideas?
|
|
|
|
|
I'm just guessing here, but it could be that the tree needs to be redrawn. Try the following:
VERIFY(m_wndTree.SetCheck(hSel, TRUE));
m_wndTree.Invalidate();
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|
Nope, that's not the problem.
|
|
|
|
|
I had the same problem
Do a search on "Check boxes in CTreeCtrl" and take a look at the second reply from Tomasz Sowinski. This corrected my problem.
-kg
Ken Goguen
|
|
|
|
|
Is hParent a valid HTREEITEM?
Did You make a refresh?
Regards!!!!
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
is there any way to search a AnsiString?
|
|
|
|
|
Hy!
... you can tray strstr() function ...
Bye,
Orbital^
...the night is long ... but not long enought to do some real coding ...
|
|
|
|
|
I have a current project going at work and since I'm the only developer here would like to use you guys as a sounding board, hope no one minds. Here's my current project I have a text file that extracts total counts by different codes into a main text file. Here is an example of a couple lines from the text file:
3AAA, 789
4EFJ,R321 90
5BBB,3AAA 6
etc...
Now what I'm doing is reading in the file with CStdioFile and tokenizing each line and inserting relevant information into a structure like:
struct Data{
char* Code;
long Amount;
};
by using the strtok() function I have to keep a counter during the tokenizing portion of the program in order to back track from an array of struct Data I created in order to fill in the Amount field with the right amount. Because let's say for example I tokenize the 3rd string I get these tokens:
5BBB
3AAA
6
I do not get the amount value until the very end so I have to go back on 5BBB and 3AAA to add in amount 6. Now this file gets pretty big, and with just going through the array and looking up each string literal to see if it is there or not and then adding the amount I might be using more resources than I need to.
Question to anyone is there a more efficent way to do this? I'm not asking for code examples just methodology. If I got code examples then I couldn't figure out how to write it and then programming becomes no fun
But if there is a more efficient method to do what I'm proposing please let me know, and for further clarification just from the 3 lines at top the final output file looks like:
3AAA 765
4EFG 90
R321 90
5BBB 6
It works now, but I'm thinking there is a more efficent way of doing this...
TIA
HomeNuke
----
"Nuke'd Your Home, Yet?"
Run your own PostNuke based web server from home
http://www.homenuke.com
|
|
|
|