??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久久一区国产精品,狠狠色丁香久久婷婷综合五月 ,久久精品中文无码资源站http://m.shnenglu.com/deercoder/category/12311.html思考至? QQQ?35284643 Ƣ迎志同道合的朋友来交流?/description>zh-cnFri, 05 Feb 2010 03:53:35 GMTFri, 05 Feb 2010 03:53:35 GMT60如何修改控g的内容(captionQ?/title><link>http://m.shnenglu.com/deercoder/articles/107177.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Thu, 04 Feb 2010 08:35:00 GMT</pubDate><guid>http://m.shnenglu.com/deercoder/articles/107177.html</guid><wfw:comment>http://m.shnenglu.com/deercoder/comments/107177.html</wfw:comment><comments>http://m.shnenglu.com/deercoder/articles/107177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/deercoder/comments/commentRss/107177.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/deercoder/services/trackbacks/107177.html</trackback:ping><description><![CDATA[<p>昨天Q看了下那本书,发现里面的那个Static控g内容是可以修改的Q于是想惻I其实控g的内定w可以修改Q只是,需要你知道ID卛_<br>典型的代码是Q?br>GetDlgItem(ID)->SetWindowText(Caption)<br>于是Q今天想C改RadioButton的代码就出来了?br><br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CSfefeDlg::OnRadio1() <br><img id=Codehighlighter1_28_202_Open_Image onclick="this.style.display='none'; Codehighlighter1_28_202_Open_Text.style.display='none'; Codehighlighter1_28_202_Closed_Image.style.display='inline'; Codehighlighter1_28_202_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_28_202_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_28_202_Closed_Text.style.display='none'; Codehighlighter1_28_202_Open_Image.style.display='inline'; Codehighlighter1_28_202_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_28_202_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_28_202_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: Add your control notification handler code here</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"> MessageBox(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">你选择了第一个Radio Button!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> CString str;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> GetDlgItem(IDC_RADIO1)</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">GetWindowText(str);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> MessageBox(str);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CSfefeDlg::OnRadio2() <br><img id=Codehighlighter1_233_381_Open_Image onclick="this.style.display='none'; Codehighlighter1_233_381_Open_Text.style.display='none'; Codehighlighter1_233_381_Closed_Image.style.display='inline'; Codehighlighter1_233_381_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_233_381_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_233_381_Closed_Text.style.display='none'; Codehighlighter1_233_381_Open_Image.style.display='inline'; Codehighlighter1_233_381_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_233_381_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_233_381_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: Add your control notification handler code here</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">  MessageBox(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">你选择了第二个Radio Button!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  GetDlgItem(IDC_RADIO2)</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">SetWindowText(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">World</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CSfefeDlg::OnRadio3() <br><img id=Codehighlighter1_412_558_Open_Image onclick="this.style.display='none'; Codehighlighter1_412_558_Open_Text.style.display='none'; Codehighlighter1_412_558_Closed_Image.style.display='inline'; Codehighlighter1_412_558_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_412_558_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_412_558_Closed_Text.style.display='none'; Codehighlighter1_412_558_Open_Image.style.display='inline'; Codehighlighter1_412_558_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_412_558_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_412_558_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: Add your control notification handler code here</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"> MessageBox(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">你选择了第三个Radio Button!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top> GetDlgItem(IDC_RADIO3)</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">SetWindowText(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Good!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span></div> 很简单,是拖入控gRadioButtonQ然后有IDQ你在里面用相应的代码来更改Capition是的了?br><br>至于MessageBox,Ua是Z昄出来你选择了这个东西,发送一个消息而已Qؓ了让你显C的看到自己点击的这个生了一个消息?br><br>于是Q我便想CQ动态的改变按钮的内容(CaptionQ原来如此的单,二消息的传递也是如此的理成章。?br><br>现在Q发现MFC的一点点东西已经掌握了。。。? <img src ="http://m.shnenglu.com/deercoder/aggbug/107177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/deercoder/" target="_blank">刘畅</a> 2010-02-04 16:35 <a href="http://m.shnenglu.com/deercoder/articles/107177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC中动态添加控?http://m.shnenglu.com/deercoder/articles/107132.html刘畅刘畅Wed, 03 Feb 2010 14:41:00 GMThttp://m.shnenglu.com/deercoder/articles/107132.htmlhttp://m.shnenglu.com/deercoder/comments/107132.htmlhttp://m.shnenglu.com/deercoder/articles/107132.html#Feedback0http://m.shnenglu.com/deercoder/comments/commentRss/107132.htmlhttp://m.shnenglu.com/deercoder/services/trackbacks/107132.html 
动态控件是指在需要时由Create()创徏的控Ӟq与预先在对话框中放|的控g是不同的?

  一、创建动态控Ӟ

  Z对照Q我们先来看一下静态控件的创徏?br>
  攄静态控件时必须先徏立一个容器,一般是对话框,q时我们在对话框~辑H口中,从工L口中拖出所需控g攑֜对话框中卛_Q再适当修改控gIDQ设|控件属性,一个静态控件就创徏好了Q当对话框被昄Ӟ其上的控件也会显C?br>
  静态控件不需要调用Create()函数来创建?br>
  而创建动态控件有很大不同Q以下以按钮ZQ看一下动态控件的创徏q程Q?br>
  1.建立控gIDP

  IDh控g的标识,创徏控g前必d为它讄一个ID受?br>
  打开资源中的“String Table”Q在I白行上双击鼠标Q这时会弹出一个ID属性对话框Q在其中的ID~辑框中输入IDQ如QIDC_MYBUTTONQ在Caption中输入控件标题或注解Q注QCaption框不能ؓI,为空会导致创建失败)Q这里我输入的是按钮上要昄的文?-动态按钮?br>
  2.建立控g对象Q?br>
  不同U类的控件应创徏不同的类对象Q?br>
  ·按钮控g CButton Q包括普通按钮、单选按钮和复选按钮)
  ·~辑控g CEdit
  ·静态文本控?CStatic
  ·标签控g CTabCtrl
  ·旋{控g CSpinButtonCtrl
  ·滑标控g CSliderCtrl
  ·多信息编辑控?CRichEditCtrl
  ·q度条控?CProgressCtrl
  ·滚动条控?CSrcollBar
  ·l合框控?CComboBox
  ·列表框控?CListBox
  ·囑փ列表控g CImageCtrl
  ·树状控g CTreeCtrl
  ·动画控g CAnimateCtrl

  本例中我们创Z个CButtoncȝ普通按钮。注意不能直接定义CButton对象Q如QCButton m_MyBut;q种定义只能用来l静态控件定义控制变量,不能用于动态控件?br>
  正确做法是用new调用CButton构造函数生成一个实例:

CButton *p_MyBut = new CButton();

  然后用CButtoncȝCreate()函数创徏Q该函数原型如下Q?br>
BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );

  lpszCaption是按钮上昄的文本;dwStyle指定按钮风格Q可以是按钮风格与窗口风格的l合Q取值有Q?br>
  H口风格Q?br>
  ·WS_CHILD 子窗口,必须?br>  ·WS_VISIBLE H口可见Q一般都?br>  ·WS_DISABLED 用H口Q创建初始状态ؓ灰色不可用的按钮时?br>  ·WS_TABSTOP 可用Tab键选择
  ·WS_GROUP 成组Q用于成l的单选按钮中的第一个按?br>
  按钮风格Q?br>
  ·BS_PUSHBUTTON 下压式按钮,也即普通按?br>  ·BS_AUTORADIOBUTTON 含自动选中状态的单选按?br>  ·BS_RADIOBUTTON 单选按钮,不常?br>  ·BS_AUTOCHECKBOX 含自动选中状态的复选按?br>  ·BS_CHECKBOX 复选按钮,不常?br>  ·BS_AUTO3STATE 含自动选中状态的三态复选按?br>  ·BS_3STATE 三态复选按钮,不常?br> 
  以上风格指定了创建的按钮cdQ不能同时用,但必L其一?br>
  ·BS_BITMAP 按钮上将昄位图
  ·BS_DEFPUSHBUTTON 讄为默认按钮,只用于下压式按钮Q一个对话框中只能指定一个默认按?br>  ·rect指定按钮的大和位置Q?br>  ·pParentWnd指示拥有按钮的父H口Q不能ؓNULLQ?br>  ·nID指定与按钮关联的IDP用上一步创建的ID受?br>
  不同控gcȝCreate()函数略有不同Q可参考相兌料?br>
  例:p_MyBut->Create( "动态按?, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20,10,80,40), this, IDC_MYBUTTON );
q样Q我们就在当前对话框中的(20,10)处创Z?0Q高30Q按钮文字ؓ“动态按?#8221;的下压式按钮?br>
  Z使创E更方便易用Q我定义了如下函敎ͼ

CButton* CTextEditorView::NewMyButton(int nID,CRect rect,int nStyle)
{
CString m_Caption;
m_Caption.LoadString( nID ); //取按钮标?br>CButton *p_Button = new CButton();
ASSERT_VALID(p_Button);
p_Button->Create( m_Caption, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | nStyle, rect, this, nID ); //创徏按钮
return p_Button;
}

  其中m_Caption.LoadString( nID )是从字符串表中读取按钮文本,q样在创建按钮IDӞ应该把文本设|好Q参数nStyle为除必须风格外的额外风格?br>
  以下Q我调用该函数创Z个按钮,q指定第一个按钮ؓ默认按钮Q按钮的ID已预先设|好了:

CButton *p_MyBut[3];
p_MyBut[0] = NewMyButton( ID_MYBUT1, CRect(10,20,50,35), BS_DEFPUSHBUTTON );
p_MyBut[1] = NewMyButton( ID_MYBUT2, CRect(55,20,95,35), 0 );
p_MyBut[2] = NewMyButton( ID_MYBUT3, CRect(100,20,140,35), 0 );

  二、动态控件的响应Q?br>
  动态控件的响应函数不能用ClassWizarddQ只能手动添加。仍以上面的按钮ZQ我们制作按钮的单击响应函数?br>
  1.在MESSAGE_MAP中添加响应函敎ͼ

  MESSAGE_MAP表中定义了消息响应函敎ͼ其格式ؓQ消息名(ID,函数?Q当我们用ClassWizardd函数Ӟ会自动添加在AFX_MSG_MAP括v的区间内Q如Q?br>
BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)
//{{AFX_MSG_MAP(CTextEditorView)
ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
 
  手工d时不要添加到AFX_MSG_MAP区间内,以防ClassWizard不能正常工作Q如Q?

BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)
//{{AFX_MSG_MAP(CTextEditorView)
ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)
//}}AFX_MSG_MAP
ON_BN_CLICKED(ID_MYBUT1, OnMybut1)
ON_BN_CLICKED(ID_MYBUT2, OnMybut2)
ON_BN_CLICKED(ID_MYBUT3, OnMybut3)
END_MESSAGE_MAP()

  其中ON_BN_CLICKED是按钮单L息?br>
  2.在头文g中添加函数定义:

  用ClassWizardd函数Ӟ会在头文件的AFX_MSG区间内添加函数定义,如:

