Labyrinth分享 http://blog.sciencenet.cn/u/majian 致力于行人交通及疏散动力学研究

博文

vc画图

已有 5238 次阅读 2009-9-30 22:14 |个人分类:技术|系统分类:科研笔记

1,VC窗口大小及限制等:

from:http://hi.baidu.com/lamxc/blog/item/5d78e8f0de8f45c67931aa93.html

这里是以SDI的框架窗口为例子来试验的。
  1.创建一个最大化的窗口,并且不能改变其大小
  那么首先,
  app的InitInstance中
  在原来pMainFrame->ShowWindow(m_nCmdShow);
  的前面加上
  
  DWORD dwStyle = GetWindowLongm_pMainWnd->m_hWnd, GWL_STYLE);
  dwStyle &= ~(WS_SIZEBOX);
  //dwStyle &= ~(WS_MAXIMIZEBOX);
  //dwStyle &= ~(WS_MINIMIZEBOX);
  SetWindowLong(m_pMainWnd->m_hWnd, GWL_STYLE, dwStyle);
  m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
  
  然后把m_pMainWnd->ShowWindow(m_nCmdShow);可以删了
  如果把dwStyle &= ~(WS_SIZEBOX);注释会产生麻烦,就是窗口最大话显示的时候, 会把任务栏也遮了,实在是另人郁闷

这里把SetWindowLong(m_pMainWnd->m_hWnd, GWL_STYLE, dwStyle); 改变一下:

SetWindowLong(m_pMainWnd->m_hWnd, GWL_STYLE, dwStyle||2);就可以实现全屏显示;

2,VC里怎么改变客户区窗口大小

from:http://zhidao.baidu.com/question/33705480.html

首先通过类项导添加一个虚函数OnEraseBkgnd(CDC* pDC)
然后添加如下代码:
CDC dcComp;
dcComp.CreateCompatibleDC(pDC);

CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);

CRect rc;
GetClientRect(&rc);
BITMAP bitmap;
bmp.GetBitmap(&bitmap);

CBitmap *pOldbmp = dcComp.SelectObject(&bmp);
pDC->BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&dcComp,0,0,SRCCOPY);

// pDC->StretchBlt(0,0,rc.Width(),rc.Height(),&dcComp,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
dcComp.SelectObject(pOldbmp);
return TRUE;
// return CView::OnEraseBkgnd(pDC);
注:pDC->BitBlt(...)不压缩图片---窗口比图片小则显示图片的一部分
   pDC->StretchBlt(...)压缩图片---窗口多大图片就多大(但图片的显示质量不太好)

==================================================
那你就
BITMAP bitmap;
bmp.GetBitmap(&bitmap);
得到图片的大小后再SetWindoPos(...)设置窗口大小呗



https://wap.sciencenet.cn/blog-5422-259001.html

上一篇:MATLAB使用2
下一篇:社会力模型
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-2 08:51

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部