能否用SDK模式,如像以下MFC的代碼一樣實現顯示打印對話框效果.
CPrintDialog Dlg(FALSE);
Dlg.DoModal();各位大俠能否舉個例子?

解决方案 »

  1.   

    BOOL PrintDlg(LPPRINTDLG lppd);
      

  2.   

    void CChildView::OnFilePrint() 
    {
    PRINTDLG PrintDlgStruct;

    PrintDlgStruct.hwndOwner = m_hWnd;
    PrintDlgStruct.hInstance = AfxGetApp()->m_hInstance;
    PrintDlgStruct.nCopies = 1;
    PrintDlgStruct.nMaxPage = 100;
    PrintDlgStruct.nMinPage = 1;
    PrintDlgStruct.Flags = PD_RETURNDC | PD_DISABLEPRINTTOFILE | PD_NOSELECTION; 
    PrintDlgStruct.lStructSize = sizeof(PrintDlgStruct) ;

    if (PrintDlg(&PrintDlgStruct) == IDOK)               //显示了对话框.
    {
    PrintDlgStruct.hDevNames=NULL;
    PrintDlgStruct.hDevMode =NULL;
    PrintDlgStruct.Flags =  PD_RETURNDEFAULT;  //让系统填充hDevNames和hDevNames的值.
    PrintDlgStruct.lStructSize = sizeof(PrintDlgStruct) ;
    PrintDlg(&PrintDlgStruct);

    DEVMODE *pDevMode = (DEVMODE *)PrintDlgStruct.hDevMode;  //为什么转换成DEVMODE*指针时,转换的结果不对?我该怎样得到正确的DEVMODE 结构?
    char szBuffer[36]; 
    for (int i=0;i<=36;i++)
    {
    szBuffer[i] = (char)pDevMode->dmDeviceName[i];
    }

    MessageBox(szBuffer); }
    else
    MessageBox("Cancel");
    }