|
What is the maximum size of string you can place in a Edit Box on a dialog. Note I am using CString for holding the text.
I am using a multiline Edit Box to display the progress of a test activity. The display used to be a DOS Window.
I use the following code to update the output:-
m_Output.SetFocus(); // Set the focus to main window of the GUI
m_strNewText.Format ("%s", m_pMsg->OutputText); // Copy from memory into m_strNewText variable
m_strOutput+= m_strNewText + crlf; // Total display string;
SetDlgItemText(IDC_OUTPUT1, m_strOutput); // Display the new text appended onto old text
UpdateData(); // Refresh the control
I was thinking of checking the size and restarting when getting near the limit, but what is the limit?
|
|
|
|
|
Edit controls on Windows NT/ 2000:0x7FFFFFFE characters
Edit controls on Windows 95/98: 0x7FFE characters
this for single line edit controls
you can change this with : CEdit::SetLimitText
|
|
|
|
|
Many thanks for the information.
|
|
|
|
|
An edit box can hold 216 characters. A CString object can hold 231 characters. Use a richedit control if you want to hold more.
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
Does that mean the system allocates with 2^31 bytes of memory space for it whenever I create a CString object? If so, is it not a good idea to using CStrings if I know the string has only few hundred bytes long?
Thanks
|
|
|
|
|
J.B. wrote:
Does that mean the system allocates with 2^31 bytes of memory space for it whenever I create a CString object?
Only if it needs to. Check out how memory is allocated in CString::AllocBuffer() .
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Hi, I am a newbie in Visual C++ Programming concerning MFCs. I'm just wondering what the difference is between string and CString?
Strings have strcpy, strlen, etc, etc... So what are its counterparts for CStrings? What are the different ways of manipulating CStrings?
Thank you so much in advance
|
|
|
|
|
Equivalents:
C CString<br />
strcpy: =<br />
strlen: cs.GetLength()<br />
strcat: +=<br />
strlwr: cs.MakeLower()
Best regards
|
|
|
|
|
Thank you so much
I have another question... Do you guys know what command is used in order to check if a certain character can be found in a string?
I have searched through the net and found out that there is such a thing as Find for CStrings, although everytime I add #include "CString.h" which is necessary to use find, it doesn't work and only produce errors...
How do you use the commnad Find or is there any other way to check if a character can be fond in a CString?
Thank you once again
|
|
|
|
|
CString::Find
MSDN:
// First example demonstrating
// CString::Find ( TCHAR ch )
CString s( "abcdef" );
ASSERT( s.Find( 'c' ) == 2 );
ASSERT( s.Find( "de" ) == 3 );
// Second example demonstrating
// CString::Find( TCHAR ch, int nStart )
CString str("The stars are aligned");
int n = str.Find('e', 5);
ASSERT(n == 12);
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
Are these errors compile time? If so, what's the complaint about?
Do you mean "CStringt.h", or possibly "cstring"?
Steve S
|
|
|
|
|
If you are working around with a MFC project generated by VC++, there's no need to include any header file for CString. If you insist, then do:
#include <cstringt.h> // Visual Studio .NET
If you are using string, you have to include <string>. And class string is in namespace std.
Maxwell Chen
|
|
|
|
|
Thank you to all those who replied about my question I really appreciate it. So sorry about the header file... I thought there was still a need for me to add a CString header file when I intend to use its functionalities
Thanks guys
|
|
|
|
|
How to get full path to folder using SHGetPathFromIDList, or maybe in other way, but using only SHBrowseForFolder
|
|
|
|
|
|
how to get _DSpreadSheet's point from _DSpreadSheet's handle?
(class _DSpreadSheet : public COleDispatchDriver)
CButton's point can get from CButton's handle.
CButton *p;
p = (CButton *)CWnd::FromHandle(glhTargetWnd);
help me! 555555
|
|
|
|
|
Try
pYourWnd->GetControlUnknown();
Sonork 100.41263:Anthony_Yio
Life is about experiencing ...
|
|
|
|
|
thank you for your answer,
but my point is HWND__ and your pYourWnd is CWnd.
I can not use it.
How can I do ?
|
|
|
|
|
That is easy.
Use
CWnd *pWnd = CWnd::FromHandle(yourHWND);
Sonork 100.41263:Anthony_Yio
Life is about experiencing ...
|
|
|
|
|
How can I do to read the timecode in avi files before render them with DirectShow filter ?
Can you give me sample codes ?
Thank you for your answer.
Fred
|
|
|
|
|
Hi,
From my application I am launchin another exe by calling thrugh WinExec("EXE path",SW_SHOW).But the problem here is EXE is getting opened every time when I click the toolbar butto.I want to restrict this for single instance.
can anybody help me regarding this?
Bose Dayala
|
|
|
|
|
the exe you are launching do u have its code, if you do you can code in to the exe itself that it will run only one time
every time it start it can do a FindWindow(windowname) if exists exit ( or Win32 Events can be used )
if you don't have access to the exe's code than in the launching application use CreateProcess instead of winexec and use the handle to the process too determine if the exe is running or not
hope it helps
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg
|
|
|
|
|
Hi,
thnx for quick help....I don't have its code and even ProcessID...how to get the process ID for any EXE??
thnx and regards
Bose Dayala.
ThomasKennedyBose
|
|
|
|
|
Task Manager is an example of a program that enumerates all running processes. It is implemented using data from the performance registry. The following sample code uses the EnumProcesses function to enumerate the current processes in the system. This method is easier than using the performance registry.
#include <windows.h>
#include <stdio.h>
#include "psapi.h"
void PrintProcessNameAndID( DWORD processID )
{
char szProcessName[MAX_PATH] = "unknown";
// Get a handle to the process.
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
// Get the process name.
if ( hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName,
sizeof(szProcessName) );
}
}
// Print the process name and identifier.
printf( "%s (Process ID: %u)\n", szProcessName, processID );
CloseHandle( hProcess );
}
void main( )
{
// Get the list of process identifiers.
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return;
// Calculate how many process identifiers were returned.
cProcesses = cbNeeded / sizeof(DWORD);
// Print the name and process identifier for each process.
for ( i = 0; i < cProcesses; i++ )
PrintProcessNameAndID( aProcesses[i] );
}
The main function obtains a list of processes by using the EnumProcesses function. For each process, main calls the PrintProcessNameAndID function, passing it the process identifier. PrintProcessNameAndID in turn calls the OpenProcess function to obtain the process handle. If OpenProcess fails, the output shows only the process identifier. For example, OpenProcess fails for the Idle and CSRSS processes because their access restrictions prevent user-level code from opening them. Next, PrintProcessNameAndID calls the EnumProcessModules function to obtain the module handles. Finally, PrintProcessNameAndID calls the GetModuleBaseName function to obtain the name of the executable file.
This may help u.
/jitendra
Jitendra Pal Singh Gangwar
E-mail: jitendra_gangwar@hotmail.com
Mobile No: 09831352305
|
|
|
|
|
Task Manager is an example of a program that enumerates all running processes. It is implemented using data from the performance registry. The following sample code uses the EnumProcesses function to enumerate the current processes in the system. This method is easier than using the performance registry.
#include <windows.h>
#include <stdio.h>
#include "psapi.h"
void PrintProcessNameAndID( DWORD processID )
{
char szProcessName[MAX_PATH] = "unknown";
// Get a handle to the process.
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
// Get the process name.
if ( hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName,
sizeof(szProcessName) );
}
}
// Print the process name and identifier.
printf( "%s (Process ID: %u)\n", szProcessName, processID );
CloseHandle( hProcess );
}
void main( )
{
// Get the list of process identifiers.
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return;
// Calculate how many process identifiers were returned.
cProcesses = cbNeeded / sizeof(DWORD);
// Print the name and process identifier for each process.
for ( i = 0; i < cProcesses; i++ )
PrintProcessNameAndID( aProcesses[i] );
}
The main function obtains a list of processes by using the EnumProcesses function. For each process, main calls the PrintProcessNameAndID function, passing it the process identifier. PrintProcessNameAndID in turn calls the OpenProcess function to obtain the process handle. If OpenProcess fails, the output shows only the process identifier. For example, OpenProcess fails for the Idle and CSRSS processes because their access restrictions prevent user-level code from opening them. Next, PrintProcessNameAndID calls the EnumProcessModules function to obtain the module handles. Finally, PrintProcessNameAndID calls the GetModuleBaseName function to obtain the name of the executable file.
This may help u.
/jitendra
|
|
|
|