|
I am a beginner and I really don't have any idea about C++. I really in need of C code.
|
|
|
|
|
Hi all,
So, I have an MFC app to encode files in base64 to be sent through email. Here's the code I'm using now :
filename=filename.Right(filename.GetLength()-filename.ReverseFind('\\')-1);
inputfile.Read(filedata.GetBuffer(0),inputfile.GetLength());
filedata.SetAt(inputfile.GetLength(),'\0');
emailbody+="--0000000002230291k492__V\r\nContent-type: "+fileExt+"\r\n";
emailbody+="Content-Transfer-Encoding: base64\r\nContent-Disposition: attachment; ";
emailbody+="filename=\""+filename+"\"\r\n\r\n";
emailbody+=base64_encode(filedata.GetBuffer(0)).c_str();
emailbody+="\r\n\r\n";
inputfile.Close();
I've got no clue of why this code doesn't work properly. It works fine for .txt files and other files that only contain alphanumeric chars, ONLY WHEN the files are smaller than around 5kb. Other files do not work at all, regardless of the size.
here's the base64 encode function I'm using:
inline std::string base64_encode(const std::string &sString) {
static const std::string sBase64Table(
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
);
static const char cFillChar = '=';
std::string::size_type nLength = sString.length();
std::string sResult;
sResult.reserve(nLength * 8 / 6 + 1);
for(std::string::size_type nPos = 0; nPos < nLength; nPos++) {
char cCode;
cCode = (sString[nPos] >> 2) & 0x3f;
sResult.append(1, sBase64Table[cCode]);
cCode = (sString[nPos] << 4) & 0x3f;
if(++nPos < nLength)
cCode |= (sString[nPos] >> 4) & 0x0f;
sResult.append(1, sBase64Table[cCode]);
if(nPos < nLength) {
cCode = (sString[nPos] << 2) & 0x3f;
if(++nPos < nLength)
cCode |= (sString[nPos] >> 6) & 0x03;
sResult.append(1, sBase64Table[cCode]);
} else {
++nPos;
sResult.append(1, cFillChar);
}
if(nPos < nLength) {
cCode = sString[nPos] & 0x3f;
sResult.append(1, sBase64Table[cCode]);
} else {
sResult.append(1, cFillChar);
}
}
return sResult;
}
This function seems to be encoding correctly, while other ones I've found or created don't encode right.
Does anyone have any advice for me? I'm about to give up on this function.
|
|
|
|
|
If you can accept being limited to XP and later, use CryptBinaryToString() .
|
|
|
|
|
How do I change the shadow color in ShadowVolume(DirectX Sample Browser November 2007,July 2004)?
I want to change the color of shadow to be float4(0.7f,0.7f,0.7f,1.0f).
I mean the shadow color is not the g_vShadowColor for debug.
|
|
|
|
|
For example:
In CMyDocument:
std::vector<pair><float,float> m_vec;</pair>
CMyDocument::Serialize(CArchive &ar)
{
if (ar.IsStoring())
{
}
else
{
}
}
modified on Tuesday, June 17, 2008 11:40 AM
|
|
|
|
|
On storing : first store vector size and then each (scalar) element of the vector.
On reading: read the size of the vector, then its size elements.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
I tried following code but it working for Progess bar not for Static text.
GetDlgItem(IDC_PROGRESS1)->ShowWindow(SW_SHOW); // Working
GetDlgItem(IDC_STATIC)->ShowWindow(SW_SHOW); // Not working
Kindly provide me solution...
|
|
|
|
|
IDC_STATIC as is won't work. you have to chage it to another name, like IDC_STATIC1 ...
|
|
|
|
|
The IDC_STATIC is default resource id provided for controls which are usually not accessed and manipulated. For instance, static texts, GroupBox etc. If you check the value of IDC_STATIC , you can see its -1 .
So, if you want to manipulate that text control, as toxcct said, change the IDC_STATIC to some other name and access it. Or else GetDlgItem() will fail.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
can you tell me how to change the bback ground of label.
Please reply me.
Thanks
Ram
|
|
|
|
|
Are you referring to the background color?
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
ramnathrn wrote: can you tell me how to change the bback ground of label.
I guess you've asked "how to change the background color of label".
Well, override the CWnd::OnCtlColor() in your dialog class. This function will be called for getting the control color of each child control. See here for more detailed description and code sample - http://msdn.microsoft.com/en-us/library/0wwk06hc(VS.80).aspx[^]
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Hello,
I have application which makes a call to CreateFile and return handle FILE*, I can write to the file using this handle on XP, but on vista it does not work, it creates the file, but fprintf calls returns -1.
Is there any difference of C Run time library on XP and VISTA ?
Looking forward to hear from you soon.
Many Thanks.
Kamlesh Patel
|
|
|
|
|
krolta wrote: I have application which makes a call to CreateFile and return handle FILE*...
CreateFile() returns a HANDLE , not a FILE pointer.
krolta wrote: ...but fprintf calls returns -1.
Since you opened the file with CreateFile() , you should be using WriteFile() . Otherwise, you'll need to open the file with fopen() .
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Can you use of CFile class?
|
|
|
|
|
i get an error often while i run my project and error is in dlgdata.cpp and saying some-- ASSERT(FALSE);in line 42...what might be the reason for such errors???
Raja
|
|
|
|
|
What does your dialog's DoDataExchange() method look like?
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Did you use of debugger and breakpoints for see more info about error?
|
|
|
|
|
yes.the error occurs when the buttonclick does the domodal() function to show another dialog..there is nothing wrong in my coding..but doesn't know why it occurs!!
Raja
|
|
|
|
|
|
i have 7dialogs and i have inlinks between them,the problem occured when i tried to add coding to backtraverse between the dialogs and in the first dialog has only this code,
newdlg onclick;
onclick.Domodal
and the error is in dlgdata.cpp,here
HWND CDataExchange::PrepareCtrl(int nIDC)
{
ASSERT(nIDC != 0);
ASSERT(nIDC != -1);
HWND hWndCtrl;
COleControlSite* pSite = NULL;
m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);
if (hWndCtrl == NULL)
{
pSite = m_pDlgWnd->GetOleControlSite(nIDC);
if (pSite == NULL)
{
TRACE(traceAppMsg, 0, _T("Error: no data exchange control with ID 0x%04X.\n"), nIDC);
ASSERT(FALSE);------------------------------------------>ERROR
AfxThrowNotSupportedException();
}
}
m_idLastControl = nIDC;
m_bEditLastControl = FALSE;
return hWndCtrl;
}
Raja
|
|
|
|
|
I think you must change your code to this:
m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);
if (hWndCtrl != NULL)
and you must be check hWndCtrl before return hWndCtrl;
if (hWndCtrl )
return hWndCtrl;
else
return NULL;
|
|
|
|
|
where should i do this coding change,wil you please say me from where(websites) i should learn basics to create an application for MFC
Raja
|
|
|
|
|
You must be change this line if (hWndCtrl == NULL) to if (hWndCtrl != NULL) and instead return hWndCtrl; insert this code if (hWndCtrl) return hWndCtrl; else return NULL.
|
|
|
|
|
how to create handle controls??
Raja
|
|
|
|