用户要求用程序的方式修改网络打印机用纸的设定,打印机是指定的Ricoh IPSIO NX850和Ricoh IPSIO NX920。我下载了驱动,看了看打印机设置界面,设定的地方犄角旮旯的,估计用普通的Win32API可能无法完成。想用前几天一位兄弟教的FindWindow/SendMessage大法。但是不知道如何打开指定打印机的设置窗口,恳请高人显身。顺便问一下有没有方法获得网络打印机的IP地址?

解决方案 »

  1.   

    CPrintDialog dlg(FALSE);
    if(IDOK==dlg.DoModal()){
    CDC dcPrint;
    dcPrint.Attach(dlg.GetPrinterDC());
    DEVMODE* pdm=dlg.GetDevMode();
    pdm->dmOrientation=DMORIENT_LANDSCAPE;
    dcPrint.ResetDC(pdm); DOCINFO di;
    ::ZeroMemory(&di,sizeof(DOCINFO));
    di.cbSize=sizeof(DOCINFO);
    di.lpszDocName=_T("公司雇员表"); int nRow=m_Grid.GetFixedRowCount();
    while(nRow<m_Grid.GetRowCount()){
    dcPrint.StartDoc(&di);
    dcPrint.StartPage();
    PrintFrame(&dcPrint);
    PrintData(&dcPrint,nRow);
    dcPrint.EndPage();
    }
    dcPrint.EndDoc(); dcPrint.Detach();
    }
      

  2.   

    DEVMODE* pdm=dlg.GetDevMode();
    pdm->dmOrientation=DMORIENT_LANDSCAPE;
    dcPrint.ResetDC(pdm);这三行是用来设置纸张方向为横向.
    因为内容比较宽
      

  3.   

    看看哪个devmode能不能用,有的devmode不能用
      

  4.   

    先各位感谢,特别是MajorVon(IT民工) ,不过我的问题只是要打开打印机的属性设置对话框
    我用了AdvancedDocumentProperties这个API打开属性设置对话框,接下来就是用FindWindow/SendMessage的方法来设置了