并不是每次都调用CPrintDialog::OnInitDialog
CPrintDialog::OnInitDialog does not get called every time
我使用MyPrintDialog扩展CPrintDialog。问题是:当应用程序尝试打开打印对话框时,MyPrintDialog的OnInitDialog()方法不会在第一次被调用。
我试图从OnInitDialog()方法中设置打印对话框中的打印机名称。打印机名称由我想要用于打印的应用程序中的用户指定。
My 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并在其中添加了一个复选框。
如果你的意思是说OnInitDialog()
而不是OnInit()
,那么你的问题可能是由这篇MSKB文章解释的,尽管它似乎在VC6 SP1之后已经修复了。
相关文章:
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- 循环挂起迭代的 std::擦除 on std::list
- SIGSEGV on Boost UDP 套接字关闭 - tcache_get at malloc.c.
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- std::bind on statd::array 的运算符 []
- 您将如何连接"on the fly"文本+整数并将其传递给函数?
- 如何修复输出日志中的"EnableInput can only be specified on a Pawn for its Controller"错误
- VS2019 - Sudo Remote Debugging on Linux with Cmake project
- C++ library with Tensorflow on Android
- SFML 交叉编译 for Windows on Linux.
- How to recover system gcc compiler on centos 6
- Cmake with Flex/Bison on windows
- 按原样保存用户输入 - Ruby on Rails
- OpenAL C++ on Linux
- Boost::process on Windows - with MinGW?
- CMake on FindOpenGL.cmake 中的错误,当使用导入的目标 OpenGL::GLU?
- Utilization of atomic_flag on C++
- anaconda cythonize C++ on windows 10
- CMake & MinGW Compileilation on Windows,无需 -G "MinGW Makefiles"标志
- Windows Machine Learning (winML) on ARM