我在windows2000中用EnumForms API函数可以获取打印机支持纸张的列表,可这个函数不支持windows98,不知那位兄弟有这方面的经验,98下如何获取打印机纸张列表。不胜感激!

解决方案 »

  1.   

    我对这方面也没太大研究
    一个可行的方案是重载打印对话框,就是建立一个派生于CPrintDialog的对话框,上面放置一个组合框,组合框ID值是 1137,这个组合框里面的数据就是打印纸张的列表了:)一个不像样子的代码,你自己研究吧int ShowPrintDialog()
    {
    // TODO: Add your command handler code here
    CPrintDialog PD(TRUE);
    g_pPD=&PD;
    PD.m_pd.hInstance=AfxGetInstanceHandle();
    PD.m_pd.lpSetupTemplateName=MAKEINTRESOURCE(IDD_PLTDLL_PRINTDLG); PD.m_pd.Flags |= PD_ALLPAGES ;
    PD.m_pd.Flags |= PD_NOPAGENUMS ;
    PD.m_pd.Flags |= PD_NOSELECTION ;
    PD.m_pd.Flags |= PD_USEDEVMODECOPIESANDCOLLATE;
    PD.m_pd.Flags |= PD_ENABLESETUPTEMPLATE;
    PD.m_pd.Flags |= PD_ENABLESETUPHOOK;
    PD.m_pd.Flags |= PD_PRINTSETUP;
    PD.m_pd.lpfnSetupHook=(LPSETUPHOOKPROC)SetupHookProc; PD.GetDefaults();
    g_lpDevMode = (LPDEVMODE)::GlobalLock(PD.m_pd.hDevMode);
    GetPrinterSetup();
    GlobalUnlock(g_lpDevMode ); if(PD.DoModal()==IDOK)