Displays the image in Picture Control.
-
I just started to study this theme, so strongly do not swear. Tell me why this code works.
HBITMAP startBitmap = (HBITMAP)LoadImage(NULL, "D:\\159.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
m_PictureControl.SetBitmap(startBitmap);And this does not work.
HANDLE FileR = CreateFile("D:\\159.bmp", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD size_file = GetFileSize(FileR, 0);
HBITMAP startBitmap = (HBITMAP)malloc(size_file);
DWORD dwReadW;
ReadFile(FileR, startBitmap, size_file, &dwReadW, NULL);
m_PictureControl.SetBitmap(startBitmap);As I assume the buffer is necessary as it is to prepare before an image displayed on the screen. But unfortunately I do not understand how to do it.
Member 12661464 wrote:
And this does not work.
Which means what exactly? Have you stepped through the code to make sure that
CreateFile()
,GetFileSize()
,ReadFile()
, andSetBitmap()
all return "success" values?"One man's wage rise is another man's price increase." - Harold Wilson
"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
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
-
I just started to study this theme, so strongly do not swear. Tell me why this code works.
HBITMAP startBitmap = (HBITMAP)LoadImage(NULL, "D:\\159.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
m_PictureControl.SetBitmap(startBitmap);And this does not work.
HANDLE FileR = CreateFile("D:\\159.bmp", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD size_file = GetFileSize(FileR, 0);
HBITMAP startBitmap = (HBITMAP)malloc(size_file);
DWORD dwReadW;
ReadFile(FileR, startBitmap, size_file, &dwReadW, NULL);
m_PictureControl.SetBitmap(startBitmap);As I assume the buffer is necessary as it is to prepare before an image displayed on the screen. But unfortunately I do not understand how to do it.
The first reads file and "convert" the read data to be interpreted as a HBITMAP. The second just reads some binary data that cannot be interpreted as a HBITMAP.:suss:
-
The first reads file and "convert" the read data to be interpreted as a HBITMAP. The second just reads some binary data that cannot be interpreted as a HBITMAP.:suss:
Victor Nijegorodov wrote:
cannot be interpreted as a HBITMAP
I understand this, but I can't understand how do I convert this data to an image, how do I process the buffer?
-
Victor Nijegorodov wrote:
cannot be interpreted as a HBITMAP
I understand this, but I can't understand how do I convert this data to an image, how do I process the buffer?
Well, what is your goal? Are you trying to reinvent the wheel? Or what?:confused:
-
Well, what is your goal? Are you trying to reinvent the wheel? Or what?:confused:
I want to understand what the LoadImage function does with a file, cuts off the header ? How does it convert data? I find the image in the resources of the file, it does not lie in the open as a picture. I read in buffer specifically the place where image of the is.
-
I want to understand what the LoadImage function does with a file, cuts off the header ? How does it convert data? I find the image in the resources of the file, it does not lie in the open as a picture. I read in buffer specifically the place where image of the is.
Have a look at [Storing an Image - Windows applications | Microsoft Docs](https://docs.microsoft.com/en-us/windows/win32/gdi/storing-an-image) and other info [About Bitmaps - Windows applications | Microsoft Docs](https://docs.microsoft.com/en-us/windows/win32/gdi/about-bitmaps)
-
I just started to study this theme, so strongly do not swear. Tell me why this code works.
HBITMAP startBitmap = (HBITMAP)LoadImage(NULL, "D:\\159.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
m_PictureControl.SetBitmap(startBitmap);And this does not work.
HANDLE FileR = CreateFile("D:\\159.bmp", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD size_file = GetFileSize(FileR, 0);
HBITMAP startBitmap = (HBITMAP)malloc(size_file);
DWORD dwReadW;
ReadFile(FileR, startBitmap, size_file, &dwReadW, NULL);
m_PictureControl.SetBitmap(startBitmap);As I assume the buffer is necessary as it is to prepare before an image displayed on the screen. But unfortunately I do not understand how to do it.
-
The data you have read from the file is in raw format and needs to be converted to Bitmap format. Your code is missing the conversion part. See bitmap format - Google Search[^].
I would be very grateful for a hint which WinAPI functions convert data to Bitmap format.
-
I would be very grateful for a hint which WinAPI functions convert data to Bitmap format.
-
I just started to study this theme, so strongly do not swear. Tell me why this code works.
HBITMAP startBitmap = (HBITMAP)LoadImage(NULL, "D:\\159.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
m_PictureControl.SetBitmap(startBitmap);And this does not work.
HANDLE FileR = CreateFile("D:\\159.bmp", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD size_file = GetFileSize(FileR, 0);
HBITMAP startBitmap = (HBITMAP)malloc(size_file);
DWORD dwReadW;
ReadFile(FileR, startBitmap, size_file, &dwReadW, NULL);
m_PictureControl.SetBitmap(startBitmap);As I assume the buffer is necessary as it is to prepare before an image displayed on the screen. But unfortunately I do not understand how to do it.
Now that I have understood everything and got the right result, I read my question with a smile. Thank you very much to everyone who sent me in the right direction.