标签:
在duilib的demo中,看到这么一段:
1 LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) 2 { 3 MONITORINFO oMonitor = {}; 4 oMonitor.cbSize = sizeof(oMonitor); 5 ::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTOPRIMARY), &oMonitor); 6 CRect rcWork = oMonitor.rcWork; 7 rcWork.Offset(-rcWork.left, -rcWork.top); 8 9 LPMINMAXINFO lpMMI = (LPMINMAXINFO) lParam; 10 lpMMI->ptMaxPosition.x = rcWork.left; 11 lpMMI->ptMaxPosition.y = rcWork.top; 12 lpMMI->ptMaxSize.x = rcWork.right; 13 lpMMI->ptMaxSize.y = rcWork.bottom; 14 15 bHandled = FALSE; 16 return 0; 17 }
当时就对该消息的作用,有点不明白,对于将lparam转换成一个指针,来对参数进行修改这种方法感到很不解(好吧,我接触windows的东西看来太少了,总觉得他们的用法奇奇怪怪)
从名称上大概能看出这个消息是用来获取最大最小化的一些数值。。。
参考了这三个文章后:
对这个结构体有了大致了解,也知道上述代码其实是为了限制主窗口显示在屏幕范围内。
不过对于第7行,为什么要在做一次offset,就有点不解了,希望有筒子能告诉我啊。。。好吧,反正都没多少人看我博客的啦,还是自己黯然神伤吧
标签:
原文地址:http://www.cnblogs.com/riversHahaha/p/4573519.html