Displays the image in Picture Control.
-
The first reads an existing file; the second creates an "empty" file and expects magic.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it. ― Confucian Analects: Rules of Confucius about his food
Gerry Schmitz wrote:
an "empty" file
If you not it is difficult explain please my mistake. I'm not creating a file I'm reading it to the buffer. The data from the buffer in order.
-
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.