Load Bitmap from file to doc
-
HBITMAP hBitmap = 0;
hBitmap = (HBITMAP)LoadImage( NULL,
pDoc->cInfo.strContractBrand, //file location
IMAGE_BITMAP,
0,
0,
LR_LOADFROMFILE | LR_DEFAULTSIZE);
CBitmap Bitmap;
Bitmap.Attach( hBitmap );BITMAP BitmapInfo = { 0 }; Bitmap.GetBitmap( &BitmapInfo ); DWORD BitmapImageSize = BitmapInfo.bmHeight \* BitmapInfo.bmWidth \* ( BitmapInfo.bmBitsPixel / 8 ); BYTE\* pBitmapData = new BYTE\[ BitmapImageSize \]; ZeroMemory( pBitmapData, BitmapImageSize ); Bitmap.SetBitmapBits(BitmapImageSize, pBitmapData); Bitmap.SetBitmapBits( BitmapImageSize, pBitmapData ); pDC->SelectObject(&Bitmap); pDC->BitBlt(1280, -1765, 390, -230, pDC, // pDC : a CDC pointer to document (SDI Program) 0, 0, SRCCOPY); delete pBitmapData; pBitmapData = 0;
purpose: i want to load a bitmap from file and insert in document. the file location is in C..Doc and PDoc is pointer to its document. MapMode is MM_LOMETRIC. problem: it dosen't show anything.:mad::confused: i don't see anything in desired coordinate and print blank page. notice: i find these codes in web and didn't work with CBitmap class. even didn't use bitmap in my programs.
Amin.Abdi wrote:
pDC->BitBlt(1280, -1765, 390, -230, pDC, // pDC : a CDC pointer to document (SDI Program) 0, 0, SRCCOPY);
What is the purpose of bit-blitting from
pDC
topDC
itself?If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
Your question is very unclear. What is this document you are talking about ? The document class from an SDI app ? If yes, a document class is not something visible, it is supposed to be data only. Are you talking about the view ? Furthermore, what is this pDC you are using in your code snippet ? Where did you put this code ?
Cédric Moonen Software developer
Charting control [v2.0] OpenGL game tutorial in C++ -
Amin.Abdi wrote:
pDC->BitBlt(1280, -1765, 390, -230, pDC, // pDC : a CDC pointer to document (SDI Program) 0, 0, SRCCOPY);
What is the purpose of bit-blitting from
pDC
topDC
itself?If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
dcMem.SelectObject(&Bitmap);
pDC->BitBlt(1280, nYposChange-1765, 390, -230, &dcMem, 0, 0, SRCCOPY);fixed but still nothing :(
What's the purtpose of a negative height? :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
What's the purtpose of a negative height? :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
And why do you need the following statements?
Amin.Abdi wrote:
BYTE* pBitmapData = new BYTE[ BitmapImageSize ]; ZeroMemory( pBitmapData, BitmapImageSize ); Bitmap.SetBitmapBits(BitmapImageSize, pBitmapData); Bitmap.SetBitmapBits( BitmapImageSize, pBitmapData );
:) The last line is because you don't trust
MFC
? :rolleyes:If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
And why do you need the following statements?
Amin.Abdi wrote:
BYTE* pBitmapData = new BYTE[ BitmapImageSize ]; ZeroMemory( pBitmapData, BitmapImageSize ); Bitmap.SetBitmapBits(BitmapImageSize, pBitmapData); Bitmap.SetBitmapBits( BitmapImageSize, pBitmapData );
:) The last line is because you don't trust
MFC
? :rolleyes:If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]I change my codes : remove that statement and add these:
CClientDC dcMem; dcMem.SelectObject(&Bitmap); pDC->BitBlt(1280, nYposChange-1995, 390, 230, &dcMem, 0, 0, SRCCOPY);
but it show a print screen of window and print nothing. WHY and how can i fix it?
-
I change my codes : remove that statement and add these:
CClientDC dcMem; dcMem.SelectObject(&Bitmap); pDC->BitBlt(1280, nYposChange-1995, 390, 230, &dcMem, 0, 0, SRCCOPY);
but it show a print screen of window and print nothing. WHY and how can i fix it?
You should put your drawing code inside the
CView::OnDraw
method. :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
You should put your drawing code inside the
CView::OnDraw
method. :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
I would do this test:
CDC memDC;
memDC.CreateCompatibleDC(pDC);
dcMem.SelectObject(&Bitmap);
pDC->BitBlt(0, 0, 390, 230, &dcMem, 0, 0, SRCCOPY);:)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
I would do this test:
CDC memDC;
memDC.CreateCompatibleDC(pDC);
dcMem.SelectObject(&Bitmap);
pDC->BitBlt(0, 0, 390, 230, &dcMem, 0, 0, SRCCOPY);:)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
You are welcome. As about negative height, when you should make something work, I suggest the 'stay simple' principle: start trying with 'fail-proof' parameters and then, when it works a bit, began to change.. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]