像素大小?
int nScreenWidth, nScreenHeight;nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
物理尺寸无法简单获取,要么使用驱动级底层库,要么需要进行rain0级的驱动开发。
对于这个问题你必须首先知道:
1,你要知道系统自身是设置过窗口的显示的位置的,就在CreateWindow的时候,但是你最好还是不要改那个位置,因为那是Microsoft给我们提供的源代码,你把那个改了之后,那么以后你所有的窗口的显示都是你现在的设置了;
2,必须是窗口创建成功后的,你才能设置它的位置,就像是:当一个东西不存在的时候你是不能对它作任何要求的;
3,你要找到窗口刚刚创建成功时是在哪个地方,显示的时候是在什么地方,这个我可以告诉你,是在Instance()函数的里面完成的,但是,这只是把这个应用程序实例化了,这个里面只有一个DoModal(),基本上这个里面是改不了什么东西的,还有一个位置就是OnInitDialog()函数,它是来初始化这个Dialog的,自然它的显示位置和大小都是可以控制的,那么你在此处调用MoveWindow()是可以的。
至于还有一个函数是SetWindowPos(),这个我刚试过了,对与对话框的应用程序是不行的,这应该是单文档和多文档的应用程序中使用d出式窗口的时候可以使用。
在OnInitDialog()这个里面使用MoveWindow(1,1,100,100)就可以显示在(1,1)这个位置上显示一个宽100,高100的对话框了。。。。
你的思路不对
第一 直接把WriteLog里的值赋值给m_Log 然后刷新edit值就可以看见
第二 直接写个WriteLog函数 把内容赋值给m_Log 刷新edit值也可以
在初始化函数里你什么都没有 也不明白你说的关联是什么意思
把一个函数跟一个变量关联? 怎么个关联法?
GetCursorPos获取的是屏幕坐标,GetClientRect是窗口坐标,两个坐标系不匹配,PtInRect结果当然错误。
你这个程序的正确做法:
PtInRect判断应该放在函数首部,如果这个判断返值为FALSE,那么后面的坐标计算根本没有必要,效率提升不说,还避免了坐标系映射之类的可能产生的影响。
在OnMouseMove里面,GetCursorPos没用并且会降低效率。判断坐标应该使用函数参数来进行即可。
遇到坐标系不同的情况,可以使用ScreenToClient/ClientToScreen函数对,将坐标转换为相同的坐标系,再进行运算和判断。
用记事本打开工程目录下的rc文件
搜索你的控件ID,里面有记录
以编辑框为例,搜索IDC_EDIT1找到如下文字
EDITTEXT IDC_EDIT1,64,24,55,15,ES_AUTOHSCROLL
里面64,24是指控件左上角相对窗口左上角的座标,
55,15,是指控件的宽高
修改这里的数字,改成你想要的值,然后重新打开工程就行了
至于究竟要修改成多少,可以目测,也可以下载个电脑尺(JRuler)量一量
int nWidth=GetSystemMetrics(SM_CXSCREEN); int nHeight=GetSystemMetrics(SM_CYSCREEN); for(int i=0;i<nWidth;i++) { for(int j=0;j<nHeight;j++) { HDC hDC = ::GetDC(NULL); //获取屏幕DC //2、 获取当前鼠标位置像素值 CPoint pt; ptx=nWidth; pty=nHeight; COLORREF clr = ::GetPixel(hDC, ptx, pty); if() //你要做的判断 { } } }
以上就是关于MFC怎么获得当前屏幕大小全部的内容,包括:MFC怎么获得当前屏幕大小、MFC中怎样将设置d出窗口在屏幕的位置、如何用VC++2010编写一个获取屏幕分辨率的MFC 以下是我的编写过程,实在进行不下去了,求指导!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)