|
When creating an active document container application, is it possible to display an active document server's menu icons? The default MFC implementation does not do this, so I'm wondering if it would be possible to (re)implement some OLE interface to achieve this. Any hints would be greatly appreciated!
|
|
|
|
|
Hi
I'm creating a window in a specific position and need to write some text in that window area. I've used TextOut() for the same. Window is created, but the Text is not written over there.
Herez the code snippet I'm using.
/*hWnd1 = CreateWindowEx(WS_EX_TOOLWINDOW,"HelpClass",NULL,WS_POPUPWINDOW,466,140,320,94,hWnd,NULL,ghInst, NULL);
hDC=GetDC(hWnd1);
hFont = CreateFont(14,0,0,0,FW_BOLD,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,PROOF_QUALITY,DEFAULT_PITCH | FF_SWISS,"Century New");
hOldFont=SelectObject(hDC,hFont);
SetTextColor(hDC,BLACK);
TextOut(hDC,0,0,"Title",5);
DeleteObject(SelectObject(hDC,hOldFont));
ReleaseDC(hWnd1,hDC);
Any Help is appreciated.
TIA
Venky
|
|
|
|
|
|
Just a hunch, but you probably need to perform the Textout call in the window's WM_PAINT handler.
"There's a slew of slip 'twixt cup and lip"
|
|
|
|
|
Thanks a lot for the same
With Best Regards
Venky
|
|
|
|
|
How to get the left string of the caret in richeditview, if the caret is visible?
I'm amumu, and you?
|
|
|
|
|
I saw somebody said " draw a new line and delete the old one",
but how to "delete the old one"?
thanks a lot!
i ma realfly
|
|
|
|
|
realfly wrote:
draw a new line and delete the old one
I think he/she meant draw white(background color) on the old one.
Also for painting with GDI+ check this
Mazy
"So,so you think you can tell,
Heaven from Hell,
Blue skies from pain,...
How I wish,how I wish you were here." Wish You Were Here-Pink Floyd-1975
|
|
|
|
|
you are right!
may i am too accustomed to "AutoCAD"8)
at last, Thanks a lot!
i ma realfly
|
|
|
|
|
if the erase line is below another graphics, such operator may bring some unconformable result?
how i deal with it?
i ma realfly
|
|
|
|
|
The point is that you have to write codes that paint ALL of
your objects in OnPiant() .
I think you got your answer in Christian's reply,don't you?
Mazy
"So,so you think you can tell,
Heaven from Hell,
Blue skies from pain,...
How I wish,how I wish you were here." Wish You Were Here-Pink Floyd-1975
|
|
|
|
|
|
That 's what i done:
Bitmap *m_image; /*for draw line, which will combined with the back ground*/
LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if ( IsWindow() == false )
return 0;
PAINTSTRUCT ps;
// Start a paint session and create a graphics object.
BeginPaint(&ps);
Graphics *g1 = Graphics::FromImage(m_image);
g1->Clear(Color(Color::White));
Pen p(Color(255, 0, 0, 0), 5);
g1->DrawLine(&p, 0,0, LOWORD(lParam), HIWORD(lParam));
EndPaint(&ps);
//combine the line with the background
BeginPaint(&ps);
Graphics g2(GetDC());
ImageAttributes imageAttr;
Status stat = imageAttr.SetColorKey(Color::White,
Color::White,
ColorAdjustTypeDefault);
CRect rect;
GetWindowRect(&rect);
if ( !m_image )
m_image = new Bitmap(rect.Width(), rect.Height());
Rect rc;
RedrawWindow();
g2.DrawImage(m_image,
Rect(0, 0, m_image->GetWidth(),
m_image->GetHeight()),
0, 0, m_image->GetWidth(), m_image->GetHeight(),
UnitPixel, &imageAttr, NULL, NULL);
EndPaint(&ps);
return 0;
}
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
//here i draw a picture as the background
}
it seems that i must redraw all the window when the mouse moving, thus comes with the flicker. can it be avoided?
i ma realfly
|
|
|
|
|
realfly wrote:
it seems that i must redraw all the window when the mouse moving, thus comes with the flicker
One time I wanted do the same things and I couldn't get rid of that flikering.I didn't work enough on this subject to help you,I think it is better to ask Christian Graus about it.
realfly wrote:
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
//here i draw a picture as the background
}
If you want the picture as background of your window,paint it in OnEraseBkgnd() (WM_ERASEBKGND) ,that is better place for it.
Mazy
"So,so you think you can tell,
Heaven from Hell,
Blue skies from pain,...
How I wish,how I wish you were here." Wish You Were Here-Pink Floyd-1975
|
|
|
|
|
If you're talking about a selection box, I would draw it direct to the graphics object in the paint method, and therefore it is never a permanent part of the image, just drawn on top of it each time.
Of course, I'd double buffer it and draw it onto the buffer image, but you get the idea.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm thinking of getting married for companionship and so I have someone to cook and clean." - Martin Marvinski, 6/3/2002
|
|
|
|
|
|
That 's what i done:
Bitmap *m_image; /*for draw line, which will combined with the background*/
LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if ( IsWindow() == false )
return 0;
PAINTSTRUCT ps;
// Start a paint session and create a graphics object.
BeginPaint(&ps);
Graphics *g1 = Graphics::FromImage(m_image);
g1->Clear(Color(Color::White));
Pen p(Color(255, 0, 0, 0), 5);
g1->DrawLine(&p, 0,0, LOWORD(lParam), HIWORD(lParam));
EndPaint(&ps);
//combine the line with the background
BeginPaint(&ps);
Graphics g2(GetDC());
ImageAttributes imageAttr;
Status stat = imageAttr.SetColorKey(Color::White,
Color::White,
ColorAdjustTypeDefault);
CRect rect;
GetWindowRect(&rect);
if ( !m_image )
m_image = new Bitmap(rect.Width(), rect.Height());
Rect rc;
RedrawWindow(); //call OnPaint to draw the background
g2.DrawImage(m_image,
Rect(0, 0, m_image->GetWidth(),
m_image->GetHeight()),
0, 0, m_image->GetWidth(), m_image->GetHeight(),
UnitPixel, &imageAttr, NULL, NULL);
EndPaint(&ps);
return 0;
}
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
//here i draw a picture as the background
}
it seems that i must redraw all the window when the mouse moving, thus comes with the flicker. can it be avoided?
i ma realfly
|
|
|
|
|
// Start a paint session and create a graphics object.
BeginPaint(&ps);
Graphics *g1 = Graphics::FromImage(m_image);
g1->Clear(Color(Color::White));
Pen p(Color(255, 0, 0, 0), 5);
g1->DrawLine(&p, 0,0, LOWORD(lParam), HIWORD(lParam));
EndPaint(&ps);
Why are you starting a paint session here ? It's causing a WM_ERASEBKGND and you don't need it.
You should set up as much as possible before your BeginPaint, so all you do there is copy the preprepared bitmap into the window.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm thinking of getting married for companionship and so I have someone to cook and clean." - Martin Marvinski, 6/3/2002
|
|
|
|
|
You mean that I should copy the Background to a buffer image(1) when i begin draw a line. and then copy the (1) and a drawing line to another image(2),and then copy (2) to the screen?
But it also result redraw all the client when mouse moveing, then it will flicker. i make a test about this.
I load an image when application intialized, and draw it direct to the screen when mouse moveing, but it's also flicker.8(
Is there any mistake of me? Is I must use the SetROP2? but unfortunly is that it can't works with gdi+ in the same time.(is that right?) What should i do?
i ma realfly
|
|
|
|
|
You should draw your screen to an image, without starting a paint call. Then start a paint call and immediately copy that image onto the screen graphics object. The point of the double buffer is that everything is drawn off screen and put to the screen in one action.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm thinking of getting married for companionship and so I have someone to cook and clean." - Martin Marvinski, 6/3/2002
|
|
|
|
|
Can I get the posting data of IE browser before the browser send the data to server?
using VC!
|
|
|
|
|
Can I control the IE browser by using a COM?
is there a example?
thanks!
|
|
|
|
|
Yes, you can. Internet Explorer has a rich set of COM-interfaces, so you can do almost anything you want. You can get the documentation (samples included) by downloading the Internet Development SDK from Microsoft, or by browing it online using the MSDN Library (URL for both the SDK and the Library: http://msdn.microsoft.com).
|
|
|
|
|
Hi,
I'm trying to create a setup wizard and im wondering how to copy files across to other directories, creat new directories and create icons for the desk top. Can anybody help
Cheers
Dor
|
|
|
|
|
hi,
If u r using VC++ for ur application, i think its better to use the "Install Shield for VC++". That will save ur lot of work as we can do it easily with the wizrds taht it provides.
Hope this Hepls u...
Regards
hkprs
|
|
|
|
|