六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

更改已經打開的對話框的瀏覽路徑

[摘要]最近做的一個小東西要控制另外一個程序的文件保存對話框,目的是讓它只能保存到我指定的位置,:P,我要控制保存的數據。 我們知道用CFileDialog很容易設置對話框的初始瀏覽路徑,只要在CFileDialog類的OPENFILENAME結構里用自己的目錄改變lpstrInitialDir就可以...
   最近做的一個小東西要控制另外一個程序的文件保存對話框,目的是讓它只能保存到我指定的位置,:P,我要控制保存的數據。
   我們知道用CFileDialog很容易設置對話框的初始瀏覽路徑,只要在CFileDialog類的OPENFILENAME結構里用自己的目錄改變lpstrInitialDir就可以了:
CFileDialog dlg;
dlg.m_ofn.lpstrInitialDir="c:\\WINDOWS";//這里設置對話框的瀏覽目錄
dlg.DoModal();
可我要控制的是一個已經顯示的對話框,這個時候再用m_ofn.lpstrInitialDir來設置就沒有效果啦!我通過FindWindow找到了這個對話框的句柄,
CWnd * pWnd = FindWindow(NULL,"另存為");
if(pWnd)
{
   ....//這里該怎么改呢?
}
最開始想的方法就是用鉤子截獲對話框打開時的消息,在他顯示之前改變他的墨認路徑。呵呵,不想這么麻煩,等有時間再去試。后來從一個回帖里找到了一種比較方便的方法。
在實際操作中,如果我們在那個文件名編輯框中輸入一個目錄名,然后按確定按鈕,那個對話框并沒有被關閉,而是切換到那個新的目錄。通過這個方法我們就可以改已經顯示了對話框的瀏覽目錄。具體步驟如下:
1、首先保存那個文件名編輯框的值
2、在那個編輯框中設置新的目錄名
3、模擬鼠標單擊“確定”按鈕,這時候對話框切換到新的目錄
4、恢復原來編輯框的值
這里還需要注意的一點就是第二步設置目錄的時候要發送WM_SETTEXT消息,而不能直接用SetWindowText函數,因為它在跨進程使用的時候有問題,沒有效果。
下面是部分關鍵代碼:
CWnd * pWnd = FindWindow(NULL,"另存為");
CString sCtrlName;
CWnd *pedit;
CString filename;
TCHAR BUF[512];
if(pWnd)
{
     CWnd *pwnd=pWnd->GetWindow(GW_CHILD);//枚舉保存對話框的所有子控件
     char *buf=new char[512];
     while(pwnd!=NULL)
    {
         ::GetClassName(pwnd->GetSafeHwnd(),buf,512);//得到枚舉的控件是什么類型的,
         CString str=buf;   
         str.TrimRight();           
         if(str=="Edit")//如果枚舉到保存文件名的EDIT
        {
            pedit=pwnd;//保存EDIT句柄用來發消息
            pwnd->SendMessage(WM_GETTEXT,sizeof(BUF)/sizeof(TCHAR),(LPARAM)(void*)BUF);
            filename=BUF;//完成第一步保存原始的文件名
        }
        if(str=="Button")//枚舉到按鈕,有保存和取消按鈕
       {
            pwnd->SendMessage(WM_GETTEXT,sizeof(BUF)/sizeof(TCHAR),(LPARAM)(void*)BUF);
            //發消息得到按鈕的標題
            CString str=BUF;
            str.TrimRight();
            if(str=="保存(&S)")//如果是保存按鈕
            {   
               lstrcpy(BUF,(LPCTSTR)sPath);//sPath表示我們要設置的對話框瀏覽目錄
               //發消息設置文件名EDIT為我們的路徑名
               pedit->SendMessage(WM_SETTEXT,0,(LPARAM)BUF);
               //發消息模擬點擊保存按鈕
               ::SendMessage(pwnd->GetSafeHwnd(),WM_LBUTTONDOWN,0,0);
               ::SendMessage(pwnd->GetSafeHwnd(),WM_LBUTTONUP,0,0);
            }
        }
    }
     pwnd = pwnd->GetNextWindow();
}
pedit->SendMessage(WM_SETTEXT,0,(LPARAM)filename);//發消息還原EDIT里的文件名
delete buf; 


主站蜘蛛池模板: 欧美在线观看网址 | 亚欧乱色视频小说 | 丝袜美腿亚洲一区二区图片 | 欧美特级午夜一区二区三区 | 天天噜天天干 | 四虎精品在线观看 | 亚洲网站在线免费观看 | 天天爱添天天爱添天天爱添 | 最新91网址 | 亚洲成肉网 | 日本午色www高清视频 | 亚洲高清免费在线观看 | 伊人三区 | 青草青草久热精品观看 | 五月天狠狠操 | 午夜私人影院粉色视频我要 | 日本一二三区在线视频 | 日韩欧美中文字幕一区 | 日日狠狠 | 四虎精品视频在线永久免费观看 | 欧美在线视频免费看 | 亚洲成人激情在线 | 日韩国产有码在线观看视频 | 日韩免费视频一区 | 亚洲永久免费网站 | 日韩精品一区二区三区毛片 | 天天干夜夜欢 | 天天干天天拍天天射天天添天天爱 | 亚洲不卡在线播放 | 天天干天天操天天射 | 亚洲九色| 亚洲一区免费看 | 在线激情 | 日本成片免费高清 | 婷婷六月丁香色婷婷网 | 欧美亚洲另类久久综合 | 一级做a爱片久久毛片 | 人人福利 | 青春草视频免费观看 | 午夜精品久久久久久久第一页 | 亚洲成a人片在线观看www |