我正在使用MyPrintDialog擴展CPrintDialog。 問題是: 應用程序嘗試打開「打印」對話框時,MyPrintDialog的OnInitDialog()方法在第一次不會被調用。CPrintDialog :: OnInitDialog不會每次調用
我想從OnInitDialog()方法設置打印對話框中的打印機名稱。 打印機名稱由用戶在我想用於打印的應用程序中指定。
我的OnInitDialog()方法
CComboBox *wndCmbBox = (CComboBox *)GetDlgItem(IDC_PER_USER); /*IDC_PER_USER which is ID of Prin Dialog combo */
if(wndCmbBox != NULL)
{
wndCmbBox->SelectString(-1, PrinterName);
}
或者是他們的任何方式來設置用戶選擇打印機名稱在打印對話框..?
請說明。
編輯
是,通過的OnInit()我的意思是OnInitDialog()
我使用VS 2012與Win7的32位。我只面對DoModel()
這個問題。下一個連續DoModel()
方法調用OnInitDialog()
。 我已經調試的問題,並發現了一些
INT_PTR CALLBACK AfxDlgProc(HWND hWnd, UINT message, WPARAM, LPARAM)
{
if (message == WM_INITDIALOG)
{
// special case for WM_INITDIALOG
CDialog* pDlg = DYNAMIC_DOWNCAST(CDialog, CWnd::FromHandlePermanent(hWnd));
if (pDlg != NULL)
return pDlg->OnInitDialog();
else
return 1;
}
return 0;
}
以上是DLGCORE.CPP的功能。當問題被複制時,我觀察到DYNAMIC_DOWNCAST
返回NULL
。
請注意,我已經定製了CPrintDialog並在其中添加了一個複選框。我懷疑它是否會造成這個問題。
您可以顯示何時以及如何創建模態對話框? – 2013-03-22 05:45:59
另外,如果使用提供的CPrintDialog而不是定製版本,它是否也具有相同的行爲方式?所以,你有沒有證實你的定製是*不是*責備? – 2013-03-22 05:51:17
請在[this]找到文件(https://docs.google.com/file/d/0B1cKJCC6FFs6SzBlMHhGTi16dzQ/edit?pli=1)位置 – 2013-03-22 06:31:03