• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 请教一个ActiveX控件开发关于窗口的OnSize的问题!谢谢!

请教一个ActiveX控件开发关于窗口的OnSize的问题!谢谢!

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了onsize,mfc onsize,onsize函数,vc onsize,window.onsize等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请教一个ActiveX控件开发关于窗口的OnSize的问题!谢谢!
描述:

大家好,我现在要开发一个自己的控件,控件里面封装了ESRI公司开发的MapObjects2控件(这个是搞GIS系统开发用的,是一个成熟的产品控件),封装一些常用的方法,为了以后开发方便.但是遇到一个问题的,问题是这样的:
由于我自己的控件里面封装MapObjects2,所以,需要在我的控件大小发生变化的时候,让MaoObjects2控件充满我的控件,所以,我在我的控件的OnSize()里做了如下的工作:
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// TODO : Add Code for message handler. Call DefWindowProc if necessary.
CRect rect;
::GetClientRect(m_hWnd, &rect);
::SetWindowPos(::GetDlgItem(m_hWnd, IDC_MAP1), HWND_BOTTOM, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER | SWP_FRAMECHANGED);
return 0;
}
目的是每次Size大小发生变化,就让Map控件充满整个空间区域。但是,测试发现,填充的时候获取的矩形总是拖动窗口前的矩形,也就是说,填充的结果总是Size变化前的范围,而不是变化后的范围。我不知道原因出在哪里,想了好几个方法也解决不了。希望大家帮忙。谢谢。
另外,为了测试我的方法是否可行,我添加了一个 Edit 控件,然后,做了同样的工作,(完全相同的代码,一模一样,没有任何的区别)。发现 Edit 填充的范围就是Size变化后的范围,能够满足我一开始想要的效果:每次Size变化后,Edit就可以完全充满我的控件。
问题就是这样,不知道我说清楚了没有,请各位朋友帮忙。再次感谢!


解决方案1:

从LParam中取得窗口大小,具体参见MSDN,处理的时候判断一下参数中的大小是否与
当前大小一样大, 一般WM_SIZE最后一次传送的lParam就是当前窗口大小

解决方案2:

LRESULT CSimpleGrid::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if (!IsWindow())
return 0;
long nWidth  = LOWORD(lParam);
long nHeight = HIWORD(lParam);
m_wndGrid.SetWindowPos( HWND_TOP, 
                    0, 
0, 
nWidth, 
nHeight, 
SWP_NOACTIVATE | 
SWP_SHOWWINDOW );
return 0;
}

解决方案3:

哦~,
这么说,在OnSize函数内GetClientRect必然得到变化前的Size了。
那么,能不能自定义一个消息,WM_MYSIZE,然后在OnSize里发送这个消息,
在OnSize完成后,想必这个WM_MYSIZE就触发了,
那么在OnMySize里GetClientRect可能得到变化后的Size了。
只是设想,^_^


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 请问制作控件时,OnSize事件中设置控件区域为何出问题。
  • 求助:主窗口的OnSize中用子窗口的指针调用MoveWindow,子窗口的OnSize没有响应
  • 怎么样发送一个消息使OnSize函数工作呢?
  • 我新做的ATL工程为什么ONSIZE不好使呢?
  • 请教一个ActiveX控件开发关于窗口的OnSize的问题!谢谢!

相关文章

  • 2017-06-05 C++调用C#的COMDLL的COM事件问题
  • 2017-06-05 如何在线程中向对话框类发消息?
  • 2017-06-05 如何实现flash的无窗口效果?
  • 2017-06-04 webbrowsercom报错
  • 2017-06-04 寻windows标准控件文件是那个
  • 2017-06-04 请有经验的高手指点一下,ATL/COM最快上手需多长时间?
  • 2017-06-04 我知道这里高手如云,呵呵,各位有没有办法获取左面上所有元素的系统图标呢?
  • 2017-06-04 IDL文件是干嘛用的?
  • 2017-06-05 十万火急!请教在一个进程里,在播放AVI文件的同时运行其他线程,是否会影响播放AVI文件的速度?
  • 2017-06-04 DCOM如何配置权限??还是应该用COM+???

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 1000分求一服务程序!--0
    • IE控件使用的问题,100分,请进~
    • 傻瓜问题,线程如何调试,跟踪不进去呢?
    • 如何用VC写出使用WindowsAPI调用约定的动态库函数?
    • 我的cab包里不仅包含dll,还有一些图片声音等资源,inf要怎么写?
    • ActiveXGdi+的问题,不知有人碰到过没?着急啊!
    • SDK中如何响应WebBrowser的DocumentComplete事件
    • 在DLL中发布接口的问题
    • 基于Dsoframer,如何在MFC中实现获取ocx事件消息
    • 接了一个即时通讯的外包活,不知道怎么做,求各位有经验的大神指点

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有