|
No, since it is build as second property sheet it is already hidden.
Seems redundant to do so, but I'll give it a shot. The "problem" is that I can show this window by changing the Z order.
But since it is not covering the original property sheet window ( by design) , the user can click in its tabs and "nothing" will happend since the window on top of the Z order is active but without focus!
So to get back to the "main" tab, the user need to click on the top tab (Z order) and than the main tab see it as active dialog and can operate normally.
Vaclav
|
|
|
|
|
(probably still a bit drunk after drinking too much Bandol wines last night).
I have a 2 small functions :
void Toto( const CString& s )
{
std::stringstream ss(s.GetBuffer());
}
void Something( )
{
CString s("some string");
Toto ( s );
}
This obviously does not compile because I cannot get call GetBuffer on a const CString .
any other solution than making a copy of the input string in the function Toto ?
void Toto( const CString& s )
{
CString s1 = s;
std::stringstream ss(s1.GetBuffer());
}
Thanks.
Max.
Watched code never compiles.
modified on Friday, March 19, 2010 10:53 AM
|
|
|
|
|
Maximilien wrote: any other solution than making a copy of the input string in the function Toto ?
Not using GetBuffer() ?
You should never call GetBuffer, unless you have a very serious reason to do so. CString provides cast operators, so why would you need to call GetBuffer() ?
|
|
|
|
|
yeah, duh ...
that seems to work.
void Toto( const CString& s )
{
std::stringstream ss( (LPCTSTR)s);
// do some stuff with the ss string.
}
Thanks Cédric.
Max.
Watched code never compiles.
|
|
|
|
|
Normally, you don't need to cast the string explicitely. Did you try without the cast ?
|
|
|
|
|
Yep, tried that and gives an compilation error on the std::stringstream.
"cannot convert parameter 1 from 'const CString' to 'const std::basic_string<_Elem,_Traits,_Ax> &'"<br />
Watched code never compiles.
|
|
|
|
|
Just adding to the above reply...
You could use CString::GetBuffer() if you need access to the internal buffer of the CString object, but after you're done dealing with the buffer, you MUST call CString::ReleaseBuffer() . But by and large, if one of the casting operators would do the job, then you should avoid the call to GetBuffer() and go with the casting operator.
The documentation has more info on this.
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
Since I'm only using the CString as a read-only input, I think I don't have to release it.
anyway, I fixed this (see answer to Cédric).
Max,
Watched code never compiles.
|
|
|
|
|
It's a 'read-only' input now. What about tomorrow, and two years from now? If you'll have to change the code?
It's good practice to release the buffer.
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
Rajesh R Subramanian wrote: It's good practice to release the buffer.
It's even better practice not to call GetBuffer if you don't need to
|
|
|
|
|
Exactly, which I mentioned clearly in my previous post.
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
Rajesh R Subramanian wrote: you MUST call CString::ReleaseBuffer().
Only if you change the length of the string.
|
|
|
|
|
I have added a EditBox control to a Dialog and i have selected the property(number : true,VC++ 2005). i have validated, only number can be entered.if user enters characters it will not accept,ok it works fine.But when user copy some text and paste in EditBox it is accepting i am getting strange output. please help how to stop copy and paste text or any character in EditBox .
|
|
|
|
|
For that you need to implement your own EditBox, like the example given ( Create your own controls - the art of subclassing[^])
And inside which you u have overiride the PreTranslateMessage.
eg:-
BOOL MyEditCtrl::PreTranslateMessage(MSG* pMsg)
{
switch( pMsg->message )
{
case WM_KEYDOWN:
{
switch( pMsg->wParam )
{
case 0x56:
{
if( GetKeyState(VK_CONTROL) )
return true;
}
break;
}
}
break;
case WM_RBUTTONDOWN:
{
return true;
}
break;
}
return CMyEdit::PreTranslateMessage(pMsg);
}
Величие не Бога может быть недооценена.
|
|
|
|
|
|
Hi All
I am using Report View in List control with 5 to 6 columns.
I need to transfer thes data from each column to excel sheet.
Any Way to do it ??
Regards
Gany
|
|
|
|
|
|
Or , you can look over here , I was used this class and work fine !
|
|
|
|
|
Apart from what was already suggested to you, you could consider exporting the values in .CSV format which Excel also can read and is more portable.
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
csv is a more generic format than xls([^])
Величие не Бога может быть недооценена.
|
|
|
|
|
Adam Roderick J 09 wrote: csv is a more generic format than xls
Yes , you are perfectly right , is much more handly and simple to export data in .csv format then .xls ! I recommend this solution !
|
|
|
|
|
i am using Vertical Scrollbar to the dialog window, when i scroll down with controls it works fine,but i want to reposition my dialog along with vertical scroll bar dynamically.i will reset the Vertical Scrollbar.but dialog remains unchanged.i want dailog to refresh.
eg:
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_ALL;
si.nMin = 0;
si.nMax = 200;
si.nPage = 0;
si.nPos = 0;
SetScrollInfo(SB_VERT, &si, TRUE);
|
|
|
|
|
I think you may need to use InvalidateRect() [^] to tell the dialog that it needs repainting.
txtspeak is the realm of 9 year old children, not developers. Christian Graus
|
|
|
|
|
Hi,
My application reads data at startup from the registry.
By default it always goes to HKEY_CURRENT_USER in the registry, but I would like it to use HKEY_LOCAL_MACHINE.
I know I can use RegQueryValueEx and specify HKLM, but I was wondering if there is a way to set the root to be HKLM instead of HKEY_CURRENT_USER, and therefore when I call
SetRegistryKey(_T("Company\\App"));
the root will be HKLM instead of HKEY_CURRENT_USER.
TIA
Tony
|
|
|
|
|
From within the CWinApp derived class change the value of the variable m_pszRegistryKey .
Allocate the string on the heap because the CWinApp destructor calls free on this variable.
The recommended way of doing this is -
m_pszRegistryKey = _tcsdup(_T("HKEY_LOCAL_MACHINE\\Software\\Company\\App"));
You will need administrative privileges to make this happen.
|
|
|
|