|
I want to change CString data to CString data(in Hex format) and change back from CString data (in Hex format)
to CString data. So I write this below code
<br />
CString m_str = "chop][:" ;<br />
CString ivstr;<br />
StrToHexStr(m_str, ivstr); <br />
StrToHexStr function change CString data to CString data(in Hex format)which have these below detail.
<br />
void StrToHexStr(CString& strData, CString& hexstrData)<br />
{ <br />
int j;<br />
CString strtemp;<br />
<br />
hexstrData.Empty();<br />
for (j=0;j<strData.GetLength();j++){<br />
strtemp.Format("%02X",strData.GetAt(j));<br />
hexstrData+=strtemp;<br />
}<br />
}<br />
I get ivstr = "63686F705D5B3A" (from m_str = "chop][:")
Then I write program to change back from CString data (in Hex format)to CString data.
<br />
ivstr = "63686F705D5B3A"; <br />
HexStrToStr(ivstr, m_str);<br />
HexStrToStr function change CString data (in Hex format)to CString data which have these below detail.
<br />
void HexStrToStr(CString& hexstrData, CString& strData)<br />
{ <br />
int j, strlen;<br />
CString c1, c2;<br />
int temp;<br />
unsigned char ctemp;<br />
<br />
strData.Empty();<br />
<br />
for (j=0;j<hexstrData.GetLength();j+=2)<br />
{<br />
c1= hexstrData.GetAt(j);<br />
if ((c1 == 'A')||(c1 == 'B')||(c1 == 'C')||(c1 == 'D')||(c1 == 'E')||(c1 == 'F'))<br />
{<br />
ctemp = c1[0];<br />
temp = (ctemp-55)*16;<br />
}<br />
else<br />
{<br />
temp = atoi(c1)*16;<br />
}<br />
c2= hexstrData.GetAt(j+1);<br />
if ((c2 == 'A')||(c2 == 'B')||(c2 == 'C')||(c2 == 'D')||(c2 == 'E')||(c2 == 'F'))<br />
{<br />
ctemp = c2[0];<br />
temp = (ctemp-55);<br />
}<br />
else<br />
{<br />
temp += atoi(c2);<br />
}<br />
strData += temp;<br />
}<br />
}<br />
But I do not get m_str = "chop][:"
m_str is the other string
Do you know how to solve my problem?
Thank you for your reply.
|
|
|
|
|
When reversing the process, take each two Hex chars, convert them to a long (strtol base 16 ) then format it into a char, then concatenate into a string
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
How can I get the coordinates of a window, relative to it's parent?
And how can I create sticky buttons on a toolbar? (Staying up/down when clicked)
Using MFC
|
|
|
|
|
Not sure about the coords part, but sticky buttons work exactly the same way as checkable menu items do
--
Help me! I'm turning into a grapefruit!
|
|
|
|
|
benjymous wrote:
Not sure about the coords part, but sticky buttons work exactly the same way as checkable menu items do
And that would be... how :p
|
|
|
|
|
Its relatively simple:
CRect GetCoordsRelativeToParent (CWnd *pCoordsOf)<br />
{<br />
CWnd *pParent = NULL;<br />
ASSERT(pCoordsOf);<br />
if (pCoordsOf != NULL)
pParent = pCoordsOf->GetParent ();<br />
<br />
CRect rcCoords;<br />
pCoordsOf->GetWindowRect (&rc);<br />
pParent->ScreenToClient (&rc);<br />
<br />
return rc;<br />
}<code><br />
<br />
I'm going of memory, so the syntax of the commands may be a little wrong, but you hopefully the idea!<br />
<br />
Iain.
|
|
|
|
|
Thanks a lot
|
|
|
|
|
Locked Ghost wrote:
And how can I create sticky buttons on a toolbar? (Staying up/down when clicked)
// where i is the button index (1,2,3,4,5,6 etc...)
m_wndToolBar.SetButtonStyle(i, TBSTYLE_CHECK);
Locked Ghost wrote:
How can I get the coordinates of a window, relative to it's parent?
CPoint point;
ClientToScreen(&point);
|
|
|
|
|
I forgot you need to handle the ON_UPDATE_COMMAND_UI ... and do a SetCheck either TRUE or FALSE to set the button down and up..
|
|
|
|
|
How can I catch an event in my application when user changes/changed language
(for instance, from En to Fr or De) in system tray area or with ALT+SHIFT?
Thanks
|
|
|
|
|
- INTRODUCTION:
I have created a derived CListCtrl class.
That class have a CEdit and a CComboBox var.
I try to instantiate them using their Create function but the this pointer is still null in the constructor of the ListCtrl.
- QUESTIONS:
When do the ListCtrl this pointer won't be null?
Which message must I handle in order to be able to use the Create functions? I mean that as in a dialog there's the OnInitDialog function, could it be possible to have something similar in a control?
- CODE:
the header file:
<br />
CEdit m_cedParametritzacio;<br />
the constructor in the cpp file:
<br />
CRect rInicialitzacio;<br />
<br />
rInicialitzacio.left = 0;<br />
rInicialitzacio.top = 0;<br />
rInicialitzacio.right = 20;<br />
rInicialitzacio.bottom = 20;<br />
<br />
int iR = this->m_cedParametritzacio.Create(ES_AUTOHSCROLL, rInicialitzacio, this, IDC_ED_PARAMETRITZACIO_LCTRL);<br />
Due to the fact that this is still NULL the function fails.
|
|
|
|
|
"this" pointer is not null at any place (from constructor to destructor).
ur problem is the (parent) window has not been created in constrctor.
WM_CREATE is right point to create child window - but, some MFC classes filter the message - check if the message is really past to ur code if has trouble.
includeh10
|
|
|
|
|
the wm_create is not passed...
|
|
|
|
|
Ok, here's the situation: I've created a new MDI app (with Appwizard) to which I've added four CFormView's. I've registered to Document Templates ok and can open new views without any problem.
The thing is these views are to operate sequentially (there is only one document) - i.e. the user will complete all the nessecary bits on one form, then click a button whoch will open a different form and close the current one.
The new view opens OK, but i'm having difficulty closing the first one without getting various nasty access violations etc. I gather from MSDN that DestroyWindow is the thing I should be calling, but that I should be calling this for both the view and frame - is this right? If so I cannot get it to work at all (shuts down ok but I then get all sorts of access violations which seem to be caused by some bit or other being left in memory).
Any body know how to do this? It strikes me as something pretty elementary but I just can't get a grip on it. Help!
All I want to do is close the view totally.
Alex.
|
|
|
|
|
I also need help on how to restart a program from within itself...
Basically I have a need to reload my program from scratch if a user changes some options. I'm not sure how to accomplish that, so any suggestions or hints would be really helpful!
Thanks in advance,
Dennis
MCP, MCSD
|
|
|
|
|
Can't you just make it ShellExecute it's own exe (passing down any command line options if appropriate) and then quit the original?
--
Help me! I'm turning into a grapefruit!
|
|
|
|
|
Strangely enough, it works!
I just didn't think of that option because I am limiting my application to one instance only in InitInstance and I thought that the thread wouldn't be destroyed as fast as it does and it would block the launch of a new one. But it doesn't. Thanks.
MCP, MCSD
|
|
|
|
|
Hmm, in that case it's worth testing rigourously (especially on slower machines) as it may end up failing some of the time.
Another solution would just to be to run a secondary application (or batch file) that's job is to just pause until the main app is quit, and then relaunch it
--
Help me! I'm turning into a grapefruit!
|
|
|
|
|
Hello,
Please help to understand the ways of the Rich Edit OLE...
I'm able to insert and item into my Rich Edit Control (I'm using a dialog-based app) by creatig IRichEditOle and the rest and then using ->InsertItem()... (its from MSDN)
Now, it does seem to insert it (by looking at the rtf string before saving), but after I actually save, the file size gets bigger and bigger, but I don't see anything I've inserted (instead there's just a single space for each item I've inserted).
My guess is that objects do get saved, but I just don't know how to read them back and the Rich Edit Control (v2) doesn't do that automatically. I've tried using GetObjectCount() and then GetObject(), but the first function returns a 0.
Can anyone direct me to any samples or articles please?
Thank you in advance,
Dennis
MCP, MCSD
|
|
|
|
|
Hi
I have to get know whether some process is running. I want to identify the process by the name which is shown in Task Manager. The problem is I don't know how to find out whether the process is running using the name from Task Manager. Thanks for any hints.
Mariusz Popiolek
|
|
|
|
|
Search MSDN for Q175030. You'll find code there for this.
lazy isn't my middle name.. its my first.. people just keep calling me Mel cause that's what they put on my drivers license. - Mel Feik
|
|
|
|
|
A bit complicated but should work, thanks!
Mariusz Popiolek
|
|
|
|
|
I read a CP post a long time ago about a neat little trick in VS.NET. You could make it autogenerate GUIDs everytime you started to type "uuid(" and the like.
Please help me remember!
--
standing so tall, the ground behind
no trespassers, on every floor
a garden swing, and another door
she makes it clear, that everything is hers
A place of abode, not far from here, Ms. Van de Veer
|
|
|
|
|
It must be inside an attribute declaration, like this: [uuid(" and VS.NET will fill it for you
lazy isn't my middle name.. its my first.. people just keep calling me Mel cause that's what they put on my drivers license. - Mel Feik
|
|
|
|
|
Argh. Why did they not put this feature in IDL-files?
I think I'll do some VB.NET-scripting within the near future!
--
standing so tall, the ground behind
no trespassers, on every floor
a garden swing, and another door
she makes it clear, that everything is hers
A place of abode, not far from here, Ms. Van de Veer
|
|
|
|