|
Stirfie wrote:
if somebody does not have the .net environment, the apps will not work
The .net runtime is redistributable free of charge with your app. other main interest is that large part of .net is open standard and supported on other platforms also. And .net runtime will comes with the OS, now-a-days or in near future......I guess so.
http://www.priyank.in/
|
|
|
|
|
.NET will probably NEVER come with Windows 98...
|
|
|
|
|
Blake Miller wrote:
.NET will probably NEVER come with Windows 98...
Ya, I also think so, but the point is WIN98 is 7 years old OS, and technology changes every day. I am talking about future releases of MS OS.
http://www.priyank.in/
|
|
|
|
|
Stirfie wrote:
if I create an MFC app, will it run on a standard install of win 98,2000, xp.
My apps are tested on Windows NT 4.0 to Windows Server 2003, provided I distribute mfc*.dll and msvcrt.dll with the app, as Mr. David says. Or you link MFC as static library in the project options.
http://www.priyank.in/
|
|
|
|
|
Is intellisense helpful for u?
What's the good one you think?
|
|
|
|
|
|
I don't rely upon it, but it is very handy when it does work.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
I am a fan of Visual Assist. I have been using it for a couple years now and I can stand when I get on a computer without it.
|
|
|
|
|
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?
|
|
|
|