|
I just told you in my post that GetObject() gets bitmap size of 1x1 for PAINT DC.
|
|
|
|
|
includeh10 wrote: how to get original BITMAPINFO and ppBits of the HDC?
DC's do not have those things.
you need to allocate and fill-in the BITMAPINFO object yourself. and the ppvBits parameter is an output parameter, that receives a pointer to the start of a buffer. after you call CreateDIBSection, you copy your DIB's pixels into the buffer where that pointer points:
<br />
void *ppvBits = NULL;<br />
hbm = CreateDIBSection(hDC,(LPBITMAPINFO)lpbi, DIB_RGB_COLORS, &ppvBits, NULL, 0);<br />
<br />
if (ppvBits!=NULL)<br />
{<br />
memcpy((BYTE *)ppvBits, (BYTE *)lpDIBBits, numberOfPixelBytes);<br />
}<br />
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
lpbi is [in].
my question is not about bits, but about how to get
numberOfPixelBytes and colors etc.
GetDIBits() can not help because HBITMAP size of PAINT DC is 1x1 pixels.
|
|
|
|
|
|
mate,
do not type reply before thinking.
|
|
|
|
|
excuse me?
<br />
BITMAP bm;<br />
GetObject(hBmp, sizeof(BITMAP), &bm);<br />
<br />
<br />
int bmType;<br />
int bmWidth;<br />
int bmHeight;<br />
int bmWidthBytes;<br />
BYTE bmPlanes;<br />
BYTE bmBitsPixel;<br />
LPVOID bmBits;<br />
} BITMAP;<br />
*/<br />
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
I think any HBITMAP handle must contain color info and data bits, otherwise how can it be displayed?
my question is:
how to get color info and data bits for any HBITMAP - not limited to any condition, such as LR_CREATEDIBSECTION.
if can not get, why?
|
|
|
|
|
|
int GetDIBits(
HDC hdc, // handle to DC
HBITMAP hbmp, // handle to bitmap
UINT uStartScan, // first scan line to set
UINT cScanLines, // number of scan lines to copy
LPVOID lpvBits, // array for bitmap bits
LPBITMAPINFO lpbi, // bitmap data buffer
UINT uUsage // RGB or palette index
);
HBITMAP contains enough info, but the function requres HDC.
why it is HDC ralated?
if HDC is different, (Printer DC or Paint DC), does it retrieve different info?
-- modified at 14:46 Tuesday 6th June, 2006
|
|
|
|
|
just use HDC hDC = ::GetDC(NULL);
includeh10 wrote: if HDC is different, (Printer DC or Paint DC), does it retrieve different info?
not all DCs have the ability to do GetDIBits (see GetDeviceCaps). screen DCs generally do, but printer DCs sometimes can't handle all operations.
includeh10 wrote: HBITMAP contains enough info
but it needs to be formatted in a way that you can use . HBITMAPs are opaque objects - we don't know anything about what they look like on the other side of the HANDLE.
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
mate,
another question:
we have a printer, GetDeviceCaps(RASTERCAPS) shows it supports RC_BITBLT, but BitBlt() function does not work anyway.
may the printer tell wrong info or my code is not correct?
print-preview is OK, so I think my code has no problem.
|
|
|
|
|
includeh10 wrote: BitBlt() function does not work anyway
what happens ?
includeh10 wrote: may the printer tell wrong info or my code is not correct?
that depends on what you're trying to do. for example, printers often only support being on the receiving end of a BitBlt - you can't BitBlt from a printer DC to a different DC, but you can Blt to one. so, yes they support BitBlt, but only somewhat. and, some printers have limitations on how large they can print (see GetDeviceCaps DC_BITBLT64)
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
do not type reply if you don't know.
|
|
|
|
|
maybe you should go read up on general GDI techniques. when you've done that - when you understand how HBITMAPs, HDCs, GetDIBits, CreateDIBSection and the rest of GDI actually works - then you can come back here and tell me how much i don't know about it.
until then, good luck with the attitude.
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
I am sure it's something simple that I'm over looking. I created a Dialog Bar and added some controls to it. I also created a class derived from CDialogBar. When I create my dialog bar in the main frame all the controls are functional except the buttons. The code I have is this:
class CLineBar : public CDialogBar<br />
{<br />
DECLARE_DYNAMIC(CLineBar)<br />
<br />
public:<br />
CLineBar();<br />
virtual ~CLineBar();<br />
<br />
<br />
protected:<br />
DECLARE_MESSAGE_MAP()<br />
};<br />
<br />
......<br />
CLineBar m_LineBar;<br />
<br />
.......<br />
<br />
m_LineBar.Create(this, IDD_LINE_DLG, WS_CHILD|WS_VISIBLE|CBRS_LEFT,0);<br />
<br />
<br />
Any suggestions? Thanks.
|
|
|
|
|
Please add the ON_UPDATE_COMMAND_UI handler for the Button .
Regards,
FarPointer
Blog:http://farpointer.blogspot.com/
|
|
|
|
|
The controls are disabled because you don't have WM_COMMAND handlers for them yet. Either add handlers, or set the main frame's m_bAutoMenuEnable member to false .
--Mike--
Visual C++ MVP
LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
I have a VC++ 6 project with the following:
template <typename T> class tPointer {
public:
protected:
T *pPointer;
tUnsignedWord pCounter;
};
template <typename T> class tArray : public tPointer<T> {
public:
protected:
tUnsignedWord nSize;
};
But when I write:
int main( void )
{
tArray<int> p;
p.
return 0;
}
The problem is:
1) That list as the elements: nSize (fine with that) and pData (hã??)
2) tArray is not inheriting the routines from tPointer (i.e operator = ( tSomething ) )
Anybody knows why and how to solve this?
NOTE: I wrote a tArray class on a previous project that had a pData member.. Is it possible that VC++ keeps some sort of records and is now accessing them? Plus, those are the only files I have included in the project so far.
best regards [[]]
hint_54
|
|
|
|
|
HI,
I request you to kindly help me out as soon as possible.It is extremely urgent.
Please tell me how to "Add a FormView and creat a Tab Control on the form view in a Single Document(SDI) based VC++ program using MFC."
I dont want to make it a Formview based application since it would not support printing options.
Hence I would like to add form view to the SDI based application,and then add a tab control on the form view,making the form view the main window.Subsequently,the tab control should be linked via code so that each tab behaves as a child dialog box.May I request you to kindly provide a solution in detail.I would be extremely grateful.
Thank You very much.
|
|
|
|
|
Hi,I have a sdi multiview program,when i successful display
the second CListView.I found that the scroll bar was not work,I can handle OnInitialupdate() after listview create
,the Listview's column was displayed,but how can I handle
with the Listview's scroll bar.Anyone can help?thanks.
|
|
|
|
|
hi all,
i want to develop one application in VC++ - MFC which can read a selected PDF file and store that thing to database. before that i want to know , how can i read a pdf file in VC++ (i.e.,) either in binary or some other format.
send reply .,., it's urgent
Try again and again,
At last you will say
I don't know the meaning for impossible.,.
-- modified at 10:46 Tuesday 6th June, 2006
|
|
|
|
|
See here[^] if you find an article that may help you. THe pdf is proprietary format, so do not expect a description of the file format.
~RaGE();
|
|
|
|
|
maharaja pandian wrote: how can i read a pdf file...
Here is an older version of the format.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
im not sure but Here[^] maybe it is some helpful to you
whitesky
|
|
|
|
|
I want to display two buttons and a coustom control on my own custom control that used as a panel.(as i know,there is no panel control in vc 6.0)
But it cannot work.
I thought in Onpaint() i can send WM_ONPAINT message to every control on this panel, let them draw their own. But i failed...
what is the right method?
thank you for help.
kudoo
|
|
|
|