|
You need to increase non client area size for this purpose handle WM_NCCALCSIZE, add a message map entry for ON_WM_NCCALCSIZE()...
A sample implementation looks likewise...
void CDialogTestDlg::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
{
UNREFERENCED_PARAMETER( bCalcValidRects );
lpncsp->rgrc->top += 4;
lpncsp->rgrc->left += 4;
lpncsp->rgrc->bottom -= 4;
lpncsp->rgrc->right -= 4;
CWnd::OnNcCalcSize( bCalcValidRects, lpncsp );
}
Also note that you may need to handle WM_NCPAINT to fill out increased region.
Nibu babu thomas
Microsoft MVP for VC++
Code must be written to be read, not by the compiler, but by another human being.
Programming Blog: http://nibuthomas.wordpress.com
|
|
|
|
|
Hai !
GoodMorning !
I am able to read the contents of a whole xyz.txt file into an character array, using
CFile cfile_object;
cfile_object.Open( strFilePath, CFile::modeRead);
// strFilePath contains the path of the required file
int len = cfile_object.GetLength();
char chFile[len];
UINT lBytesRead = cfile_object.Read (chFile, len);
chFile contains whole content of xyz.txt file, but i want each line of xyz.txt file to be stored in a separate string?
if possible plz supply some sample/reference code.
thanks!
|
|
|
|
|
|
CStdioFile::ReadString - Reads a single line of text.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
|
Hai...
I need to display a color text on GroupBox Caption and change a default border to colorful border. Thanks for help.
Regards,
Selvan.S.
|
|
|
|
|
hi selvan
you already ask this question .......
|
|
|
|
|
|
Did you see WM_CTLCOLOR it shows you perfect answer.
|
|
|
|
|
WM_CTLCOLOR(its second time that you asked this question ).
|
|
|
|
|
Did you go through the specified link? It the same question asked before and the replies describes about how to change caption color and border color with code snippet.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Hi,
I have a function which is accepting two parameters LPARAM and WPARAM. The value being passed to this function by the URL is very big which cannot be stored in LAPARAM. Which data other than LPARAM should i take so that there is no loss of information.
Thanks.
Dhiraj Kumar Saini
|
|
|
|
|
One option is to allocate a block of memory and have the receiving function delete. I've also used a common circular buffer.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
Hi,
It not only recieves the data but also has other functions. Is there sny other way. Please tell me how you have used circular buffer.
Thanks
Dhiraj Kumar Saini
|
|
|
|
|
Dhiraj kumar Saini wrote: Please tell me how you have used circular buffer.
Rather than do that, try the simplest way first. The sending function allocated memory with new , the receiving function deallocates it with delete .
The other methods are a bit too verbose to explain here. Choosing which one will depend on how the message is sent, synchronously, asynchronously, from one source, from multiple sources and so on.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
I want to call OnCancel of Dialog from a thread in the dialog
How can I do that, pls adv
|
|
|
|
|
Send WM_COMMAND to dialog with WPARAM as IDCANCEL .
::SendMessage( hWnd, WM_COMMAND, IDCANCEL, 0 );
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
I've a dropdown combo box in a dialog.
I want to right-click on a combox box's list box item and have
the cursor placed at the start of the clicked item string for editing.
How can I achieve this ?
Any samples or relevant links would be appreciated.
Thanks in advance.
|
|
|
|
|
|
Please run the code below.
int main(int argc, char* argv[])
{
int ii = 20;
char tmp[32] = "loveing";
printf("[%d]hello[%s]\n", tmp);
char szData[52] = {0};
sprintf(szData, "[%d]saying [%s]\n",ii);
printf("%s", szData);
return 0;
}
The compiler don't complain in the compile phase, but when you press F5 to debug, 'unhandle exception' prompt. while not debug, run it at once, you just get wield strings or output.
We all use some sort of printf or CString::Format in the code, we are not careful sometimes. So how to handle this problem or check out the bugs in the exist project?
|
|
|
|
|
Try to this
int ii = 20;
char tmp[32] = "loveing";
printf("[%d]hello[%s]\n",ii, tmp);
//no integer fill the %d format
char szData[52] = {0};
//sprintf( buffer, "\tString: %s\n", s );
sprintf(szData,"[%d]saying \n",ii);
//no string fill the %s format
printf("%s", szData);
|
|
|
|
|
Sorry for the long post, but here's my solution (there is a companion wide string set of functions as well.) The DT... is my library prefix.
There are similar looking functions in Microsoft safe string library, but I was able to cause every one of them to throw exceptions in common scenarios. This set of code had to run in a DLL which logged errors so it simple couldn't throw exceptions (though I suppose it could in very fringe cases.)
#include <stdarg.h>
inline
char* DTSafeStrCopyLen(LPSTR pDst, LPCSTR pSrc, int len)
{
if (pDst)
{
if (pSrc && len > 0)
{
while (len && *pSrc)
{
*pDst++ = *pSrc++;
len--;
}
}
*pDst = 0;
}
return pDst;
}
inline
int DTSafeStrCopyLen2(LPSTR pDst, LPCSTR pSrc, int len)
{
return DTSafeStrCopyLen(pDst, pSrc, len) - pDst;
}
#pragma warning(disable:4702) // unreachable code
int DTSafeFormatStringV(LPSTR pBuffer, int bufferLen, LPCSTR pFormat, va_list args)
{
if (!pBuffer || bufferLen <= 0)
return -1;
int returnLen = 0;
if (pFormat && *pFormat)
{
#if _MSC_VER >= 8
__try
#else
try
#endif
{
returnLen = _vsnprintf(pBuffer, bufferLen, pFormat, args);
if (returnLen < 0)
{
pBuffer[bufferLen - 1] = 0;
returnLen = bufferLen - 1;
}
}
#if _MSC_VER >= 8
__except (EXCEPTION_EXECUTE_HANDLER)
#else
catch (...)
#endif
{
returnLen = DTSafeStrCopyLen2(pBuffer, "!exception thrown during formatting: \"", bufferLen);
returnLen += DTSafeStrCopyLen2(&pBuffer[returnLen], pFormat, bufferLen - returnLen);
if (returnLen < bufferLen - 1)
{
pBuffer[returnLen++] = '"';
pBuffer[returnLen] = 0;
}
}
}
else
{
pBuffer[0] = 0;
}
return returnLen;
}
int DTSafeFormatString(LPSTR pBuffer, int bufferLen, LPCSTR pFormat, ...)
{
if (!pBuffer || bufferLen <= 0)
return -1;
int returnLen = 0;
if (pFormat && *pFormat)
{
va_list args;
va_start (args, pFormat);
returnLen = DTSafeFormatStringV(pBuffer, bufferLen, pFormat, args);
va_end (args);
}
else
{
pBuffer[0] = 0;
}
return returnLen;
}
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
modified on Friday, August 22, 2008 1:47 AM
|
|
|
|
|
I really wanna say what a kind person you are!
|
|
|
|
|
fantasy1215 wrote: The compiler don't complain in the compile phase, but when you press F5 to debug, 'unhandle exception' prompt. while not debug, run it at once, you just get wield strings or output.
We all use some sort of printf or CString::Format in the code, we are not careful sometimes. So how to handle this problem or check out the bugs in the exist project?
I've had some bugs due to wrong usage of sscanf and fscanf . VC6 didn't report stack corruption errors but VC8 does! Here is a blog post on these bugs, hope this helps!
http://nibuthomas.wordpress.com/2008/08/01/careful-with-sscanf-and-fscanf/[^]
I like printf , sprintf and other functions but at we times use these in a wrong way resulting in bugs. Reading the docs carefully, again carefully, "on the format specifiers to be used for different types" will help a lot in solving and finding these bugs!
Just now found one bug with the usage of the TRACE macro. One of the trace messages contained a '%' sign resulting in application disappearance. AtlTrace treats the first argument given as a format specifier IMO hence the bug. Replaced TRACE with TRACE0 macro and now it's fine.
Nibu babu thomas
Microsoft MVP for VC++
Code must be written to be read, not by the compiler, but by another human being.
Programming Blog: http://nibuthomas.wordpress.com
|
|
|
|
|
fantasy1215 wrote: We all use some sort of printf or CString::Format in the code, we are not careful sometimes. So how to handle this problem
Being careful.
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
[My articles]
|
|
|
|