|
12291 == 0x3003 == FNERR_BUFFERTOOSMALL
Clearly documented in the SDK under CommDlgExtendedError()...
"The CommDlgExtendedError function returns a common dialog box error code. This code indicates
the most recent error to occur during the execution of one of the common dialog box functions.
These error codes are defined in Cderr.h."
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Now what are the odds that the answer would be in the first line of the help file. I did actually find that a few minutes ago and have been trying to increase my buffer size by changing the OPENFILENAME.nMaxFile, but this is appearantly causing memory to be over written and failing on initialization of the dialog. I'm getting an access violation error and the call stack shows only assembly.
Any idea how to correctly increase the buffer size?
Dustin
|
|
|
|
|
Dustin Henry wrote: Now what are the odds that the answer would be in the first line of the help file.
that's the reason for my smart-alec reply
Increasing OPENFILENAME.nMaxFile isn't the only thing you need to do. You also need to increase
the size of the buffer pointed to by OPENFILENAME.lpstrFile.
//example
DWORD dwMaxFileLength = MAX_PATH * 10;
MyOFN.lpstrFile = new TCHAR[dwMaxFileLength];
MyOFN.nMaxFile = dwMaxFileLength;
...
delete[] MyOFN.lpstrFile;
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
That fixed it. Thanks for the help Mark.
|
|
|
|
|
No problem!
I thought I'd mention that "MAX_PATH * 10" was arbitrary. It may be a good idea to consider
how many files a typical user will select normally and adjust the size accordingly.
You'll have one path and how ever many filenames.
I have no personal set formula. I chose MAX_PATH * 32 in my apps for multiple-select file dialogs
for no reason other than that's the first thing that came to mind and roughly 8K (16K for Unicode)
bytes of temporary memory is cheap I bet 1/10th of that has never been exceeded .
Have fun!
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Can't you use the Error Lookup (errlook.exe) tool that ships with VS?
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Probably he got the error code ERR_ASK_AT_CP
|
|
|
|
|
I know this is a stupid question but: how do I link (or include) only resource files within my project?
Jay
|
|
|
|
|
can you provide some little more details about what you have and what you need please ?
|
|
|
|
|
sorry, i wanted to link source files
|
|
|
|
|
Jay Minor wrote: ...resource files...
Which is what exactly?
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Do you want to insert resource file(rc) to your project?
|
|
|
|
|
i ment linking surce files (.cpp) not .rc files
|
|
|
|
|
still you don't provide much infos, so i can't help
|
|
|
|
|
If you want to add a cpp file to your project you can right click on the Solution Explorer of your project and choose Add->Add New Item and select c++ file to Create a source file,Is your intent?
|
|
|
|
|
my intent was to include it in the actual program (not just the project)
|
|
|
|
|
Whats meaning of "actual program " again if you want to include a exist cpp to your project you can use of Add Exsiting Item you can include cpp but if it doesnt your answer more explain
|
|
|
|
|
this is what i dont want to do: #include "c:/.....", since i can (like u said) add an existing item to my project, so instead of typing the file path all the time, cant i just do something like #include "filename.cpp" wich is already in the project?
|
|
|
|
|
Im sorry but I dont understand what you said can you more explain but a thing you must inlcude filename.h not filename.cpp
|
|
|
|
|
I want to set the back ground color for my SDI main frame using MFC. I don't know how?
|
|
|
|
|
The easiest way is to add a WM_ERASEBKGND handler to the window class. In response to the
message, draw the background in the color of your choice:
BOOL CMyFrameWnd::OnEraseBkgnd(CDC* pDC)
{
CBrush bkBrush(RGB(0xFF,0x00,0x00));
pDC->SelectObject(bkBrush);
CRect CliRect;
GetClientRect(&CliRect);
pDC->PatBlt(CliRect.left, CliRect.top, CliRect.Width(), CliRect.Height(), PATCOPY);
return TRUE;
}
Another way is to register a window class (instead of using the default) and in the WNDCLASS
struct set the hbrBackground member to a brush of the desired color.
Note that if your main frame has a view in it then you need to do this in the view class, not the
frame class.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
I add OnEraseBkgnd as you suggest in my main frame class, and when I launch my window application I see the red back ground flash quickly and then back to white back ground. Do you know why? Thanks
|
|
|
|
|
gurucplusplus wrote: Do you know why?
Yes, because you should have done it in the view class
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
I got it. Thanks. But I have another question. I want to draw lines and rectangle box as overlay to exiting image display on main window frame. How can I do it? I currently can drawing lines, rectangle box on my image as I use mouse left and right mouse buttons. but what I did is to draw onto the image but not on graphic overlay frame. Thanks.
|
|
|
|
|
As with the background, if you have a view in the frame then you do your drawing there instead of
on the frame window - otherwise it will be "covered" by the view window like when you saw the
frame background window flash.
Typically, you'd do your drawing in response to a WM_PAINT message, after the image has been
drawn. If it's a CView-derived class, overriding OnDraw() may be a more appropriate place,
especially if the base class draws the image in OnDraw().
Either way, this means you need to store the coordinates (or whatever info is necessary) to redraw
everything every time repainting is necessary (when WM_PAINT is received).
How is the image being rendered in your case?
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|