Saturday, August 12, 2006

Programming tips

Print:

CPrintDialog dlg(FALSE);
if (dlg.DoModal() != IDOK)
{
return;
}
CRect rect;
CDC dc;
GetWindowRect(rect);
dc.Attach(dlg.GetPrinterDC());
dc.m_bPrinting = TRUE;
dc.StartDoc(_T("Title"));
dc.StartPage();

dc.SetMapMode(MM_ANISOTROPIC);
CSize size = CSize(800, 560);
dc.SetWindowExt(size);

int xLogPixPerInch = dc.GetDeviceCaps(LOGPIXELSX);
int yLogPixPerInch = dc.GetDeviceCaps(LOGPIXELSY);

long xExt = (long)size.cx * xLogPixPerInch/80;
long yExt = (long)size.cy * yLogPixPerInch/80;
dc.SetViewportExt((int)xExt, (int)yExt);

dc.BitBlt(0,0,rect.Width(),rect.Height(),GetWindowDC(),0,0,SRCCOPY);
dc.EndPage();
dc.EndDoc();


Simulate keyboard:

// Simulate key down: ALT+PRINTSCREEN
keybd_event(VK_MENU, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_SNAPSHOT, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
// Simulate key release
keybd_event( VK_SNAPSHOT, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
keybd_event(VK_MENU, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);

No comments: