• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

关于窗口的一个问题(有一定深度哦)

jxhnuaa 2003-12-12 10:00:03
我在视图中又生成一个继承于CWnd的类(叫着CMyWnd),即该子窗口(CMyWnd对象)浮动在视图之上。
子窗口是这样定义的
CMyWnd : public CWnd
{
省略...
}
构造函数是这样的
CMyWnd::CMyWnd(CView *pParent,CRect crSize)
{
m_hMoveCursor = AfxGetApp()->LoadCursor(IDC_CURSORMOVE);
Create(AfxRegisterWndClass(NULL,m_hMoveCursor), NULL,
WS_VISIBLE|WS_CHILD,
rcSize,nvdViewDoc.pView,ID_FLOAT_WND)
}

我的问题是我要该子窗口可以像视图一样拉伸,怎样实现?
求求哪位高人指教,不胜感激
...全文
49 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jxhnuaa 2003-12-15
wangjinwang(王进)你好
我试过了,你的方法还是不行
回复
roscoe 2003-12-15
你在WM_NCHISTEST 修改返回去码,去欺骗WINDOWS看看行不行.这是我认为最简单的方法.
回复
checkyvc6 2003-12-15
WS_THICKFRAME
处理一下WM_NCPAINT
重画一下边框就可以了
回复
jxhnuaa 2003-12-13
cpsoft(狂豹)谢谢你,
不过你说的只是创建窗口的样式,这我也知道呀,我要的是有没有办法实现我的功能?即让创建出来的窗口没有边界,又可以让用户在界面上用户鼠标进行拉伸
回复
phoenixli 2003-12-13
是够深了。楼主还得出来才行啊。
回复
cpsoft 2003-12-13
WS_VSCROLL 创建有垂直滚动条的窗口
WS_POPUP 弹出式窗口

其它的,没必要说了,自己查书吧!(够深度吧?给分)
回复
cpsoft 2003-12-13
WS_DLGFRAME 对话框样式的窗口(不能有标题栏)
WS_HSCROLL 创建有水平滚动条的窗口.
WS_MAXIMIZE 创建初始最大化的窗口(好象不灵)
WS_MAXIMIZEBOX 创建有最大化按扭的窗口,就是右上角那个
WS_MINIMIZE和WS_MINIMIZEBOX不用我说了吧
WS_OVERLAPPED 创建有标题栏的窗口
WS_OVERLAPPEDWINDOW 几种样式的组合(一般的基本的窗口样式)
WS_SIZEBOX 和WS_THICKFRAME相同调整大小边框的窗口
回复
cpsoft 2003-12-13
既然你说要有深度,我就给你点深度:

如果你学过Windows API 编程就会知道Windows中的任何窗口都是由Windows的API,CreateWindow创建出来的.而你传给Create的WS_VISIBLE|WS_CHILD|WS_THICKFRAME实际上就是CreateWindow函数中的DwStyle参数其一共有27个值组合.
WS_VISIBLE 创建初始可视窗口
WS_CHILD 创建子窗口和控件,不能和WS_POPUP共用
WS_BORDER 创建细线边框的窗口
WS_CAPTION 创建有标题栏的窗口
WS_CHILDWINDOW 和WS_CHILD一样
WS_CLIPCHILDREN 绘制时剪切控件子窗口的周围.
WS_DISABLED 创建最初禁用接收用户输入的窗口.
回复
cpsoft 2003-12-13
把几种窗口样式组合一下就可以得到你要的结果啊!如果还是不行,那就只有消息响应了.呵呵,用Windows API好象也只有这两种方法!
回复
孤必有邻 2003-12-13
这样试过吗?
DWORD dwStyle = WS_VISIBLE|WS_CHILD;
dwStyle |= WS_SIZEBOX;
dwStyle &= ~WS_BORDER;
Create(AfxRegisterWndClass(NULL,m_hMoveCursor), NULL,
dwStyle,rcSize,nvdViewDoc.pView,ID_FLOAT_WND);
回复
zjg751206 2003-12-13
有个setWindowLong是设置窗口的性质的.您可以试试,只要写对了参数,就可以实现您要的效果了
回复
cpsoft 2003-12-13
给样式当然不算深,关键是MFC与API的调用机制,连侯捷都说深了,你还说不深??(深入浅出MFC)
回复
Poseidon2 2003-12-13
给几个样式就算有深度了
回复
思危 2003-12-12
没有你说的那么难,有上面说的就可以作出来了
回复
roscoe 2003-12-12
在CMyWnd中处理
比方说你建一个无标题,无边框的窗口,
然后在MOUSE MOVE|UP|DOWN等事件中检测光标位置,处理拉伸.
回复
jxhnuaa 2003-12-12
我要求的用户可以用鼠标在界面上可以拉伸子窗口,不是程序改变子窗口的大小
回复
cadinfo 2003-12-12
.大概如此,加入WM_HITTEST,加入WM_SIZE消息处理,只是建议没有实际做过
回复
jxhnuaa 2003-12-12
我已经知道怎办了Create函数参数改为:
Create(AfxRegisterWndClass(NULL,m_hMoveCursor), NULL,
WS_VISIBLE|WS_CHILD|WS_THICKFRAME,rcSize,pParent,ID_FLOAT_WND)
即窗口样式中加上WS_THICKFRAME就可以了,
但却引来的讨厌的边框,有没有办法使其没有边框,又可以拉伸的方法
回复
jxhnuaa 2003-12-12
构造函数拷贝错了,正确的是这样的:
CMyWnd::CMyWnd(CView *pParent,CRect crSize)
{
m_hMoveCursor = AfxGetApp()->LoadCursor(IDC_CURSORMOVE);
Create(AfxRegisterWndClass(NULL,m_hMoveCursor), NULL,
WS_VISIBLE|WS_CHILD,rcSize,pParent,ID_FLOAT_WND)
}
我生成的子窗口已经在视图上了,可以看得见的,我想让它可以拉伸
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2003-12-12 10:00
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……