<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[观夏Note]]></title> 
<link>//gm.angeldm.com/index.php</link> 
<description><![CDATA[新技术番]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[观夏Note]]></copyright>
<item>
<link>//gm.angeldm.com/post//</link>
<title><![CDATA[MFC应用程序创建窗口过程和关闭窗口顺序]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序开发]]></category>
<pubDate>Tue, 21 Feb 2012 13:48:29 +0000</pubDate> 
<guid>//gm.angeldm.com/post//</guid> 
<description>
<![CDATA[ 
	创建非模态窗口过程<br/><br/>1.PreCreateWindow() 该函数是一个重载函数，<span style="color: #4169E1;">在窗口被创建前，可以在该重载函数中改变创建参数(可以设置窗口风格等等)</span><br/><br/>2.PreSubclassWindow() 这也是一个重载函数，<span style="color: #4169E1;">允许首先子分类一个窗口</span><br/><br/>3.OnGetMinMaxInfo() 该函数为消息响应函数，响应的是<span style="color: #FF0000;">WM_GETMINMAXINFO</span>消息，<span style="color: #4169E1;">允许设置窗口的最大或者最小尺寸</span><br/><br/>4.OnNcCreate()该函数也是一个消息响应函数，响应<span style="color: #FF0000;">WM_NCCREATE</span>消息，<span style="color: #4169E1;">发送消息以告诉窗口的客户区即将被创</span><br/><br/>5.OnNcCalcSize() 该函数也是消息响应函数,响应<span style="color: #FF0000;">WM_NCCALCSIZE</span>消息，<span style="color: #4169E1;">作用是允许改变窗口客户区大小</span><br/><br/>6.OnCreate()&nbsp;&nbsp;该函数也是一个消息响应函数，响应<span style="color: #FF0000;">WM_CREATE</span>消息，<span style="color: #4169E1;">发送消息告诉一个窗口已经被创建</span><br/><br/>7.OnSize() 该函数也是一个消息响应函数，响应<span style="color: #FF0000;">WM_SIZE</span>消息，<span style="color: #4169E1;">发送该消息以告诉该窗口大小已经发生变化</span><br/><br/>8.OnMove() 消息响应函数，响应<span style="color: #FF0000;">WM_MOVE</span>消息，<span style="color: #4169E1;">发送此消息说明窗口在移动</span><br/><br/>9.OnChildNotify()该函数为重载函数，作为部分消息映射被调用，<span style="color: #4169E1;">告诉父窗口即将被告知一个窗口刚刚被创建</span><br/><br/>创建一个非模态窗口<br/><br/>CTestDlg *pDlg=new CTestDlg;<br/><br/>pDlg->Create(IDD_TESTDLG,this);<br/><br/>pDlg->ShowWindow(SW_SHOW);<br/><br/> <br/><br/>非模态窗口关闭顺序<br/><br/>1.OnClose() 消息响应函数，响应窗口的<span style="color: #FF0000;">WM_CLOSE</span>消息，<span style="color: #4169E1;">当关闭按钮被单击的时候发送此消息</span><br/><br/>2.OnDestroy()消息响应函数，响应窗口的<span style="color: #FF0000;">WM_DESTROY</span>消息，<span style="color: #4169E1;">当一个窗口将被销毁时，发送此消息</span><br/><br/>3.OnNcDestroy() 消息响应函数，响应窗口的<span style="color: #FF0000;">WM_NCDESTROY</span>消息，<span style="color: #4169E1;">当一个窗口被销毁后发送此消息</span><br/><br/>4.PostNcDestroy() 重载函数，作为处理<span style="color: #FF0000;">OnNcDestroy()</span>函数的最后动作，<span style="color: #4169E1;">被CWnd调用</span><br/><br/>下述几个实际 的关闭过程：<br/><br/>OnClose()->OnCancel()->DestroyWindow()->OnDestroy()->OnNcDestroy()<br/><br/>OnCancel()->DestroyWindow()->OnDestroy()->OnNcDestroy()&nbsp;&nbsp; （IDCANCEL）<br/><br/>OnOK()->DestroyWindow()->OnDestroy()->OnNcDestroy()&nbsp;&nbsp; （ID_OK）<br/><br/><span style="font-size: 12px;"><span style="color: #FF0000;">注意：</span></span>在一个模块或者一个函数中创建窗口，无法知道什么时候关闭窗口。而pWnd也只是作为一个局部变量，要对它进行析构。一般操作如下：<br/><br/>void CTestDlg::OnCancel()<br/>&#123;<br/>&nbsp;&nbsp;DestroyWindow();<br/>&#125;<br/>void CTestDlg::PostNcDestroy()<br/>&#123;<br/>&nbsp;&nbsp;CDialog::PostNcDestroy();<br/>&nbsp;&nbsp;delete this;<br/>&#125;<br/><br/><br/>创建模态窗口过程<br/><br/>1.DoModal() 重载函数，重载DoModal()成员函数<br/><br/>2.PreSubclassWindow() 重载函数，允许首先子分类一个窗口<br/><br/>3.OnCreate() 消息响应函数，响应<span style="color: #FF0000;">WM_CREATE</span>消息，发送此消息以告诉一个窗口已经被创建<br/><br/>4.OnSize()消息响应函数，响应<span style="color: #FF0000;">WM_SIZE</span>消息，发送此消息以告诉窗口大小发生变化<br/><br/>5.OnMove()消息响应函数，响应<span style="color: #FF0000;">WM_MOVE</span>消息，发送此消息，以告诉窗口正在移动<br/><br/>6.OnSetFont()消息响应函数，响应<span style="color: #FF0000;">WM_SETFONT</span>消息，发送此消息，以允许改变对话框中控件的字体<br/><br/>7.OnInitDialog()消息响应函数，响应<span style="color: #FF0000;">WM_INITDIALOG</span>消息，发送此消息以允许初始化对话框中的控件，或者是创建新控件<br/><br/>8.OnShowWindow()消息响应函数，响应<span style="color: #FF0000;">WM_SHOWWINDOW</span>消息，该函数被ShowWindow()函数调用<br/><br/>9.OnCtlColor()&nbsp;&nbsp;消息响应函数，响应<span style="color: #FF0000;">WM_CTLCOLOR</span>消息，被父窗口发送已改变对话框或对话框上面控件的颜色<br/><br/>10. OnChildNotify()重载函数，作为<span style="color: #FF0000;">WM_CTLCOLOR</span>消息的结果发送<br/><br/>创建：<br/><br/>CMyModalDialog dlg;<br/>dlg.DoModal();<br/><br/>模态窗口关闭顺序<br/><br/>1.OnClose()消息响应函数，响应<span style="color: #FF0000;">WM_CLOSE</span>消息，当"关闭"按钮被单击的时候，该函数被调用<br/><br/>2.OnKillFocus()&nbsp;&nbsp;消息响应函数，响应<span style="color: #FF0000;">WM_KILLFOCUS</span>消息，当一个窗口即将失去键盘输入焦点以前被发送<br/><br/>3.OnDestroy() 消息响应函数，响应<span style="color: #FF0000;">WM_DESTROY</span>消息，当一个窗口即将被销毁时，被发送<br/><br/>4.OnNcDestroy()&nbsp;&nbsp;消息响应函数，响应<span style="color: #FF0000;">WM_NCDESTROY</span>消息，当一个窗口被销毁以后被发送<br/><br/>5.PostNcDestroy()重载函数，作为处理<span style="color: #FF0000;">OnNcDestroy()</span>函数的最后动作被CWnd调用
]]>
</description>
</item><item>
<link>//gm.angeldm.com/read.php?&amp;guid=0#topreply</link>
<title><![CDATA[[评论] MFC应用程序创建窗口过程和关闭窗口顺序]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>//gm.angeldm.com/read.php?&amp;guid=0#topreply</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>