protected:
//{{AFX_MSG(CTextEditorView)
afx_msg void OnIconbut0();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()

  我们模仿q种形式Q只是把函数定义d到AFX_MSG区间外就行了Q?br>
protected:
//{{AFX_MSG(CTextEditorView)
afx_msg void OnIconbut0();
//}}AFX_MSG
afx_msg void OnMybut1();
afx_msg void OnMybut2();
afx_msg void OnMybut3();
DECLARE_MESSAGE_MAP()

  3.~写消息响应函数Q?br>
  以上是把消息和函数关联v来了Q具体在单击按钮后应做的工作在函C完成Q?

void CTextEditorView::OnMybut1()
{
MessageBox( "哈!你单M动态按钮? );
}
void CTextEditorView::OnMybut2()
{
……
}
void CTextEditorView::OnMybut3()
{
……
}

  除了按钮的响应函数外Q你q可以用上面获得的指针访问按钮,如:

  修改按钮的大和位置Qp_MyBut[0]->MoveWindow(……);

  修改按钮文本Qp_MyBut[0]->SetWindowText(……);

  昄/隐藏按钮Qp_MyBut[0]->ShowWindow(……);{等?br>三、回收资?/strong>Q?br>
  ׃动态控件对象是由new生成的,它不会被E序自动释放Q所以需手工释放。在控g不再使用时可以删除它Q?br>
if( p_MyBut[0] )
delete p_MyBut[0];

  以上是按钮控g动态生成的Ҏ。下面,再看一下单选按钮的动态生成问题?四、实例:单选按钮组的动态生?br>
  单选按钮也属于CButtonc,但由于单选按钮L成组使用的,所以它在制作和使用上与普通按钮有一定区别?br>
  假设有三个单选按钮组成一l,初始ӞW一个单选按钮处于选中状态?br>
  我们先来看静态制作方法:在对话框中放|三个单选按钮,讄属性如下:

  ·Radio1属性:Visible、Group、Tab stop、Auto
  ·Radio2属性:Visible、Tab stop、Auto
  ·Radio3属性:Visible、Tab stop、Auto

  q样的属性设|就把三个单选按钮分成了一l,它们一ơ只能有一个被选中Q若对话框中q有其它成组的单选按钮,使用时也会互不干扰。但q时q没有ɽW一个按钮处于选中状态?br>
  接着qClassWizardl单选按钮添加变量,q里只需为第一个单选按钮添加变量即可。设变量名ؓm_RadioQ类型选ؓint型。在构造函CClassWizard把m_Radio的D|ؓ-1Q我们把它改?Q这样在q行E序时可以看到第一个单选按钮处于选中状态了。之后,q应该用ClassWizardZ个单选按钮添加单d应函敎ͼ在里面修改m_Radio的值对应三个单选按钮就可以了?br>
  以上是通常制作单选按钮组的办法,现我们欲改ؓ动态生成,主要要解x钮分l和单击控制问题。以下ؓ制作步骤Q?br>
  1.定义三个单选按钮的IDQ?br>
  打开资源中的“String Table”Q在其中d三个ID|

  ·W一个:ID为IDC_MYRADIO1QCaption为单?
  ·W二个:ID为IDC_MYRADIO2QCaption为单?
  ·W三个:ID为IDC_MYRADIO3QCaption为单?

  其中Caption为按钮上要显C的文字Q可Ҏ需要设|?br>
  2.用CButtoncȝCreate()函数生成三个单选按钮:

  为方便v见,先定义一个函数生成单选按钮:

CButton* CTextEditorView::NewMyRadio(int nID,CRect rect,int nStyle)
{
 CString m_Caption;
 m_Caption.LoadString( nID ); //取按钮标?br> CButton *p_Radio = new CButton();
 ASSERT_VALID(p_Radio);
 p_Radio->Create( m_Caption, WS_CHILD | WS_VISIBLE | nStyle | WS_TABSTOP | BS_AUTORADIOBUTTON, rect, this, nID ); //创徏按钮
 return p_Radio;
}

  函数LoadString()用于?#8220;String Table”中读取按钮文本,Create()函数中设定了单选按钮必ȝ属性,其中包括了Visible、Tab stop、Auto属性?br>
  参数nID为单选按钮IDPrect为单选按钮尺寸,nStyle为除必要属性外的其它属性。返回gؓ指向新徏按钮的指针?br>
  有了q个函数后,创徏单选按钮组时只要依ơ调用该函数卛_Q其中单选按钮组的第一个单选按钮必L定WS_GROUP属性?br>
CButton *p_MyRadio[3];
p_MyRadio[0] = NewMyRadio( IDC_MYRADIO1, CRect(15,90,60,105), WS_GROUP );
p_MyRadio[1] = NewMyRadio( IDC_MYRADIO2, CRect(15,108,60,123), 0 );
p_MyRadio[2] = NewMyRadio( IDC_MYRADIO3, CRect(15,126,60,141), 0 );

  3.定义单选按钮组的控制变量,讄W一个单选按钮ؓ选中状态:

  q里不能用ClassWizardd变量Q也不要在DoDataExchange()中添加控制变量,因ؓ动态控件一开始ƈ不存在,在DoDataExchange()中添加控制变量会造成q行错误。这里我们只需在头文g中随意定义一个int型变量作为控制变量即可,如:

int m_SelRadio;

  在构造函C讄其初gؓ0Qm_SelRadio = 0;

  在上面的创徏按钮的语句中Q用SetCheck()函数讄初始选中的按钮:

CButton *p_MyRadio[3];
p_MyRadio[0] = NewMyRadio( IDC_MYRADIO1, CRect(15,90,60,105), WS_GROUP );
p_MyRadio[1] = NewMyRadio( IDC_MYRADIO2, CRect(15,108,60,123), 0 );
p_MyRadio[2] = NewMyRadio( IDC_MYRADIO3, CRect(15,126,60,141), 0 );
p_MyRadio[m_SelRadio]->SetCheck(1); //讄W一个单选ؓ选中状?

  在SetCheck()函数中,参数?表示讄为选中状态,?表示未选中状态?br>
  4.d鼠标单击响应函数Q?br>
  鼠标单击某单选按钮后Q其状态已l能自动改变Q这里我们还需修改控制变量m_SelRadio的|以便跟踪选中的单选按钮?br>
  首先在MESSAGE_MAP中把鼠标单击消息与响应函数联pv来:

BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)
//{{AFX_MSG_MAP(CTextEditorView)
ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0) //ClassWizard在此处添?br>//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_MYRADIO1, OnMyRadio1) //单选按?
ON_BN_CLICKED(IDC_MYRADIO2, OnMyRadio2) //单选按?
ON_BN_CLICKED(IDC_MYRADIO3, OnMyRadio3) //单选按?
END_MESSAGE_MAP()

  然后在头文g的MESSAGE_MAP中定义单d敎ͼ

