|
I need to insert text to Listbox with tab
Exemple
Text1 "TAB" Text2 "TAB" Text3
How can I do that?
|
|
|
|
|
Check the 'Use Tabstops' checkbox in the style tab of the list box properties.
Then give the text as "Text1\tText2\Text3"
« Superman »
|
|
|
|
|
No I have try that and it dont work.
|
|
|
|
|
What results are you getting?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
I use ATL Com AppWizard(in embedded Visual C++) to create a signature capturing DLL, i successfully let user to sign on a given rectangle square box.
However,
i have a big problem when coming to capture the signature inside the rectangle and save it to bmp (or jpg) file. i get the following attached code and trying to compile it inside embedded Visual C++ 4.0, and it comes out this error:
"GetDIBits: undeclared identifier" ...
it seems like eVC++(or Pocket PC 2003 SDK) doesn't have this library or doesn't support this function...
is there anyway i can do it ? this problem has been struggling me for few days ...
thanks
int WindowToBmpFile(LPCTSTR szFName, HWND hWnd)
{
HDC hDC, hMemDC;
HANDLE hBits, hFile;
HBITMAP hBitmap, hTmpBmp;
RGBQUAD RGBQuad;
DWORD ImgSize, plSize, dwWritten;
int i, CRes, Height, Width;
BITMAPFILEHEADER bmFH = {0x4d42, 0, 0,0};
LPBITMAPINFO pBmInfo, pBmInfoMem;
if((hFile = CreateFile(szFName, GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL)) == NULL) return 1;
SetCursor(LoadCursor(NULL, IDC_WAIT));
if(hWnd==HWND_DESKTOP)
{
Width = GetSystemMetrics(SM_CXSCREEN);
Height = GetSystemMetrics(SM_CYSCREEN);
}
else
{
RECT rc;
::GetClientRect(hWnd,&rc);
Width = rc.right-rc.left;
Height = rc.bottom-rc.top;
}
hDC = ::GetDC(hWnd);
hMemDC = CreateCompatibleDC(hDC);
hBitmap= CreateCompatibleBitmap(hDC, Width, Height);
pBmInfoMem = (LPBITMAPINFO)GlobalAlloc(GHND, sizeof(BITMAPINFO)+256*sizeof(RGBQUAD));
pBmInfo = (LPBITMAPINFO)GlobalLock(pBmInfoMem);
ZeroMemory(pBmInfo, sizeof(BITMAPINFO)+256*sizeof(RGBQUAD));
SelectObject(hMemDC, hBitmap);
BitBlt(hMemDC,0,0,Width,Height,hDC,0,0,SRCCOPY);
pBmInfo->bmiHeader.biSize = (DWORD)sizeof(BITMAPINFOHEADER);
pBmInfo->bmiHeader.biWidth = Width;
pBmInfo->bmiHeader.biHeight = Height;
pBmInfo->bmiHeader.biPlanes = 1;
pBmInfo->bmiHeader.biBitCount = (WORD)GetDeviceCaps(hDC, BITSPIXEL);
pBmInfo->bmiHeader.biCompression = BI_RGB;
pBmInfo->bmiHeader.biClrUsed = 256;
GetDIBits(hDC, hBitmap, 0,Height, NULL, pBmInfo, DIB_RGB_COLORS);
if(!pBmInfo->bmiHeader.biSizeImage)
pBmInfo->bmiHeader.biSizeImage = ((((pBmInfo->bmiHeader.biWidth * pBmInfo->bmiHeader.biBitCount) + 31) & ~31) /
* pBmInfo->bmiHeader.biHeight;
CRes = GetDeviceCaps(hDC, SIZEPALETTE);
plSize = CRes*sizeof(RGBQUAD);
ImgSize= pBmInfo->bmiHeader.biSizeImage;
bmFH.bfOffBits = plSize + sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER);
bmFH.bfSize = ImgSize + bmFH.bfOffBits;
WriteFile(hFile, &bmFH, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);
WriteFile(hFile, &(pBmInfo->bmiHeader), sizeof(BITMAPINFOHEADER), &dwWritten, NULL);
hBits = GlobalAlloc(GHND, pBmInfo->bmiHeader.biSizeImage);
LPVOID lpBits = (LPVOID)GlobalLock(hBits);
ZeroMemory(lpBits, pBmInfo->bmiHeader.biSizeImage);
GetDIBits(hDC, hBitmap, 0,Height, lpBits, pBmInfo, DIB_RGB_COLORS);
WriteFile(hFile,lpBits,ImgSize,&dwWritten,NULL);
GlobalUnlock(lpBits);
GlobalUnlock(hBits);
GlobalFree(hBits);
GlobalUnlock(pBmInfo);
GlobalFree(pBmInfoMem);
DeleteObject(hBitmap);
DeleteDC(hMemDC);
::ReleaseDC(hWnd,hDC);
CloseHandle(hFile);
SetCursor(LoadCursor(NULL,IDC_ARROW));
return 0;
}
|
|
|
|
|
Hi,
I have to convert a string which is representating a hex number (e.g. "FE34") into a string which displays the decimal number ("65076"). Because the length of number may be upto 1000 (byte array) I cannot use a sscanf/sprintf methods.
Any ideas how I can solve the problem?
Best Regards
Heiko
|
|
|
|
|
char *s = "FE34", ch;
double dwNUM = 0;
while(*s != NULL)
{
ch = (char)*s;
dwNUM *= 16;
switch(ch) {
case '0':
dwNUM += 0;
break;
case '1':
dwNUM += 1;
break;
case '2':
dwNUM += 2;
break;
case '3':
dwNUM += 3;
break;
case '4':
dwNUM += 4;
break;
case '5':
dwNUM += 5;
break;
case '6':
dwNUM += 6;
break;
case '7':
dwNUM += 7;
break;
case '8':
dwNUM += 8;
break;
case '9':
dwNUM += 9;
break;
case 'A':
dwNUM += 10;
break;
case 'B':
dwNUM += 11;
break;
case 'C':
dwNUM += 12;
break;
case 'D':
dwNUM += 13;
break;
case 'E':
dwNUM += 14;
break;
case 'F':
dwNUM += 15;
break;
default:
break;
}
s++;
}
|
|
|
|
|
Don't forget to uppercase the string or check for lowercase 'a' to 'f'
"An education isn't how much you have committed to memory, or even how much you know. It's being able to differentiate between what you do know and what you don't." - Anatole France
|
|
|
|
|
|
You don't need the large switch statement.
char *s = "FE34", ch;
double dwNUM = 0;
while (*s != NULL) {
ch = (char) *s;
dwNUM *= 16;
if ((ch > '0') && (ch <= '9'))
dwNum += (ch - '0');
else {
ch = tolower (ch);
if ((ch > 'a') && (ch <= 'f'))
dwNum += (ch - 'a' + 10);
}
s++;
}
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
yes, you are right, but I just made a small demo to show how to do, what he wants. Like your demo, which says:
if ((ch > 'a') && (ch <= 'f'))
instead of
if ((ch ><code>=</code> 'a') && (ch <= 'f'))
;)
http://www.priyank.in/
|
|
|
|
|
|
Ravi Bhavnani wrote:
No. Why add zero?
Its not zero, its ten, please check again on inputs "AAA".
http://www.priyank.in/
|
|
|
|
|
No, you're wrong. See my code.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Ravi Bhavnani wrote:
No, you're wrong.
Have you tried with inputs "AAAA". What answer you get?
http://www.priyank.in/
|
|
|
|
|
Aaaaaaaaaaaaaaaargh! I need to go to sleep (and never wake up). Of course you're right.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Thanks for your suggestion. But for very long hex strings (e.g. "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") the floating point value is truncated. So if I want to switch vom DEC to HEX and vica versa I get other values. Am I right?
|
|
|
|
|
Didn't get you, floating point values get terminated? this will work on the string you are talking about:
Heiko Gschwind wrote:
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
and will get a decimal value of: 2.4942961277114075e+050.
I guess this should be right.
http://www.priyank.in/
|
|
|
|
|
Ok, we get value 2.4942961277114075e+050.
But have you tried to 'increment' the string
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
to
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB"?
I think you will get value 2.4942961277114075e+050 too. So I can't distinguish the two values.
|
|
|
|
|
|
It's very easy to convert the Decimal format to Hexadecimal and viceversa using very simple C Runtime Function like
_ttot (convert long to string) and _ttol (convert string to long)
Now let look at code :-
From HEX String to DEC String
TCHAR tcsDEC[20];
_itot(_ttol(_T("FE34")),tcsDEC,10);
From DEC String to HEX String
TCHAR tcsDEC[20];
_itot(_ttol(_T("65076")),tcsDEC,16);
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
|
|
|
|
|
TCHAR tcsDEC[20];
_itot(_ttol(_T("FE34")),tcsDEC,10);
_ttol (convert string to long) function only converts decimal number string to long. So, your solution will not work! (Case of converting hexadecimal string to decimal string for large arrays.)
http://www.priyank.in/
|
|
|
|
|
Priyank Bolia wrote:
Case of converting hexadecimal string to decimal string for large arrays.)
Yes, You are right Mr Priyank. Thanks for Correcting me.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
|
|
|
|
|
Are you saying that the length of the base-16 number can be up to 1000 characters? If so, that is something like 24000 in base-10. I'm not sure you're going to find a type that will hold such a large number.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Your are right. It will be hard to find such a number.
I thought there may be a possibility to convert the string on the fly without storing the whole number.
|
|
|
|
|