|
Scroll down a little, I asked the very same question just a few hours ago.
Still here?
WM_SYSCOMMAND with SC_MINIMIZE in the wParam. You should bitwise AND (&) the wParam with 0xfff0 to get an accurate result.
|
|
|
|
|
kiran.pinjarla wrote: Whick message is generated when minimize button of a widow is pressed?
Sorry guys. I didnt see the same question posted bellow and created another thread.
Thank you.
KIRAN PINJARLA
|
|
|
|
|
<br />
void CAnswer::OnSysCommand(UINT nID, LPARAM lParam)<br />
{<br />
switch(nID)<br />
{<br />
case SC_MINIMIZE:<br />
MessageBox("Min");<br />
break;<br />
case SC_MAXIMIZE:<br />
MessageBox("Max");<br />
break;<br />
}<br />
|
|
|
|
|
From the docs on MSDN:
"In WM_SYSCOMMAND messages, the four low-order bits of the wParam parameter are used internally by the system. To obtain the correct result when testing the value of wParam, an application must combine the value 0xFFF0 with the wParam value by using the bitwise AND operator."
I know simply comparing the values works, but it could lead to a future bug in the application.
|
|
|
|
|
Iam developing a dialog based application in which user has to select a file to continue for next step.There he needs to enter the file with correct extension,so i have to validate the file extensions which he has provided.
he needs to enter different files in different steps.
how can i validate the file extensions he has provided is correct or wrong.
so that he can go for the next operation.
|
|
|
|
|
'need help urgent' is hardly a descriptive subject.
You can use the Substring method of CString to check if the file extension is what you hoped, and you can set a file selection dialog to only allow selection of existing files.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
reddy harish wrote: validate the file extensions
You can take the file name and check it with the files existing in the directories using FindFirstFile(),FindNextFile() API's.YOu can also check for the extension using these API's
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
|
i have created a two menubuttons which will draw a Circle,and another one for
Rectangle.i have wriiten in the onMouseMove message handeler.now my problem is that if i choose the circle to draw the previous one is removeing from window.i want to keep all draws in window.i have tryed with the method
Invalidate(false); but it is not working .plz give me the sugetions.
|
|
|
|
|
Sounds like you're not drawing them in your OnPaint handler, and, ironically, your Invalidate call is what would be forcing them to erase.
Post some code if you want further advice.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
void CNEWWINDOWView::OnLButtonDown(UINT nFlags, CPoint point)
{
if(nFlags==MK_LBUTTON ){
x1=point.x;
y1=point.y;
}
Invalidate();
CView::OnLButtonDown(nFlags, point);
}
void CNEWWINDOWView::OnMouseMove(UINT nFlags, CPoint point)
{
if(nFlags==MK_LBUTTON ){
x2=point.x;
y2=point.y;
}
Invalidate();
CView::OnMouseMove(nFlags, point);
}
And in OnDraw i Have written as follow
void CNEWWINDOWView::OnDraw(CDC* pDC)
{
CBrush brush;
if(m_colour!=-1)
{
if(m_hatch>=0 && m_hatch<=5)
brush.CreateHatchBrush(m_hatch,m_colour);
else
brush.CreateSolidBrush(m_colour);
pDC->SelectObject(&brush);
pDC->TextOut(300,10,"COLOUR::");
CPen pen(PS_SOLID,2,m_colour);
pDC->SelectObject(&pen);
}
if(m_Element==LINE)
{
pDC->MoveTo(x1,y1);
pDC->LineTo(x2,y2);
}
else if(m_Element==RECTANGLE)
{
CRect* rect=new CRect(x1,y1,x2,y2);
pDC->Rectangle(rect);
//pDC->FillSolidRect(rect,RGB(255,255,255);
rect->NormalizeRect();
}
else if(m_Element==CIRCLE)
{
long radius =
static_cast(sqrt(static_cast((x2-x1)*(x2-x1-x1)+
(y2-y1)*(y2-y1))));
CRect m_EnclosingRect = CRect(x1 - radius, y1 - radius,
x1 + radius, y1 + radius);
pDC->Ellipse(m_EnclosingRect);
}
|
|
|
|
|
As I guess that when you draw a circle ,earlier drawn figures are being erased.Right?
Have a look at SetROP2().
This method helps working with the Raster Operations performing XOR,AND etc operations on bits while drawing.
You can use the R2_XXX option for the drawing modes.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
hi _AnShUmAn_
i have tried with the setRop2();what u have guessed is true.but all parameters of this function for set the pen and brush colour.i havent find any thing which wil solve my problem.plz give me sample code.
|
|
|
|
|
Here's a sample code that I use in OnMouseMove
pDC->SetROP2(R2_NOTXORPEN);
pDC->MoveTo(pStart);
pDC->LineTo(pEnd);
pDC->SetROP2(R2_NOTXORPEN);
pDC->MoveTo(pStart);
pDC->LineTo(point);
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
i hope that u will get an idea by seeing my code.
void CNEWWINDOWView::OnLButtonDown(UINT nFlags, CPoint point)
{
if(nFlags==MK_LBUTTON ){
x1=point.x;
y1=point.y;
}
Invalidate();
CView::OnLButtonDown(nFlags, point);
}
void CNEWWINDOWView::OnMouseMove(UINT nFlags, CPoint point)
{
if(nFlags==MK_LBUTTON ){
x2=point.x;
y2=point.y;
}
Invalidate();
CView::OnMouseMove(nFlags, point);
}
/* After the i have written in the on Draw method to draw Rectangle,circle ,Line by clicking on that buttons.*/
void CNEWWINDOWView::OnDraw(CDC* pDC)
{
if(m_Element==LINE)
{
pDC->MoveTo(x1,y1);
pDC->LineTo(x2,y2);
}
else if(m_Element==RECTANGLE)
{
CRect* rect=new CRect(x1,y1,x2,y2);
pDC->Rectangle(rect);
rect->NormalizeRect();
}
else if(m_Element==CIRCLE)
{
long radius =
static_cast<long>(sqrt(static_cast<double>((x2-x1)*(x2-x1-x1)+
(y2-y1)*(y2-y1))));
CRect m_EnclosingRect = CRect(x1 - radius, y1 - radius,
x1 + radius, y1 + radius);
pDC->Ellipse(m_EnclosingRect);
}
but it is not restore the privious draws.
|
|
|
|
|
Why are you drawing the shapes in OnDraw? Why not in OnMouseMove as I suggest?
and do not Invalidate()
What does Invalidate do:
Specifies whether the background within the update region is to be erased.
So that could also be one of the problems.
Let me know when you get this done.....
-- modified at 4:41 Wednesday 23rd August, 2006
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
|
Thanx.i will try with ur way.
|
|
|
|
|
where you draw your shapes WM_PAINT
|
|
|
|
|
the problem is that when i draw a figure ,earlier drawn figures are being erased.No ,i am drawing in the ondraw method.
-- modified at 2:33 Wednesday 23rd August, 2006
|
|
|
|
|
|
I'm creating a custom control which creates a child header control to display column headings. I'm wondering how tall to make the header control. I looked at GetSystemMetrics(), but couldn't find one that seemed appropriate. Currently, I just defaulted to using the horizontal scroll bar height from GetSystemMetrics(), but was wondering if there was a more correct method.
Any ideas?
|
|
|
|
|
I would give it a default height to begin with, but make it self adjusting to fit the text size. For a default height I would set it to the same height as the default font. Infact to calculte it I would use the same method as creating a font size
int lfheight = -MulDiv(12, GetDeviceCaps(hdc, LOGPIXELSY), 72);
|
|
|
|
|
basing it on the font size sounds like a good approach. it should probably be a little larger than the font height, though, to allow for a little space and the borders drawn by the control.
Thanks!
|
|
|
|
|
Hi ,
I am facing a problem.
In my MFC application I have to check whether serial port is in Plugged/Unplugged status.
Any method for finding it?
any window message or event for knowing serial port status?
Thanx in advance
|
|
|
|