protected:
//{{AFX_MSG(CTextEditorView)
afx_msg void OnIconbut0(); //ClassWizard在此处添?br>//}}AFX_MSG
afx_msg void OnMyRadio1(); //单选按?
afx_msg void OnMyRadio2(); //单选按?
afx_msg void OnMyRadio3(); //单选按?
DECLARE_MESSAGE_MAP()

  q里注意不要把函数加在AFX_MSG区间内,以防影响ClassWizard的用?br>
  定义具体的响应函敎ͼq里是用手工加入的,不是用ClassWizard加入的)Q?br>
//单击单选按? void CTextEditorView::OnMyRadio1()
{
m_SelRadio=0;
}

//单击单选按? void CTextEditorView::OnMyRadio2()
{
m_SelRadio=1;
}

//单击单选按? void CTextEditorView::OnMyRadio3()
{
m_SelRadio=2;
}

  5.回收资源Q?br>
  在析构函CQ回收创建的单选按钮(也可以在不用单选按钮时立即回收Q:

CTextEditorView::~CTextEditorView()
{
int i;
for( i=0; i<3; i++)
{
if(p_MyRadio[i])
delete p_MyRadio[i];
}
}

  以上是动态控件的生成和响应方法,各种不同的控件做法略有不同,但思\和步骤都是类似的Q希望以上实例对你能够有所帮助?


刘畅 2010-02-03 22:41 发表评论
]]>
动态创建按钮ƈ相应消息http://m.shnenglu.com/deercoder/articles/107131.html刘畅刘畅Wed, 03 Feb 2010 14:31:00 GMThttp://m.shnenglu.com/deercoder/articles/107131.htmlhttp://m.shnenglu.com/deercoder/comments/107131.htmlhttp://m.shnenglu.com/deercoder/articles/107131.html#Feedback0http://m.shnenglu.com/deercoder/comments/commentRss/107131.htmlhttp://m.shnenglu.com/deercoder/services/trackbacks/107131.htmlW一步:
在Resource.h中,d按钮IDQID_BTN_TEMP = 1001
W二步:
在ViewcRCView的子cR中d一个变量,判断按钮是否已经创徏Q?br>bool m_bIsCreatButton;

