如何为在 MFC 中获取当前的打印机设置

如何为在 MFC 中获取当前的打印机设置,第1张

获取对当前的打印机设置访问权限的唯一办法是通过存储在 CWinApp 中的 m_hDevMode 和 m_hDevNames 结构。通过 PRINTDLG 结构的指针传递给从 CWinApp 类派生的类的 GetPrinterDeviceDefaults() 成员函数访问这些成员。由于返回值、 hDevMode 和 hDevNames,HGLOBAL 变量:: GlobalLock() 必须调用以返回指向结构的指针。使用该指针,您可以从该结构以确定打印机的当前状态中提取信息。请这些结构的内容,参阅 DEVMODE 并且 DEVNAMES 在 SDK 联机帮助以获取更多信息。

下面的代码示例将返回当前打印机的页面大小创建与打印机设置 CDC 对象上使用 GetDeviceCaps() 的 CView 派生类的成员函数︰

/ Compile options needed: none

/

BOOL CMyView::GetPageSize(CSize &nRetVal)

{

PRINTDLG FAR pPrintDlg = new PRINTDLG;

BOOL bRet = FALSE;

// Get the current printer's settings

if(AfxGetApp()->GetPrinterDeviceDefaults(pPrintDlg))

{

// Get pointers to the two setting structures

DEVNAMES FAR lpDevNames =

(DEVNAMES FAR )::GlobalLock(pPrintDlg->hDevNames);

DEVMODE FAR lpDevMode =

(DEVMODE FAR )::GlobalLock(pPrintDlg->hDevMode);

// Get the specific driver information

CString szDriver((LPTSTR)lpDevNames +

lpDevNames->wDriverOffset);

CString szDevice((LPTSTR)lpDevNames +

lpDevNames->wDeviceOffset);

CString szOutput((LPTSTR)lpDevNames +

lpDevNames->wOutputOffset);

// Create a CDC object according to the current settings

CDC pDC;

pDCCreateDC(szDriver, szDevice, szOutput, lpDevMode);

// Query this CDC object for the width and height of the current

// page

nRetValcx = pDCGetDeviceCaps(HORZSIZE);

nRetValcy = pDCGetDeviceCaps(VERTSIZE);

// Get rid of the CDC object

pDCDeleteDC();

// Unlock the pointers to the setting structures

::GlobalUnlock(pPrintDlg->hDevNames);

::GlobalUnlock(pPrintDlg->hDevMode);

bRet = TRUE;

}

delete pPrintDlg;

return bRet;

}

我以前写的,获取系统所有进程信息:

HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

PROCESSENTRY32 procList;

procListdwSize=sizeof(PROCESSENTRY32);

BOOL bRet=Process32First(hSnapshot,&procList);

int m_ProcessCount; 进程数

CString id,threads;

while(bRet)

{

m_ProcessList为CListCtrl控件变量

m_ProcessListInsertItem(m_ProcessCount,procListszExeFile);

idFormat(_T("%d"),procListth32ProcessID);

m_ProcessListSetItem(m_ProcessCount,1,LVIF_TEXT,id,0,0,0,0);

threadsFormat(_T("%d"),procListcntThreads);

m_ProcessListSetItem(m_ProcessCount,2,LVIF_TEXT,threads,0,0,0,0);

m_ProcessCount++;

bRet=Process32Next(hSnapshot,&procList);

}

CloseHandle(hSnapshot);

CString proc;

procFormat(_T("进程数:%d"),m_ProcessCount);

CDialog::GetDlgItem(IDC_ProcessText)->SetWindowTextW(proc);

仅供参考,使用前需修改。

在哪里想获得了直接调用入校函数就可以了

CRect rc;

GetWindowRect(&rc);

rcWidth();获得宽度

rcHeight();获得高度

首先要知道这个控件的ID,通过ID来访问控件

要想获得控件上的文本,可以用GetDlgItemText这个函数

函数原型是int GetDlgItemText( int nID, CString& rString ) const;

第一个参数是控件的ID,第二个参数是用来接收控件文本的字符串(CString类型的)

具体就是先AllocConsole一个控制台用GetStdHandle获取控制台句柄然后就可以用ReadConsole或者ReadConsoleInput读取控制台输入也可以用WriteConsole或者WriteConsoleOutput向控制台输出最后将控制台FreeConsole掉

以上就是关于如何为在 MFC 中获取当前的打印机设置全部的内容,包括:如何为在 MFC 中获取当前的打印机设置、mfc 如何 获取 系统的任务列表 或 进程 列表、MFC中获取dialog窗体的宽度及大小等信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9387102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存