怎么让对话框支持竖直滚动条?
解决方案 »
- VC 串口通信,时钟同步求助!
- 在win32 console application中使用SHFileOperation函数需要加载什么库或者头文件
- 有没有什么第三方界面库可以实现软件界面的背景透明,就像VISTA系统下面的areo主题一样
- CMyDlg::OnSize(UINT nType, int cx, int cy)参数UINT是什么类型。
- 如何实现从MSN导出联系人的ActiveX控件?
- 请各位帮忙看看是什么原因?
- 如何可以不显示窗口,直接打印
- 我是菜鸟,问一个菜问题
- ****************HTML AND WORD****************
- 实现图像缩略图的最佳方式,大家快来讨论!
- 动画对话框的定位问题
- 关于文件读的问题
添加{}内的代码
void CChild_contactlist::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int h = 10;
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_ALL;
GetScrollInfo(SB_VERT,&si);
int nOldPos = si.nPos; switch(nSBCode)
{
case SB_LINEDOWN:
si.nPos = min(si.nPos+h, si.nMax);
break;
case SB_PAGEDOWN:
si.nPos = min(si.nPos+h*10, si.nMax);
break;
case SB_LINEUP:
si.nPos = max(si.nPos-h, si.nMin);
break;
case SB_PAGEUP:
si.nPos = max(si.nPos-h*10, si.nMin);
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
si.nPos = si.nTrackPos;
break;
case SB_TOP:
si.nPos = si.nMin;
break;
case SB_BOTTOM:
si.nPos = si.nMax;
break;
}
SetScrollInfo(SB_VERT,&si);
GetScrollInfo(SB_VERT,&si); //重新获取新的位置 ScrollWindow(0, nOldPos - si.nPos);
}that's ok
May you succeed!
{
//CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
CDC* pDC;
pDC=GetDC();
rato=float((m_bitmapRect.right-m_bitmapRect.left)/vartorient.Size.x);
m_bitmapRect.bottom=m_bitmapRect.top+int(vartorient.Size.x*rato);
Draw(pDC,&m_bitmapRect); // Do not call CDialog::OnPaint() for painting messages
}void CArtDlg::OnArtparameter()
{
// TODO: Add your control notification handler code here
CDC dc;
CPrintDialog printDlg(FALSE);
short printQuality;
if(printDlg.DoModal()==IDCANCEL)
return;
printDlg.GetDefaults ();
DEVMODE *dm = printDlg.GetDevMode();
dm->dmOrientation = DMORIENT_LANDSCAPE;
dm->dmFields |= DM_ORIENTATION;
printQuality=dm->dmPrintQuality;
//将打印纸大小设为自定义
dm->dmPaperSize=NULL;
//定义打印纸的长宽
dm->dmPaperLength=vartorient.Size.y;
dm->dmPaperWidth=vartorient.Size.x;
dc.Attach(printDlg.CreatePrinterDC());
dc.m_bPrinting=TRUE;
CString strTitle;
strTitle.LoadString (AFX_IDS_APP_TITLE);
DOCINFO di; // DOCINFO中有相关的打印信息
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = strTitle;//设置标题
if(dc.StartDoc(&di)==-1)// 开始打印
{
MessageBox("StartDoc error");
return ;
}
int horze=dc.GetDeviceCaps (HORZRES);
int vertical=dc.GetDeviceCaps (VERTRES);
//加入修改信息的语句
dc.StartPage();
rato=float((printQuality)/25.4);
//m_bitmapRect.bottom =m_bitmapRect.top+int(vartorient.Size.y *rato);
Draw(&dc,&m_bitmapRect);
dc.EndPage();
dc.EndDoc();
}
可以帮我看看这段代码吗?我向竖着打印,可是打出来的老是横着的,怎么办?
我还会再给分的。