||
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(...)设置窗口大小呗
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-6-2 08:51
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社