|
On what would the mouse be clicked?
Here are some things to search for:
WM_LBUTTONDOWN
WM_RBUTTONDOWN
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
I need to modify an industrial application to display chinese characters as well as english text. I have followed many suggestions, tips, advice, etc. in many directions and have wound up right where I began. Is there an easy way to gain this functionality without having to reinvent the wheel? I have enabled the proper fonts and language support packages. I can type chinese characters in Notepad using ALT + the character code, however, this doesn't work in the Developer Studio.
Any suggestions, tips, ideas....???
Thanks so much
|
|
|
|
|
Edit the PreCreateWindow function and add:
cs.style &= ~WS_THICKFRAME;
That should take care of it for you.
Hope that helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
<kmedcalf@ev1.net>
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
Hi!
How I can show the OpenFileDialog in a control, as it be a panel or another control?
I want to do is a control similar for the .NET Folder View by PiSysLabs
( http: // www.pisyslabs.com/DiskObserver.aspx )
Thanks!
|
|
|
|
|
Hi, is there sample code to kill or shutdown another mfc dialog application (.exe) from an mfc application ? THANKS !
|
|
|
|
|
Why not just post a WM_CLOSE message to it? If that does not work, try TerminateProcess() .
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Thanks for responce. Infact i am learning MFC. Now when i use SDI and compile the program, a window like notepad is opened. I want to view my form (which i included as new resourse with base class CFormView as i was told) not that window. Please tell me how can i do that.
Thank you.
We Believe in Excellence
|
|
|
|
|
Can you be more specific. not that window????. What u want to do?
Work hard and bit of luck is KEY to SUCCESS
|
|
|
|
|
All i want to do is get all of the text together from an array of CString objects and put it into a single char* pointing to a string. I'm doing memory allocation and I can't find away to delete the original temp data. It works, but..."I'm stomping on other memory!"
This should be the easiest thing ever. But i'm worried about a memory leak here. Whenever I try to delete allText before creating a NEW allText allocation, it dies. Any ideas how to fix these memory leaks?
char* CFindInWindowDlg::GetTextLinesBuffer()
{
char* allText = NULL;
char* source = NULL;
int sizeAllText = 0;
if (numLines > 0)
{
// **** 'lines' is my array of CString objects!!!
int sizeAllText = strlen(lines[0].GetBuffer(0));
source = new char[sizeAllText];
strcpy(source, lines[0].GetBuffer(0));
for (int a = 1; a < numLines; a++)
{
// **** 'lines' is my array of CString objects!!!
sizeAllText = MergeLines(&allText, sizeAllText, &source, lines[a].GetBuffer(0));
source = allText;
}
}
return allText;
}
int CFindInWindowDlg::MergeLines(char** allText, int sizeSource, char** source, char* aLine)
{
int newSize;
if ((sizeSource == 0) && (*source == NULL))
{
*allText = new char[strlen(aLine)];
newSize = strlen(aLine);
strcpy(*allText, aLine);
return newSize;
}
newSize = sizeSource + strlen(aLine);
*allText = new char[newSize];
strcpy(*allText, *source);
strcat(*allText, aLine);
return newSize;
}
|
|
|
|
|
c121hains wrote:
int sizeAllText = strlen(lines[0].GetBuffer(0));
source = new char[sizeAllText];
C-style strings are null-terminated, meaning there is a 0 byte to mark the end of the string. strlen() does not include that byte in the length, so you end up not allocating space for that byte.
source = new char[sizeAllText+1];
--Mike--
Visual C++ MVP
LINKS~! Ericahist | 1ClickPicGrabber | CP SearchBar v2.0.2 | C++ Forum FAQ
I even hear the Windows "OMG I booted up fine" sound.
-- Paul Watson diagnosing hardware problems.
|
|
|
|
|
Actually the code works fine. Everything is allocated the way i want it to. The only problem is deleting. I can't seem to do that.
|
|
|
|
|
c121hains wrote:
All i want to do is get all of the text together from an array of CString objects and put it into a single char* pointing to a string. I'm doing memory allocation...
Why are you wanting to do this? The whole reason for using CString is so that you would not need to mess with char variables and memory allocation/cleanup.
c121hains wrote:
int sizeAllText = strlen(lines[0].GetBuffer(0));
strcpy(source, lines[0].GetBuffer(0));
sizeAllText = MergeLines(&allText, sizeAllText, &source, lines[a].GetBuffer(0));
The calls to GetBuffer() are not necessary. Remove them.
c121hains wrote:
int CFindInWindowDlg::MergeLines(char** allText, int sizeSource, char** source, char* aLine)
Change the last parameter to const char * instead.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
When I attach the CStrings together (newString = string[0] + string[1] + string[2] ..), the result does not correctly append the strings. My strings contain '\n' and '\r' characters and it seems that when I use the newString += string, only the first result is copied.
Here is an example:
string1 = "this is a string \r\n";
string2 = "this is an appended string \r\n";
string1 += string2;
string1 still equals "this is a string \r\n" and doesn't append string2!!
I need those '\r' and '\n' characters. By putting them all into a char string, it fixes this problem.
|
|
|
|
|
c121hains wrote:
...and doesn't append string2!!
How do you know?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
This works:
char* CFindInWindowDlg::GetTextLinesBuffer()
{
CString allText = "";
for (int a = 0; a < numLines; a++)
{
allText += lines[a].GetBuffer(0);
lines[a].ReleaseBuffer();
}
return allText.GetBuffer(0);
}
Any idea why I need to use GetBuffer instead of string1 += string2?
|
|
|
|
|
c121hains wrote:
This works:
char* CFindInWindowDlg::GetTextLinesBuffer()
{
CString allText = "";
[...]
return allText.GetBuffer(0);
That may seem to work, but it actually doesn't. You can't return a pointer to the internal buffer in allText , since that variable will be destroyed as soon as the function terminates.
Check the code I suggested in a previous post (the function receives a CString reference from the caller and stores the result in it).
c121hains wrote:
Any idea why I need to use GetBuffer instead of string1 += string2?
You don't need to use GetBuffer ; that's not the problem.
--
jlr
http://jlamas.blogspot.com/[^]
|
|
|
|
|
A classic case of "MFC must be broken because my code works just fine."
Wrong.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
Try this:
CString strAll = lines[0] + lines[1] ...
|
|
|
|
|
I tried that but it didn't work.
Here is an example of what happens:
string1 = "this is a string \r\n";
string2 = "this is an appended string \r\n";
string1 += string2;
string1 still equals "this is a string \r\n" and doesn't append string2!!
I need those '\r' and '\n' characters. By putting them all into a char string, it fixes this problem.
|
|
|
|
|
|
In the debugger.. There is no change to the original string:
originalString = "the original string \r\n";
originalString += "a new string \r\n";
------
originalString still equals "the original string \r\n";
Do you get a different result?
|
|
|
|
|
It should work. Maybe the debugger is showing only the first line. Try doing a TRACE() and see the result in the output window.
--
jlr
http://jlamas.blogspot.com/[^]
|
|
|
|
|
This works:
char* CFindInWindowDlg::GetTextLinesBuffer()
{
CString allText = "";
for (int a = 0; a < numLines; a++)
{
allText += lines[a].GetBuffer(0);
lines[a].ReleaseBuffer();
}
return allText.GetBuffer(0);
}
Any idea why I need to use GetBuffer instead of string1 += string2?
|
|
|
|
|
This works:
char* CFindInWindowDlg::GetTextLinesBuffer()
{
CString allText = "";
for (int a = 0; a < numLines; a++)
{
allText += lines[a].GetBuffer(0);
lines[a].ReleaseBuffer();
}
return allText.GetBuffer(0);
}
Any idea why I need to use GetBuffer instead of string1 += string2?
|
|
|
|
|
Well, that only "works" by chance. You're returning a pointer to the local variable allText which immediately goes out of scope.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | 1ClickPicGrabber | NEW~! CP SearchBar v3.0 | C++ Forum FAQ
I even hear the Windows "OMG I booted up fine" sound.
-- Paul Watson diagnosing hardware problems.
|
|
|
|