I am trying to copy to the clipboard a part of an image. I know all the pixels that should be copied and I can create a HRGN / CRgn object that represent the region that should be copied.
I know that I should use the SetClipboardData(UINT uFormat, HANDLE hMem).
I need help with which format and hMem should I use. How do I create the HANDLE that will represent only the region that I wish to copt and not the hole image?
An easy way is to create a new bitmap the size of the region rect.
Step through each source pixel in the region rect and use PtInRegion() to determine if it's in
the region. If it is, copy the pixel to the new bitmap. If not write a background-color pixel
to the new bitmap. Then place the bitmap on the clipboard.
Another way is create a new bitmap (DIB section) the size of the region rect.
Select it into a memory DC
Use StretchBlt() or whatever to draw the source region rect to the dc.
If the region is not rectangular go through the pixels using PtInRegion() like above to
remove the pixels outside the region.
Thanks for your help.
This is probabely a silly question, but placing a background-color will cause the image to be copied with a background in the specified color and not as cliped one, right?
Anyway this is what I did and I tried to set those pixels to be transparent but it didn't work for me for some reason (I set the rgbReserved member of RGBQUAD to 0 and also tried 255), I still get the color I have set as a bg. What should I do so that when I paste the image, the bg will be transparent?
Probably a stupid question, but I can't seem to get his to work. I have an array of 20 DWORD values, each DWORD represents a 20 pixel line in a bitmap. How can I convert this array into a bitmap handle (HBITMAP)?
I have tried calling CreateDIBSection() then copy the array data over to the retrieved void pointer, but I am unable to display the image. All I see is a black square which tells me the bitmap has not been created correctly.
As we know that in a windows application whenever a key is pressed, a message is sent to the active window. We are developing a DOS based application and want to detect whenever a key is pressed from keyboard. How can we do so?
We are writing a DOS based application in which we have to display the system date and time. Write down the code for doing so.
I need to catch every keyboard event before operation system ( windows xp ) does.
What i mean is in case user click on key 'enter' ( or every other key ) my application need to check if the key is 'X' key - and in any case this key event need to continue as key event to the operation system.
I'm sure there is some win32 API function to do it - but i don't remember it.
If you need a hammer get C and shut up. If you need a nail gun get C++ and shut up. If you don't need *those* things (and good design should tell you) then by all means get a factory, factory, factory.