我想要做的是在創建一個對話框DoModal()
並按下框中的確定退出之後,返回一個自定義值。例如,用戶可以在對話框中輸入幾個字符串。我可以從對話框的DoModal函數返回自定義值嗎?
2
A
回答
8
您不能更改DoModal()
函數的返回值,即使可以,我也不會推薦它。這不是這樣做的慣用方式,如果您將其返回值更改爲字符串類型,則會失去查看用戶何時取消對話框(在這種情況下,返回的字符串值應完全忽略)的功能。 。
相反,添加其他功能(或多個)到您的對話框類,像GetUserName()
和GetUserPassword
,再經過DoModal
回報IDOK
查詢這些功能的價值。
例如,顯示的對話框和處理用戶輸入可能是這樣的功能:
void CMainWindow::OnLogin()
{
// Construct the dialog box passing the ID of the dialog template resource
CLoginDialog loginDlg(IDD_LOGINDLG);
// Create and show the dialog box
INT_PTR nRet = -1;
nRet = loginDlg.DoModal();
// Check the return value of DoModal
if (nRet == IDOK)
{
// Process the user's input
CString userName = loginDlg.GetUserName();
CString password = loginDlg.GetUserPassword();
// ...
}
}
0
我不認爲這是可能的(或合理的)。 DoModal返回一個INT_PTR,通常用於瞭解用戶如何退出對話框(按OK,取消,出現錯誤...)。做到這一點的方法是有對話設置和對話的調用者可以訪問的公共成員或函數來知道值。 像這樣:
CMyDialog dlg;
if(dlg.DoModal()==IDOK)
{
CString str1 = dlg.m_String1;
CString str2 = dlg.GetString2();
}
這是你會用的CFileDialog,例如道路。
1
我在尋找答案,並同意在大多數情況下,您不會更改對話框的標準行爲。但是,如果您有幾個按鈕,並且希望特定地選擇頂部的OK與底部的OK,則可能有一種情況需要選擇用戶實際響應的內容。你知道的指標。
或者說,如果您希望稍微不同的結果,如果對話框在您的函數上運行時導致錯誤。如果返回的值不是IDOK,也可能是其他值。
我發現Dialog::EndDialog()
與細節,在這裏使用的例子:MSDN: Dialog::EndDialog
#include "ANewDialog.h"
void CMyWnd::ShowDialog()
{
CMyDialog myDlg;
int nRet = myDlg.DoModal();
if (nRet == 18 )
AfxMessageBox("Dialog closed. But there was a problem.");
}
/* MyDialog.cpp */
void CMyDialog::OnSomeButtonAction()
{
int nRet = 0;
// Run your function with return value;
nRet = YourReallyFunFunction();
EndDialog(nRet); // Set the return value returned by DoModal!
return; // The dialog closes and DoModal returns here!
}
相關問題
- 1. 從條件javascript函數返回自定義對話框
- 2. 自定義對話框返回數據
- 3. 自定義代碼函數可以返回兩個值嗎?
- 4. 我可以從另一個函數返回返回值嗎?
- 5. MFC DoModal對話框
- 6. 從WPF對話框返回自定義值
- 7. 自定義對話框EditText返回null
- 8. 自定義微調不顯示自定義對話框返回的值
- 9. JavaScript函數可以自行返回嗎?
- 10. 我可以從表值函數返回外鍵列嗎?
- 11. Codeigniter:我可以從同一個函數返回多個值嗎?
- 12. 我可以從遞歸搜索函數返回兩個值嗎?
- 13. 可以tr1 ::函數swallow返回值嗎?
- 14. STUFF函數可以返回NULL值嗎?
- 15. 自定義對話框返回布爾值
- 16. PyQt自定義對話框 - 如何獲取返回值?
- 17. 創建一個返回參數的自定義對話框
- 18. PyQt4:創建一個返回參數的自定義對話框
- 19. 帶自定義佈局的Android對話框:返回數據
- 20. 你可以重寫MessageDlg調用自定義TForm /對話框嗎?
- 21. ViewPager可以在自定義對話框中使用嗎?
- 22. 自定義函數,ggplot和返回值
- 23. 返回對話框自定義消息框中的結果
- 24. 返回用戶從自定義對話框中輸入的值c#
- 25. C++從函數返回自定義類
- 26. Common Lisp可以禁用指定函數的返回值嗎?
- 27. 我可以使活動對話框具有自定義動畫嗎?
- 28. 我可以使用自定義列表出現在警報對話框中嗎?
- 29. IBM Worklight - 我們可以爲Direct Update創建自定義對話框嗎?
- 30. 我可以避免在不返回無效的函數中返回值嗎?
THX了很多,這真的幫助 – Karudi 2011-05-24 14:34:25