|
cmk wrote: I agree that it would be nice to use some kind of container, but for his stated use (reading a file of a bunch of ints) using vector to: read 4 bytes from file, vector.push_back, repeat, is probably the least efficient way of doing things.
Agreed. Which is why you don't see that in the code sample I provided him. When using STL, the algorithms are your best bet 90% of the time. Chances are if you are thinking of writing a loop, you could do it better and faster using an algorithm.
As a side note, realloc suffers from the same problem unless he knows how much memory is needed at the start (in which case, you avoid the need for extra memory allocations with vector as well by using reserve). The deque container is also a good choice for this kind of operation.
cmk wrote: Totally disagree, C vs C++ is irrelevant. Using new/delete vs alloc/free is a matter of which tool is best for the job. In C++ both have a place.
To an extent, that can be coughed up to a matter of opinion. However, when using malloc/free and new/delete mixed in the same application, you run into the potential for memory corruption (say, by calling free on something you new'd). It is just better avoided most of the time.
cmk wrote: I use them to create custom allocators for certain object types. Using the default new/delete for all cases will lead to memory frag issues, paging issues, thread contention issues, ... Custom allocators can create much more efficient code. The Heap*() api provides a convenient way of creating/managing these allocators.
The default new/delete are designed to be a general purpose operator. They will work for most things, but yes, there are a few cases where you may want to override them. Those cases are few and far between though. I've seen far too many programmers try to "optimize" their code by overriding new/delete only to realize that memory was never their main bottleneck anyway.
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
ATL Full control containing an WTL CToolBarCtrl:
I have a toolbar button with text where the text doesn't show up, and the image remains in the center.
The button has TBSTYLE_AUTOSIZE | TBSTYLE_DROPDOWN style, and the width does change with the length of the text I set, but the text itself never shows up.
Any ideas?
We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP
Linkify! || Fold With Us! || sighist
|
|
|
|
|
Probably a silly question, but does the button have the BTNS_SHOWTEXT style?
Mark
|
|
|
|
|
This should be necessary only if the toolbar has TBSTYLE_EX_MIXEDBUTTONS
I *think* I tried tht already, but I'll explicitelsy try again tomorrow (with all the other stuff in place)
We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP
Linkify! || Fold With Us! || sighist
|
|
|
|
|
peterchen wrote: This should be necessary only if the toolbar has TBSTYLE_EX_MIXEDBUTTONS
From the SDK...
For TBSTYLE_EX_MIXEDBUTTONS:
"This style allows you to set text for all buttons, but only display it for those buttons with
the BTNS_SHOWTEXT button style"
For BTNS_SHOWTEXT:
"All buttons can have text, but only those buttons with the BTNS_SHOWTEXT button style will
display it"
"This button style must be used with the ... TBSTYLE_EX_MIXEDBUTTONS extended style"
Hopefully that's all it is
Mark
|
|
|
|
|
Hi,
I have created CRichEditBoxes using the following in VC++ MFC
vector<cricheditctrl*>RichEditBox;
CRichEditCtrl *r1 = new CRichEditCtrl;
r1->Create(WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL,
CRect(x1,y1,x2,y2), p, 1);
r1->SetEventMask(ENM_CHANGE | ENM_SELCHANGE );
RichEditBox.push_back(r1);
I get n CRichEditBoxes on the active window.
Now I want to navigate through these boxes by using Up Down arrow keys.
Can you please help
Pritha
|
|
|
|
|
Hi,
Please read
vectorRichEditBox;
as
vector<cricheditctrl*>RichEditBox;
This is the code I have written
Pritha
|
|
|
|
|
Hi,
Sorry but I am not aware how to print angle brackets on this page hence the mistake
But please read
vectorRichEditBox;
as
vector ANGLEBRACKETS CRichEditCtrl* ANGLEBRACKETS RichEditBox
RichEditBox is just a vector of CRichEditCtrl.
I hope you understand
Prithaa
|
|
|
|
|
didn't we answer this last week ?
either you use the default TAB key to "tab" between the controls, either you handle the WM_CHAR ( or something similar ) to process the up and down keys to navigate to te previous/next edit box.
|
|
|
|
|
Hello,
Where should I apply the default TAB key since these boxes are not made on a dialog box but are on a window whose view is derived from CScrollView.I display CRichEditBoxes on this view window.
Where do I use WM_CHAR ?
Since any messages if written in the view class then message for the view window is handled but not for the vector of editboxes which are placed on the window.
please guide
Prithaa
|
|
|
|
|
prithaa wrote: Where do I use WM_CHAR
In your CRichEditCtrl-derived class. Note that you won't be able to insert tabs into your
rich text if you capture the tab key presses
You could send/post a message to the parent view window which then uses the vector to find the
next Rich Edit control to set the focus to.
Mark
|
|
|
|
|
prithaa wrote: vectorRichEditBox;
You messed this up last time, too. Use the < and > button about the emoticons.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Hi,
Sorry to have messed with < > signs
I tried using WM_CHAR in the class derived from CRichEditCtrl but the control doesn't go the LButtonDown function which I wrote in the derived class.
so when I press a key inside the CRichEditBox where does the control go .
Can you please guide.
Prithaa
|
|
|
|
|
Hi,
Sorry to bother you.
but for now the problem is solved and I was able catch the LButtonDown message with your suggestion.
Thanks
Prithaa
|
|
|
|
|
prithaa wrote: but for now the problem is solved and I was able catch the LButtonDown message with your suggestion.
That's great, but I did not offer any suggestion other than to make your code more readable.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
In this existing MFC application, what I want to do is this: once a user clicks on the print button in the main dialog, I want to get the page number currently displayed in the static webbrowser control, check for the corresponding pdf file in the file system and print that pdf file rather than the html file. I'm not sure how to do this. I was thinking of first creating a CDocument object and attaching a view to enable printing, but found out that I can't pass the filename of the document to open in CDocument. Please help!!!
|
|
|
|
|
Hello all,
I am writing a MFC program and I have to display a message like "Processing, please wait" in a box, and the close it from the program when the processing is finished. I don't want the user to be able to close the box in any way: no "Close" button or "X" button.
Ah! you'll say. Use a progress bar!
I can't! I perform the processing with a Perl script which I call with a shell command from the programm so I don't have information on its progress. I can't only wait for it to finish.
Any idea?
Giulio
|
|
|
|
|
See if this helps.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Thanks for the suggestion.
I've seen that.
it's no good.
I don't know how it will take. I need to close the box from the program.
I think the solution is a modeless dialog box.
Ciao
Giulio
|
|
|
|
|
You can use a modeless dialog. Use EnableWindow(FALSE) on your app's main window to prevent the
user from using the UI and create and show the modeless dialog. When your operation completes,
destroy the modeless dialog and call EnableWindow(TRUE) for the main window to re-enable it.
Mark
|
|
|
|
|
Oh, wait.
I meant to say
Ah! Use a progress bar!
|
|
|
|
|
Use a progress bar
led mike
|
|
|
|
|
You can use of a dialog with timer for show your text and destroy it
|
|
|
|
|
Hi all,
They told me there's a function similar to
GetPathName()
_____________________
CFileDialog fd;
fd.GetPathName();
---------------------
which return the directory instead of the
full path.
Does anybody know which one is it ?
Thanx in advance,
Deamo16.
|
|
|
|
|