如何让vc程序自动适应屏幕分辨率大小

如何让vc程序自动适应屏幕分辨率大小,第1张

可以改变自已程序的界面,将每个控件的位置都计算出来

看下面这个例子,在窗口大小改变时,窗口里的控件也跟着调整位置

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);

GetPixel函数可以得到指定坐标点的像素值。

函数功能:该函数检索指定坐标点的像素的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++如何获取当前坐标点的像素值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9635130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存