可以改变自已程序的界面,将每个控件的位置都计算出来
看下面这个例子,在窗口大小改变时,窗口里的控件也跟着调整位置
void CEmail::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if(nType==SIZE_RESTORED && cx>=522 && cy>=386)
{
CWnd pwnd;
CRect rect;
pwnd=(CWnd )GetDlgItem(IDC_COMBO_CATALOG);
if(pwnd==NULL)return;
pwnd->GetWindowRect(&rect);
ScreenToClient(&rect);
rectright=cx-15;
rectleft=rectright - 90;
pwnd->MoveWindow(&rect,TRUE);
pwnd=(CWnd )GetDlgItem(IDC_LIST);
if(pwnd==NULL)return;
pwnd->GetWindowRect(&rect);
ScreenToClient(&rect);
rectright=cx-10;
rectbottom=recttop+cy/3+20;
pwnd->MoveWindow(&rect,TRUE);
((CListCtrl )pwnd)->SetColumnWidth(1, rectWidth()-274);
pwnd=(CWnd )GetDlgItem(IDC_RICHEDIT);
if(pwnd==NULL)return;
recttop=rectbottom+5;
rectbottom=cy-10;
pwnd->MoveWindow(&rect,TRUE);
}
}
使用Win32 API实现
1在创建窗口时全屏
hWnd = CreateWindow( TEXT ("Class"),TEXT ("Title"), WS_POPUP,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),NULL,NULL,hInstance,NULL);
2在事件回调中全屏
SetWindowPos( hWnd, HWND_TOPMOST, 0, 0, GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);
函数功能:该函数检索指定坐标点的像素的RGB颜色值。
函数原型:COLORREF GetPixel(HDC hdc, int nXPos, int nYPos)
参数
hdc:设备环境句柄。
nXPos:指定要检查的像素点的逻辑X轴坐标。
nYPos:指定要检查的像素点的逻辑Y轴坐标。
返回值:返回值是该象像点的RGB值。如果指定的像素点在当前剪辑区之外;那么返回值是CLR_INVALID。
GetCursorPos函数可以得到当前鼠标的坐标点。
函数功能:该函数检取光标的位置,以屏幕坐标表示。
函数原型:BOOL GetCursorPos(LPPOINT lpPoint)。
参数
IpPoint:POINT结构指针,该结构接收光标的屏幕坐标。
在MainFrame里改
把它放到return TRUE;的前面
在PreCreateWindow中修改cs的样式
csstyle=WS_OVERLAPPEDWINDOW;
cscx=::GetSystemMetrics(SM_CXSCREEN);
cscy=::GetSystemMetrics(SM_CYSCREEN);
用MoveWindow函数把所有控件的X和Y都移动到它现在显示的比(现在分辨率/正常显示分辨率)倍
GetClientRect只是获得程序中客户区的大小。程序的边框、标题条、工具条,状态条等都不包括的。
获得屏幕分辨率大小用
int xSize = ::GetSystemMetrics(SM_CXSCREEN);
int ySize = ::GetSystemMetrics(SM_CYSCREEN);
或者:
CRect rect;
::GetWindowRect(::GetDesktopWindow(),&rect);
补充:
你看错了,横向才差了6个像素(1280-1274),边框差不多
纵向是差了30,因为纵向要去除标题条、工具条,状态条等
首先,用CFile需要自己处理文件头和文件信息,比较繁琐,处理BMP,可以用LoadImage获取位图句柄或者CImage类处理更方便。
CFile处理,获取指针后要自己解析文件头,BITMAPFILEHEADER和BITMAPINFOHEADER,这两个结构读取成功后,就可以从结构中取得宽高信息了,你说的两个是像素为单位的,还有其它信息可以对比,注意的是,实际位图大小中,有4整数倍取整,因此宽高相乘可能不等于大小。
以上就是关于如何让vc程序自动适应屏幕分辨率大小全部的内容,包括:如何让vc程序自动适应屏幕分辨率大小、VC 软件设计的软件如何根据电脑分辨率实现界面全屏显示、VC++如何获取当前坐标点的像素值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)