日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MFC遍历窗体所有的控件

發(fā)布時(shí)間:2025/4/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC遍历窗体所有的控件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

HWND pWnd = FindWindow(NULL,"另存為");????????????? //獲得窗口的句柄

void saveopen(HWND pWnd)
{
?HWND m_hWnd=pWnd;
?HWND hWndChild =::GetWindow(m_hWnd,GW_CHILD);?
?TCHAR BUF[512];
?CString filename;
?CWnd *pedit;
?while(hWndChild)??
?{??
??char *buf=new char[512];
??::GetClassName(hWndChild,buf,512);//得到枚舉的控件是什么類型的,
??CString str=buf;??
??str.TrimRight();
??delete buf;
??//AfxMessageBox(str);
??if(str=="ComboBoxEx32")
??{
???HWND tt =::GetWindow(hWndChild,GW_CHILD);
???HWND yy =::GetWindow(tt,GW_CHILD);
???pedit?? =?? CWnd::FromHandle(yy);

???pedit->SendMessage(WM_GETTEXT,sizeof(BUF)/sizeof(TCHAR),(LPARAM)(void*)BUF);
???filename=BUF;//完成第一步保存原始的文件名

???CString sPath="F:\\work";
???lstrcpy(BUF,(LPCTSTR)sPath);
???pedit->SendMessage(WM_SETTEXT,0,(LPARAM)BUF);
??}
??if(str=="Button")????? //枚舉到按鈕,有保存和取消按鈕
??{
???CWnd *pwnd = CWnd::FromHandle(hWndChild);
???pwnd->SendMessage(WM_GETTEXT,sizeof(BUF)/sizeof(TCHAR),(LPARAM)(void*)BUF);
???//發(fā)消息得到按鈕的標(biāo)題
???CString str=BUF;
???str.TrimRight();
???if(str=="保存(&S)")//如果是保存按鈕
???{??
????::SendMessage(pwnd->GetSafeHwnd(),WM_LBUTTONDOWN,0,0);
????::SendMessage(pwnd->GetSafeHwnd(),WM_LBUTTONUP,0,0);
????strcpy(BUF,filename);
????pedit->SendMessage(WM_SETTEXT,0,(LPARAM)BUF);
????return;
???}
??}
??hWndChild=::GetWindow(hWndChild,GW_HWNDNEXT);?
?}
}

//messagebox輸出非字符串的數(shù)據(jù)

?CString? strTmp;??
?strTmp.Format("窗口句柄=%0x",pWnd->m_hWnd);??
?AfxMessageBox(strTmp);

?

?

MFC中菜單變灰

方法1:有UpdateCmdUI句柄時(shí)

定義一個(gè)BOOL變量m_b來(lái)標(biāo)志菜單項(xiàng)是否有效,該菜單項(xiàng)響應(yīng)UPDATE_COMMAND_UI消息,在消息處理函數(shù)中pCmdUI->Enable(m_b);以后你根據(jù)需要來(lái)設(shè)置m_b的值,就可以使菜單是否可用。在一個(gè)函數(shù)中可以控制多個(gè)菜單

方法2:沒(méi)有UpdateCmdUI句柄時(shí)

MFC中缺省的習(xí)慣是當(dāng)沒(méi)有UpdateCmdUI句柄時(shí)程序是使能(Enable)菜單,菜單自動(dòng)變成使能,只要關(guān)掉缺省值就可以了,把下面的代碼加入你的程序
CMainFrm::CMainFrm
{
// Other stuff
this->m_bAutoMenuEnable = false;
}??

然后在消息響應(yīng)函數(shù)中添加如下代碼:

CMenu* m_menu = GetMenu();
CMenu* submenu = m_menu->GetSubMenu(0);
submenu->EnableMenuItem(ID_FILE_NEW, MF_BYCOMMAND | MF_GRAYED);

?

CFrameWnd::m_bAutoMenuEnable
//Controls automatic enable and disable functionality for menu items.
//CFrameWnd類中的BOOL型數(shù)據(jù)成員,默認(rèn)為T(mén)RUE。
//如果m_bAutoMenuEnable設(shè)為T(mén)RUE,則如果某菜單項(xiàng)在當(dāng)前命令路徑中無(wú)法找到相應(yīng)的命令消息控制函數(shù),則此時(shí)應(yīng)用程序框架便禁用該菜單項(xiàng),并將該菜單項(xiàng)設(shè)為灰色。
//如果m_bAutoMenuEnable設(shè)為FALSE,便可以禁止上敘自動(dòng)禁用無(wú)控制函數(shù)菜單項(xiàng)的特性。

易出錯(cuò)不推薦使用

轉(zhuǎn)載于:https://www.cnblogs.com/carekee/articles/2334604.html

總結(jié)

以上是生活随笔為你收集整理的MFC遍历窗体所有的控件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。