W三步:
创徏一个按钮数l:
CBitmapButton *m_bitList[11]


W四步:
在ViewcRCView的子cR的构造函CQ初始化bIsCreatButtonQ?br>m_bIsCreatButton = false;

W五步:
在ViewcRCView的子cR中d函数创徏按钮Q?br>CBitmapButton* CHisNavView::CreateButton(int nID, char* text,int left, int top, int right, int bottom)
{
 CRect rect;
 GetClientRect(rect);
 CBitmapButton *pButton = new CBitmapButton();
 ASSERT_VALID(pButton); pButton->Create(TEXT(text),
  WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
  CRect(left, top, right, bottom),
  this, nID);
 return pButton;
}

其中QnID为按钮IDQtext为按钮文本?其他为按钮显C围?br>
W六步:
在ViewcRCView的子cR的OnDrawҎ中创建按钮:
m_bitList[0] = CreateButton(ID_BTN_TEMP, "天志的按?, 50, 50, 150, 80); 

W六?
在ViewcRCView的子cR中声明函数:
afx_msg void OnTest()

W七?
在ViewcRCView的子cR的BEGIN_MESSAGE_MAP(CHisNavView, CView)d:
ON_BN_CLICKED(ID_BTN_TEMP, CHisNavView::OnTest)

W八?实现OnTest()函数
void CHisNavView::OnTest()
{
   MessageBox(TEXT("天志自己写着?"), NULL, MB_OK);
}



刘畅 2010-02-03 22:31 发表评论
]]>
打开文g对话框和文g夹对话框之MFC和API实现?/title><link>http://m.shnenglu.com/deercoder/articles/103065.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Sat, 12 Dec 2009 08:51:00 GMT</pubDate><guid>http://m.shnenglu.com/deercoder/articles/103065.html</guid><wfw:comment>http://m.shnenglu.com/deercoder/comments/103065.html</wfw:comment><comments>http://m.shnenglu.com/deercoder/articles/103065.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/deercoder/comments/commentRss/103065.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/deercoder/services/trackbacks/103065.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一、利?/span><span lang=EN-US>API</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现打开文g对话框和利用</span><span lang=EN-US>MFC</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来实现打开文g对话框?/span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Ҏ一Q?/span><span lang=EN-US>API</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">部分Q?/span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>OPENFILENAME ofn;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>char szFile[MAX_PATH];</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ZeroMemory(&ofn,sizeof(ofn));</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ofn.lStructSize = sizeof(ofn);</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ofn.lpstrFile = szFile;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ofn.lpstrFile[0] = TEXT('\0');</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ofn.nMaxFile = sizeof(szFile);</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ofn.lpstrFilter = TEXT("all\0*.*\0jpg\0*.jpg\0bmp\0*.bmp\0"); //</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义三个选项Q?/span><span lang=EN-US>all</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span><span lang=EN-US>text</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span><span lang=EN-US>exe </span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ofn.nFilterIndex = 1;<span style="mso-spacerun: yes">      </span>//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义首选项是哪一?/span><span lang=EN-US> </span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ofn.lpstrFileTitle = NULL;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ofn.nMaxFileTitle = 0;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ofn.lpstrInitialDir = NULL;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>if(GetOpenFileName(&ofn))</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>{</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 2">          </span>::SetDlgItemText(this->m_hWnd,IDC_EDIT1,szFile);</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>}<span style="mso-spacerun: yes">  </span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Ҏ二?/span><span lang=EN-US>MFC</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>CFileDialog dlg(TRUE, NULL, NULL, </span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 2">          </span>OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, </span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 2">          </span>NULL);</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// </span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>if(dlg.DoModal() == IDOK)</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>{</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 2">          </span>szFilename = dlg.GetPathName();</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 2">          </span>::MessageBox(NULL,szFilename,NULL,MB_OK);</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>// <span style="mso-tab-count: 1">   </span>}</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意Q打开文g的方式和打开文g夹的方式是不同的。打开文g的方式是不断的打开直到出现末端为文Ӟ否则遇到文g夹还要l打开。而打开文g夹则是只要选择C个\径的文g夹就打开?/span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下面的这U方式是<span style="COLOR: red">打开文g?/span>Q?/span><span lang=EN-US>MFC</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现?/span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>static TCHAR strDirName[MAX_PATH];</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p> </o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>BROWSEINFO bi;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>CString szString = TEXT("</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">选择一个源文g子文件夹</span><span lang=EN-US>");</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>bi.hwndOwner = ::GetFocus();</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>bi.pidlRoot = NULL;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">    </span>bi.pszDisplayName = strDirName;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>bi.lpszTitle = szString;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">    </span>bi.ulFlags = BIF_BROWSEFORCOMPUTER | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">    </span>bi.lpfn = NULL;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>bi.lParam = 0;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>bi.iImage = 0;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p> </o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>LPITEMIDLIST pItemIDList = ::SHBrowseForFolder(&bi);</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>if(pItemIDList == NULL)</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>{</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 2">              </span>return ;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>}</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p> </o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>::SHGetPathFromIDList(pItemIDList, strDirName);</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p> </o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>CString str = strDirName;</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>if(str != "" && str.Right(1) != '\\')</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 2">              </span>str += '\\';</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">       </span>::SetDlgItemText(this->m_hWnd,IDC_EDIT1,str);</span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p> </o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p> </o:p></span></p> <img src ="http://m.shnenglu.com/deercoder/aggbug/103065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/deercoder/" target="_blank">刘畅</a> 2009-12-12 16:51 <a href="http://m.shnenglu.com/deercoder/articles/103065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解析MFC中的几个常见的函数用?/title><link>http://m.shnenglu.com/deercoder/articles/103064.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Sat, 12 Dec 2009 08:49:00 GMT</pubDate><guid>http://m.shnenglu.com/deercoder/articles/103064.html</guid><wfw:comment>http://m.shnenglu.com/deercoder/comments/103064.html</wfw:comment><comments>http://m.shnenglu.com/deercoder/articles/103064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/deercoder/comments/commentRss/103064.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/deercoder/services/trackbacks/103064.html</trackback:ping><description><![CDATA[<p>1.<br>VOID CFileIO::GetFolderNamesInDir(CStringArray &StringArray, LPCTSTR lpszExpression)<br>{<br> CFileFind FileFind;<br> CString str = lpszExpression;<br> str += "\\*.*";<br> if(!FileFind.FindFile(str))<br>  return;<br> BOOL bFound;<br> do{<br>  bFound = FileFind.FindNextFile();<br>  if(FileFind.IsDirectory())<br>  {<br>   CString strFileName = FileFind.GetFileName();<br>   if(strFileName != "." && strFileName != "..")<br>    StringArray.Add(FileFind.GetFileName());<br>  }<br> }while(bFound);<br>}<br>此函数的入口参数是一个CString数组Q后面的那个lpszExpression是一个要搜烦的文件名Q你可以选择通配W,比如?*.jpg"来搜索下面的所有的文g名。然后此函数会把文g名都存入到那个数l中Q因为是用的引用。注意的是,那个lpszExpression需要绝对\径,所以需要的格式是类DUŞ式:"d:\\fp\\temp.bmp"。存入的也是名字Q而没有\径的?br><br>2.选择路径?br>CString CFileIO::SelectDirectory(LPCTSTR lpszTitle)<br>{<br> static TCHAR strDirName[MAX_PATH];</p> <p> BROWSEINFO bi;<br> bi.hwndOwner = ::GetFocus();<br> bi.pidlRoot = NULL;<br>    bi.pszDisplayName = strDirName;<br> bi.lpszTitle = lpszTitle;<br>    bi.ulFlags = BIF_BROWSEFORCOMPUTER | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS;<br>    bi.lpfn = NULL;<br> bi.lParam = 0;<br> bi.iImage = 0;</p> <p> LPITEMIDLIST pItemIDList = ::SHBrowseForFolder(&bi);<br> if(pItemIDList == NULL)<br> {<br>  return "";<br> }</p> <p> ::SHGetPathFromIDList(pItemIDList, strDirName);</p> <p> CString str = strDirName;<br> if(str != "" && str.Right(1) != '\\')<br>  str += '\\';</p> <p> return str;<br>}<br>最l得到的str是那个路径的名字。上面的函数如果和下面这个配套用的话,需要注意加?\",因ؓ需要多一个。这个函数的目的是Z打开一个文件夹的对话框让你选择?br><br>3.VOID CFileIO::GetFileNamesInDir(CStringArray &StringArray, LPCTSTR lpszExpression)<br>{<br> // The File Name should apply with "d:\\fp\\temp.bmp" Style<br> CFileFind FileFind;<br> if(!FileFind.FindFile(lpszExpression))<br>  return;<br> BOOL bFound;<br> do{<br>  bFound = FileFind.FindNextFile();<br>  if(!FileFind.IsDirectory())<br>   StringArray.Add(FileFind.GetFileName());<br> }while(bFound);<br>}<br>传入一个\径,得到该\径下面的所有的文g名,q是存入数组Q不q没有那些\径名Q而只是文件名。还要不会搜索下面的所有的文g夹,只是当前文g夹下面是?br>但是Q你可以用上面这三个函数做很多事情了。递归调用Q完全可以实C…………<br><br>4.上面说到了递归调用。下面的q个是实际的实Cd一个目录下面所有的文g名,q且保存在一个CString数组中,而且q是详细的文件\径?br>static void GetAllFilePathInDir( CStringArray &strArray, CString strDir, CString strExt )<br>{<br> CFileFind finder;<br> CString strFileName;<br> if( strDir.IsEmpty() )<br>  return;<br> if( strDir.Right(2) != "\\" )<br>  strDir = strDir + "\\";<br> BOOL bWorking = finder.FindFile( strDir + "*.*" );<br> while( bWorking )<br> { <br>  bWorking = finder.FindNextFile();<br>  <br>  if ( finder.IsDots() )<br>   continue;<br>  <br>  if ( finder.IsDirectory() )<br>  {<br>   GetAllFilePathInDir( strArray, finder.GetFilePath(), strExt );<br>   continue;<br>  }</p> <p>  strFileName = finder.GetFilePath();<br>  strFileName.MakeLower();<br>  CString needExt = GetFileExt( strExt );<br>  CString srcExt = GetFileExt( strFileName );<br>  if( strExt == "*.*" || needExt == srcExt )<br>  {<br>   strArray.Add( strFileName );<br>  }<br> } </p> <p> finder.Close();<br>}<br>一个典型的调用参数是下面的这个:<br>GetAllFilePathInDir(FilenameALL,szSourceFilename,"*.jpg");<br> for (int i = 0; i < FilenameALL.GetSize(); i++)<br> {<br>  ::MessageBox(NULL,FilenameALL.GetAt(i),"ok",MB_OK);<br> }<br>注意Q前面第一个参数是表示要存攄数组Q第二个是你要查扄那个路径Q第三个是查扄文g名。可以用通配W来实现查找。这样就完成了功能?br>强大的MFC。。。?br></p> <img src ="http://m.shnenglu.com/deercoder/aggbug/103064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/deercoder/" target="_blank">刘畅</a> 2009-12-12 16:49 <a href="http://m.shnenglu.com/deercoder/articles/103064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初识MFChttp://m.shnenglu.com/deercoder/articles/101010.html刘畅刘畅Sun, 15 Nov 2009 12:19:00 GMThttp://m.shnenglu.com/deercoder/articles/101010.htmlhttp://m.shnenglu.com/deercoder/comments/101010.htmlhttp://m.shnenglu.com/deercoder/articles/101010.html#Feedback0http://m.shnenglu.com/deercoder/comments/commentRss/101010.htmlhttp://m.shnenglu.com/deercoder/services/trackbacks/101010.html
1.error C2660: “CWnd::MessageBoxA” : 函数不接?4 个参?错误解决

 1void   CSerialPortEx::ProcessErrorMessage(char   *ErrorText)   
 2  {   
 3  char   *Temp=new   char[200];   
 4  LPVOID   lpMsgBuf;   
 5  FormatMessage(   
 6  FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,   
 7  NULL,   
 8  GetLastError(),   
 9  MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),   //Default   language   
10  (LPTSTR)&lpMsgBuf,   
11  0,   
12  NULL);   
13  sprintf(Temp,   
14          "WARNING:%s   Failed   with   the   following   error:\n%s\nPort:%d\n",   
15  (char   *)ErrorText,   
16  lpMsgBuf,   
17  m_nPortNr);   
18  MessageBox(NULL,   
19        Temp,   
20        "Application   Error",   
21        MB_ICONSTOP);   
22  LocalFree(lpMsgBuf);   
23  delete[]   Temp;   
24  }
   
