|
Have you tried e.g. sprintf( SomeCharArray + strlen(SomeCharArray), "%s", m_sAccount.GetBuffer(0)); ?
But err, what does the sprintf do? Do you want to append the CString to SomeCharArray? You should use strcat instead
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Well, I tried m_sAccount.Mid(0) but that gave me the same results are m_sAccount.
Let me try your suggestion.
(The 'In a nut-shell' explination)sprintf basically copies whatever kind of data to end of another string converting it to a string when it's all done.
say, SomeCharArray contains "HelloWorld" and someIntValue = 32768.
Therefore, sprintf(SomeCharArray + strlen(SomeCharArray), "%i", someIntValue); copies 32768 to the end of SomeCharArray; thus, leaving, "HelloWorld32768".
(BRB)
|
|
|
|
|
Any time you use a string object (CString or any other string wrapper class) with the printf family of functions, you need to cast the object to a pointer type, so that only the pointer is put on the stack.
sprintf( SomeCharArray + strlen(SomeCharArray), "%s", (LPCTSTR) m_sAccount); But as Gregor said, the real bug in your code is how you construct the string in the first place. Just use one sprintf() call.
--Mike--
Friday's GoogleFight results: Britney Spears 2,190,000 - Erica Weichers 23
1ClickPicGrabber - Grab & organize pictures from your favorite web pages, with 1 click!
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Of all the places I put (LTCTSTR), I *don't* think I placed it right there.
(BRB)
|
|
|
|
|
You can use strcpy, like this:
strcpy(SomeCharArray, m_sAccount + m_sRoom + m_sFullname);
However, you need to be careful that the length of the 3 variables does not surpass the size of SomeCharArray - 1.
Regards,
Alvaro
Well done is better than well said. -- Benjamin Franklin
(I actually prefer medium-well.)
|
|
|
|
|
yeah, thats the method I would use. Nice and easy
|
|
|
|
|
You need to initialize SomeCharArray to an empty string, either via
SomeCharArray[0] = '\0'; or
strcpy(SomeCharArray,""); otherwise, you're concatenating at an arbitrary location in the string. Another way to do this would be
sprintf("%s%s%s",m_sAccount,m_sRoom,m_sFullname);
Software Zen: delete this;
|
|
|
|
|
Try this :
CString str="Hello";
char *pStr=str.GetBuffer(0);
Thsi should return a pointer of type char representing the string content, always works for me.
Shay
|
|
|
|
|
Well, I appreciate *everyones* help.
I also went over to CodeGuru and found this other method.
Again, thanks.
|
|
|
|
|
I have a CListCtrl in report mode with checkboxes. With several lines of data I can check/uncheck the check boxes without shifting the selection or getting any update other than an ItemChanged update. I need the checkbox change to be reflected back and set the current selection to the item changed. How do I do this?
I have tried to handle it in the OnItemChanged but I get some really bizarre behaviour.
Dave Huff
Igor would you give me a hand with the bags?
Certainly - you take the blonde and I'll take the one in the turban!
|
|
|
|
|
|
Nope it doesn't.
It tells me how to use GetCheck and SetCheck but it doesn't tell me how to pick up on the change as it is being done.
I am also having a problem similar to one described a few posts down where I have the element selected and when I hit the down key it places me back to the first element in the list. But when I hit the up arrow it works just fine!
Thanks
Dave Huff
Igor would you give me a hand with the bags?
Certainly - you take the blonde and I'll take the one in the turban!
|
|
|
|
|
Here's some very old code I dug up that handles this. I don't remember how it works -- that's how long it's been -- but I hope it helps.
void CMyDlg::OnItemchangedListParts(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;
if (HasCheckboxChanged(pNMListView))
UpdateControls();
}
bool CMyDlg::HasCheckboxChanged(NM_LISTVIEW* pNMListView, bool* pbChecked = NULL) const
{
ASSERT(pNMListView);
if (pNMListView->uOldState == 0 && pNMListView->uNewState == 0)
return false;
BOOL bPrevState = (BOOL)(((pNMListView->uOldState & LVIS_STATEIMAGEMASK)>>12) - 1);
if (bPrevState < 0)
bPrevState = 0;
BOOL bChecked=(BOOL)(((pNMListView->uNewState & LVIS_STATEIMAGEMASK)>>12) - 1);
if (bChecked < 0)
bChecked = 0;
if (pbChecked)
*pbChecked = !!bChecked;
return (bPrevState != bChecked);
}
Regards,
Alvaro
Well done is better than well said. -- Benjamin Franklin
(I actually prefer medium-well.)
|
|
|
|
|
Just the ticket!
And I figured out the resetting to first index problem too!
Thanks
Dave Huff
Igor would you give me a hand with the bags?
Certainly - you take the blonde and I'll take the one in the turban!
|
|
|
|
|
I have some code as follows, to change the text and
background color of the currently selected text in a
control based on RichEdit 2.0.
------------------------------------------------------
CHARFORMAT2 cf;
unsigned int cfSz = sizeof(cf);
cf.cbSize = cfSz;
SendMessage(m_hWnd,EM_GETCHARFORMAT,(WPARAM)SCF_DEFAULT,
(LPARAM)&cf);
cf.crBackColor = RGB(255,0,0);
cf.crTextColor = RGB(0,0,0);
cf.dwMask |= CFM_BACKCOLOR | CFM_COLOR | CFM_LINK ;
if ( cf.dwEffects && CFE_AUTOBACKCOLOR)
cf.dwEffects -= CFE_AUTOBACKCOLOR;
if ( cf.dwEffects && CFE_AUTOCOLOR)
cf.dwEffects -= CFE_AUTOCOLOR;
cf.dwEffects |= CFM_LINK ;
SendMessage(m_hWnd,EM_SETCHARFORMAT,(WPARAM)SCF_SELECTION,
(LPARAM)&cf);
-------------------------------------------------------
however the selected text defaults to blue and is
underlined becuase of the CFM_LINK flags and overrides the
BackColor and TextColor I've set for the characters.
Is it possible to override Richedit's default displaying
of characters that have the CFM_LINK flags set? I haven't
been able to find any documentation on this but believe it
should be possible??? Any insight is appreciated.
Thanks in advance.
|
|
|
|
|
Why is it taking for my project so long to load....
I have a nice chunky project but still, it can take up to 2 minutes to load the whole workspace, any way to shoten it ?
Thanks
Shay
|
|
|
|
|
You mean if you doubleclick on a *.dws or *.vsproj file or open it from inside VS?
Actually this takes no more than 10 seconds for small project.
How big is your project? (count of files, classes ect.)
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Yes, double click on DSW on File->open
I have around 30 classes but I don't thin that should limit the speed, do you ?
|
|
|
|
|
It might be due to the "one-million breakpoints" problem. Bring up your breakpoint dialog and check if there's a heap of them set ( usually duplicates. ) Remove them and see if it helps.
Option 2:
If you don't use the class-view info, ( sounds limiting, but it doesn't have to be ),
you delete your project NCB file, create an empty one and make it write-protected.
It will speed up things, at the cost of not having the class-info available.
-=jarl=-
|
|
|
|
|
Where is this "Break point dialog" ?
Shay
|
|
|
|
|
hit Ctrl-B in the editor window, ( VC 6 ), or hit Ctrl-Shift-F9 to clear all, ( VC 7 )
-=jarl=-
|
|
|
|
|
Where do I get the "Break point" dialog ?
|
|
|
|
|
COOOOOOOOOOOOOOOLLLLL !!!!
I just found the dialog and removed all of them, and man, It works !
Thank you !
Shay
|
|
|
|
|
You are most welcome Sir!
-=jarl=-
|
|
|
|
|
Are you using any kind of integrated source code control? If so, it will take forever to load up large projects.
Even a broken clock is right twice a day.
|
|
|
|