|
iostreams does a poor job at handling UNICODE. Even though you can use wide character versions of the routines, they still output in MBCS.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
That's what I thought - so you must write your own macros, routines, etc. to switch-compile for utf-8 and utf-16?
|
|
|
|
|
Hi,
I'd like to create my own control simply derrived from CWnd. I wanted to add some scroll bars to it (or any other MFC controls), but I don't know how that's done.
Thanks for any help.
|
|
|
|
|
http://www.codeproject.com/miscctrl/#Beginners[^]
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
Hi all,
I need to implement an SMTP sink to do some custom processing on inbound emails. I got the KB288098 sample to work, which implements an ATL-based COM object to add a disclaimer to every outgoing email. So far, so good--I don't really care at this point that the sample processes outgoing emails and not incoming ones. The test machine has essentially nothing running on it except for IIS and its SMTP service.
Now, before proceeding further (and I know I'm otherwise gonna break something when I start modifying the sample), I'd like to set a breakpoint in the sample's custom code--specifically, at the start of the CAddDisclaimer::OnSmtpOutCommand() function. I cannot get the breakpoint to trigger.
In this case, my sink DLL (smtpdisclaimer.dll) gets loaded by inetinfo.exe. So, I fire up VC6, load my SMTP sink project, load the adddisclaimer.cpp file, set the breakpoint in the OnSmtpOutCommand() function, select Build, Start Debug, Attach to Process..., select inetinfo from the process list, and OK. Fine, the debugger seems to be in a waiting state.
Then I load up Outlook Express and send an email. I receive it on another machine, with the disclaimer properly in place. This confirms the sample does what it's supposed to be doing.
However, the breakpoint never seems to get hit, and the debugger doesn't interrupt execution and I never get the opportunity to step into any code.
I can hit Stop Debugging after having sent the email, and VC's Output window shows that at some point it has loaded my smtpdisclaimer.dll and its debug symbols (I can see it's been loaded from the proper path and everything)...
I think I need a little hand-holding. How do I go about this? I think my problem stems from the fact that I've never had the chance (misfortune?) to debug a DLL until now, and doesn't really have anything to do with this specific sample...
Help?
|
|
|
|
|
You can always insert a hard breakpoint into your code:
#ifdef _DEBUG
__asm int 3;
#endif
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
<A HREF="http://www.santacruznetworks.com">Santa Cruz Networks</A>
|
|
|
|
|
Wow.
I got it to work, "kinda" (if I try enough times and run it enough times, eventually it *will* hit the breakpoint), but this forces it each and every time... Thanks!
|
|
|
|
|
If you use CDB/NTSD or WINDBG you could do this:
sxe ld smtpdisclaimer.dll
That will then break into the debugger once your DLL is loaded. Once it is you can then set break points "bp smtpdiscalimer!OnStmpOutCommand" for example.
If it doesn't get hit, perhaps it's not being called?
You can also send messages to the debugger using "OutputDebugString" API.
You can also as someone else pointed out, put hard coded break points into your application.
8bc7c0ec02c0e404c0cc0680f7018827ebee
|
|
|
|
|
I got an interview yestoday and was stumbed by the following question,
Suppose you have a MS-Word like application. How do implement the UNDO/REDO function.
Initially, I suggest saving the file everytime with a change. After I spoke it out. I realize that it's impossible. I can't save the file everytime I typed a character. I can't give a resonable solution on this one.
Anybody can help?
|
|
|
|
|
|
After each action that can be undone, push the current state of the document onto a stack. Each time an "undo" is requested, pop the most recent document state off the stack and notify the view that a "new" document needs to be rendered.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
If this is a grphic oriented application, I agree that every primitive has a counter to track the refernece number. This is text processing, MS-Word like application. Is it resonable to change the document state everytime when you type a character?
Thank you for response
|
|
|
|
|
qudayong wrote:
Is it resonable to change the document state everytime when you type a character?
I don't know if it's a good idea or not. I've never had the need to implement such a feature so I'm not sure how I'd actually do it. It was just a guess.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Just think of the stack:
character: rowpos, colnumber
For graphics you could have something like:
OperationType, MetaData
For example. So it's just a stack of commands. You could even determine that a "word" is basically a state, so once an entire word is typed you put it on the stack.
So, some considerations could be:
1. How much data are you storing per-letter/state operation?
2. How long of a history buffer do you want?
If you store a letter as being character, followed by rowposition, column number you are actually storing 2 bytes (unicode let's say), then 2 bytes (say you can't have a line longer than 65536), then say 4 bytes (you have up to 4 billion lines in the document).
2+2+4 = 8 bytes per character operation. If you type 10,000 words and say each word is an average of 7 characters, that's 70,000 characters, that's 560,000 bytes or about 560k of undo changes. That's also 70,000 entries in your undo list. Not to mention possible optimizations in referencing and things or combining operations that cancel each other out.
How many does word go back to?
8bc7c0ec02c0e404c0cc0680f7018827ebee
|
|
|
|
|
One option (which is required for usability) is to group words into single undo entries. Otherwise, just undoing single letters gets to be really annoying. Anyway, most people use backspace to correct single letter errors, not undo.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
Thank you. You opinion ia valuable
|
|
|
|
|
for text, it's pretty easy:
when the user performs an action, save the action in a stack, then perform the action on the document. for undo, pop the last action off the stack and reverse the action.
the trick is to define 'action' in such a way that you can undo it.
ex. for deleting text, save the deleted text and its position as the action (to undo, insert the deleted text at the position). for inserting text, save the position and the number of characters added (to undo, remove the number of characters at the position).
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
Suppose you have 20 pages file.
You last action is delete 19 pages, and the perform undo. If you perform this action servral times, your stack will be overloaded.
|
|
|
|
|
that's why programs put up messages like "Insufficient space in the Undo buffer to save this action. Do you wish to proceed anyway?" (from the Visual Studio editor)
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
that's not usually true - you can't undo an undo - when you do the first undo, the stack is emptied
|
|
|
|
|
Having a test on MS-WORD, I find that you delete 20 page then perform undo. After 30 times there's no complain about memory and the action performs very fast. So I assume, there must has other way than "command pattern" to perform such an action.
cheers
|
|
|
|
|
I might as well say it before the flaming starts.... if you have a specific question to ask, I am sure that someone here would be more than happy to help.... The first thing you will hear is "do your own homework"...
So why can't YOU get it to run in VC++?
Artificial intelligence is no match for natural
stupidity.
Never argue with an idiot. They will drag you down to their level where they are an expert.
|
|
|
|
|
My VC++6 & MS DEV is somewhat out of order, I tried to re-load but was unsuccessful; I need to change the TEST file html code so that the student name and # appears beneath the clock; if I do and try to save it I get just under 20 errors when I attempt to run(!); I am supposed to copy and paste the TEST html code to Notepad or Wordpad, save as html to a deskcop icon; html code to change and save:
ERROR
Betty Hope<h 2=""> ERROR
898654712<h 2=""> ERROR
Betty Hope
898654712
ALSO WINZIPPED it and another friend could not unzip it properly to have a look. thanks for any help.
|
|
|
|
|
I have created an executive file in the form of CMemFile In an MFC application, which is directly copied in memory and is not on the hard disk. Now, how to execute this file directly from the memory? I tried to use the ShellExecute method, however, it does not accept the CMemFile giving an error saying that it cannot convert CMemFile to LPCSTR.
Is there any method to directly execute the exe file from the memory?
Regards
|
|
|
|
|
How does CMemFile store its data? Most likely it stores a pointer to the memory that contains the actual data. Look in the Microsoft documentation for CMemFile to see how it stores the data. Hopefully, CMemFile has a method to provide this pointer. An LPCSTR is a pointer to a string, so method could be called and the result could be cast to an LPCSTR if it is not already returned that way. Then this could be provided to the ShellExecute function.
David Spain, C++ Applications Programmer
|
|
|
|