|
Handle : Handle to an object. It may point to any object. For example a Handle to a window.
PVOID is nothing but a void*. "P" means a pointer.
DWORD is 32 bit unsigned integer.
EliottA wrote: Also, a general question, why use pointers (*) if you can use Addresses (&) to reference objects?
The general answer is , if you can use & do not use *. Moreoever you can send * as *&.
He never answers anyone who replies to him. I've taken to calling him a retard, which is not fair to retards everywhere.-Christian Graus
|
|
|
|
|
You need to buy the complete reference book.
Something like the 'The Waite Group's' Turbo C++ Bible, or
something more up-to-date.
Utilising DWORD (for example) is a complex issue reserved for
programmers with some experience.
To find out what it is used for and how it is used you might
involve yourself with the complex issue of 'sound' and search
the internet for applicable code in this area.
I think this is why nobody had yet replied.
|
|
|
|
|
EliottA wrote: What exactly are the following datatypes
1. Handle
2. PVOID
3. DWORD
See here.
EliottA wrote: Also, a general question, why use pointers (*) if you can use Addresses (&) to reference objects?
See here.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
|
My app allows users to start a 'helper' applet that runs independently. I am using a mutex to limit this applet to a single instance. I use the mutex both to prevent starting the second instance from my app (by CreateProcess or ShellExecute)AND to have any second instance started outside my (by clicking icons, etc) to self-terminate.
How can I have them switch to the current instance of the applet? That is, if they select to run the applet from my app I don't want to ignore it or display a message that an instance is running. I want to make that instance be get focus and be the top most application.
Thanks,
-G
modified on Wednesday, March 4, 2009 1:39 PM
|
|
|
|
|
Is there some reason you bolded your entire post? I'm so distracted by it I can't even read the post.
|
|
|
|
|
Exactly. That's really harmful to the eyes.
He never answers anyone who replies to him. I've taken to calling him a retard, which is not fair to retards everywhere.-Christian Graus
|
|
|
|
|
Not intentionally.
That is how the post came up when I started it. I thought the preview just came that way. Reviewing it, I see that there as indeed a bold tag around it all, which I have since removed (I hope)
Sorry.
-G
|
|
|
|
|
negativeG wrote: I want to make that instance be get focus and be the top most application.
SetWindowPos()[^]
|
|
|
|
|
Sure, but how do I find the hWnd for the Applet (it is a dialog based) from my App?
There is some recourse if I start the Applet from my App using CreateProcess, but if it is run from the command line, my app has no knowledge of it.
-G
|
|
|
|
|
negativeG wrote: Sure, but how do I find the hWnd for the Applet (it is a dialog based) from my App?
Ah, a new question. Sorry I mistook you for someone that had a clue about what they were doing.
Good luck.
|
|
|
|
|
negativeG wrote: I want to make that instance be get focus and be the top most application.
See the InitInstance() method in this example.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Thanks!
I had to massage it a little since I have a Dialog based app, but it is working great now!
-G
|
|
|
|
|
|
If you're using Visual Studio 2003 or later, it might be easier to use CImage[^], as that has built-in 'save as jpeg' functionality?
alexhalt wrote: But at this line
(void)jpeg_write_scanlines( &cinfo,
jsmpArray,
cinfo.image_height );
I've got the following error
Improper call to jpeg library in state 100
Looking at the code for libjpeg, 100 is the 'initialisation' state. This error would be raised by jpeg_write_scanlines if you hadn't called jpeg_start_compress.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Stuart Dootson wrote: If you're using Visual Studio 2003 or later, it might be easier to use CImage[^], as that has built-in 'save as jpeg' functionality?
I use C, not C++.
Stuart Dootson wrote:
Looking at the code for libjpeg, 100 is the 'initialisation' state. This error would be raised by jpeg_write_scanlines if you hadn't called jpeg_start_compress.
Thanks! Now I get a better error
bRet = OpenClipboard( hwndWindow );
uFormat = CountClipboardFormats();
hClipboardData = GetClipboardData( CF_BITMAP );
hDib = DDBToDIB( ( HBITMAP )hClipboardData, BI_RGB, NULL );
lpbi = ( LPBITMAPINFOHEADER )hDib;
{
struct jpeg_compress_struct cinfo;
struct jpeg_error_mgr jerr;
FILE * outfile;
char filename[] = "out.jpg";
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_compress(&cinfo);
if ((outfile = fopen(filename, "wb")) == NULL) {
fprintf(stderr, "can't open %s\n", filename);
exit(1);
}
jpeg_stdio_dest(&cinfo, outfile);
cinfo.image_width = lpbi->biWidth;
cinfo.image_height = lpbi->biHeight;
cinfo.input_components = 3;
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
{
JSAMPARRAY jsmpArray;
jsmpArray = (*cinfo.mem->alloc_sarray)
((j_common_ptr) &cinfo,
JPOOL_IMAGE,
cinfo.image_width * cinfo.input_components,
cinfo.image_height);
DibToSamps( hDib, cinfo.image_width * cinfo.input_components, cinfo, jsmpArray );
jpeg_start_compress(&cinfo,TRUE);
(void)jpeg_write_scanlines( &cinfo,
jsmpArray,
cinfo.image_height );
Where DibToSamps() function is like here http://www.codeguru.com/cpp/g-m/bitmap/otherformats/print.php/c1731[^]
and DDBToDIB is like follows
HANDLE DDBToDIB( HBITMAP bitmap, DWORD dwCompression, HPALETTE pPal )
{
BITMAP bm;
BITMAPINFOHEADER bi;
LPBITMAPINFOHEADER lpbi;
DWORD dwLen;
HANDLE hDIB;
HANDLE handle;
HDC hDC;
HPALETTE hPal;
int nColors = 0;
BOOL bGotBits;
if( dwCompression == BI_BITFIELDS )
return NULL;
hPal = (HPALETTE) pPal;
if (hPal==NULL)
hPal = (HPALETTE) GetStockObject(DEFAULT_PALETTE);
GetObject(bitmap,sizeof(bm),(LPSTR)&bm);
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = bm.bmWidth;
bi.biHeight = bm.bmHeight;
bi.biPlanes = 1;
bi.biBitCount = bm.bmPlanes * bm.bmBitsPixel;
bi.biCompression = dwCompression;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;
nColors = (1 << bi.biBitCount);
if( nColors > 256 )
nColors = 0;
dwLen = bi.biSize + nColors * sizeof(RGBQUAD);
hDC = GetDC(NULL);
hPal = SelectPalette(hDC,hPal,FALSE);
RealizePalette(hDC);
hDIB = GlobalAlloc(GMEM_FIXED,dwLen);
if (!hDIB)
{
SelectPalette(hDC,hPal,FALSE);
ReleaseDC(NULL,hDC);
return NULL;
}
lpbi = (LPBITMAPINFOHEADER)hDIB;
*lpbi = bi;
GetDIBits(hDC, (HBITMAP)bitmap, 0L, (DWORD)bi.biHeight,
(LPBYTE)NULL, (LPBITMAPINFO)lpbi, (DWORD)DIB_RGB_COLORS);
bi = *lpbi;
if (bi.biSizeImage == 0)
{
bi.biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) / 8)
* bi.biHeight;
if (dwCompression != BI_RGB)
bi.biSizeImage = (bi.biSizeImage * 3) / 2;
}
dwLen += bi.biSizeImage;
if (handle = GlobalReAlloc(hDIB, dwLen, GMEM_MOVEABLE))
{
hDIB = handle;
}
else
{
GlobalFree(hDIB);
SelectPalette(hDC,hPal,FALSE);
ReleaseDC(NULL,hDC);
return NULL;
}
lpbi = (LPBITMAPINFOHEADER)hDIB;
bGotBits = GetDIBits( hDC, bitmap,
0L,
(DWORD)bi.biHeight,
(LPBYTE)lpbi
+ (bi.biSize + nColors * sizeof(RGBQUAD)),
(LPBITMAPINFO)lpbi,
(DWORD)DIB_RGB_COLORS);
if( !bGotBits )
{
GlobalFree(hDIB);
SelectPalette(hDC,hPal,FALSE);
ReleaseDC(NULL,hDC);
return NULL;
}
SelectPalette(hDC,hPal,FALSE);
ReleaseDC(NULL,hDC);
return hDIB;
}
At the bottom line of the code :
(void)jpeg_write_scanlines( &cinfo,
jsmpArray,
cinfo.image_height );
appears some ACCESS VIOLATION at address 0x10.
In the code I followed the manual, which says
Allocate and initialize a JPEG compression object
Specify the destination for the compressed data (eg, a file)
Set parameters for compression, including image size & colorspace
jpeg_start_compress(...);
while (scan lines remain to be written)
jpeg_write_scanlines(...);
But obviously it looks like I haven't preallocated something.
Please advise
|
|
|
|
|
All I can suggest is that you build libjpeg for debug (i.e. include debug information), link your application to the debug library and step through jpeg_write_scanlines and find which line causes the access violation. You can then look at the variables associated with that line and see which pointer looks suspicious (NULL, probably!).
The other thing to try would be to verify that jsmpArray has been allocated correctly and that DibToSamps has completed successfully.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hello,
I would appreciate it if you help me in making a code for the UDP Ping by using C or C++.
|
|
|
|
|
ping doesn't use UDP - it's at the IP level (strictly, it uses ICMP), which is lower (closer to hardware) than UDP. See this[^] for full (very full) details.
[edit]Ah - I see what a UDP ping is - it's an effort to ping when ICMP is blocked. Look for "nmap source code" to find source for an application that will do a UDP ping. I'll give no more details than that because I'm not sure that UDP ping isn't evil.[/edit]
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
modified on Wednesday, March 4, 2009 12:28 PM
|
|
|
|
|
|
FISH786 wrote: fopen_s
That's Microsoft's 'safe' version of fopen. The C standard (and any self-respecting Unix resource) will still tell you to use fopen. It's up to you.
FISH786 wrote: My question is short of going through the headear files, can someone recommend a good book or has a good documentation or a link that he/she is willing to share for the different functions.
How about the MSDN page listing all the C runtime's functions[^]?
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
I guess, I could supress some of the warning in my header file. On the other hand that might be a bad idea too.
I am sorry but I will be dumb and ask this short of but might be worth the effort in trying to get familliar with Visual Studio options. Is there a way I could have supressed that from the IDE environment setting?
Any sugetions? ..thanks a million for the link though.
|
|
|
|
|
FISH786 wrote: Is there a way I could have supressed that from the IDE environment setting?
Not quite - you need to put stuff in your source files - see this page[^] for details.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
thank you that was great.
|
|
|
|
|
I'm trying to insert headers to a CListCtrl.
m_cList.InsertColumn(0, "Heading 1",LVCFMT_LEFT, 100);
m_cList.InsertColumn(1, "Heading 2",LVCFMT_LEFT, 120);
Doesn't work. What do I miss here?
|
|
|
|
|