25  

四个参数的MessageBox()是API中定义的Q而在MFC中被重新定义了,是只需要一个参数的MessageBox("");  因此你在MFC中调用api的函敎ͼ要在前面加上::  

《待l?

刘畅 2009-11-15 20:19 发表评论
]]>
պAvĻþþ޸ | ɫݺݾþۺ| ҹAVëƬþ| ݺݾƷþþĻ| 69Ʒþþþ9999APGF | 97Ʒ˾þô߽app| ɫۺϾþۺ| պAVëƬƷþþ| þþþһvr| ƷŮþAV| Ʒ99þþþþ鶹| 99þ99þ| ƯޱгĻþ| ɫþAVۺ| ҹƷþþþþӰ777| þþþavר| һþöۺ | պAVþһ| þþþùƷ鶹ARӰԺ | ƷŮþþþ| ɫۺϾþ| ݺ޾þþþþۺ| 99þѹƷ| ݺݾþ | ݾƷŮ˾þþþþ | þ޾Ʒavվ| þùƷվ| ˾þü91| ŷ˾þۺһ | þþþþۺ| þþƷƷް| 99þþƷ| avttþþƷ| ƷëٸAVѾþ| þ| þۺɫɫ| ۺϾþһ | 7ŷպۺľþþþ | 鶹һ99þþþ| þۺۺϾþۺ| ҹƷƬþӰ|