一个简单的单文档程序(工程名cai),我在CCaiView中添加了一个消息处理函数。
void CCaiView::OnLButtonUp(UINT nFlags, CPoint point)
{
HDC hdc;
hdc=::GetDC(::GetParent(m_hWnd));
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(::GetParent(m_hWnd),hdc); CView::OnLButtonUp(nFlags, point);
}
其中m_ptOrigin是已经添加到CCaiView类的private成员,类型为Point,并且在void CCaiView::OnLButtonDown(UINT nFlags, CPoint point)中已记录下起点。 请问为什么子窗口获得父窗口DC句柄后可以同时在子视窗口和父窗口画图,消息是从不同窗口获取的啊!!(我开始以为是画了两条线,是这样吗)
void CCaiView::OnLButtonUp(UINT nFlags, CPoint point)
{
HDC hdc;
hdc=::GetDC(::GetParent(m_hWnd));
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(::GetParent(m_hWnd),hdc); CView::OnLButtonUp(nFlags, point);
}
其中m_ptOrigin是已经添加到CCaiView类的private成员,类型为Point,并且在void CCaiView::OnLButtonDown(UINT nFlags, CPoint point)中已记录下起点。 请问为什么子窗口获得父窗口DC句柄后可以同时在子视窗口和父窗口画图,消息是从不同窗口获取的啊!!(我开始以为是画了两条线,是这样吗)
解决方案 »
- 请教:关于TCP、UDP、IP协议的解码,网卡和操作系统的作用是啥。
- vc如何实现vb的str(i as long)函数功能?
- 发个小问题,关于_stscanf的用法。
- vc8 里有没有像CString那样可以存储可变长数据的类型?
- 请问大家:那里有磁带备份的例子
- 在有关TCP的Windows网络编程中如何得到通讯对方的地址???
- 请教高手:型号为 es2838s c030 的猫的驱动程序到哪下载?
- vc 高手请进:
- 【IGMP】V3如何实现?
- Tangram发布开源版本,有兴趣者请进,下载地址在www.codeplex.com/tangram;https://sourceforge.net/projects/tangramproject...
- 怎样在改变CComboBox的选项的时候 得到改变以前选择项的索引
- 怎样去掉从BOOL到bool 在编译时的Warning
这里的m_hWnd指的是什么?
现在的值指的是视窗口的句柄。
hdc=::GetDC(::GetParent(m_hWnd));
m_hWnd是本窗口的句柄,实际上就是CCaiView的句柄
::GetParent(m_hWnd)取得的应该是框架的句柄。CMainFrm的。::GetDC(::GetParent(m_hWnd))就是取得父窗口的设备环境句柄。
windows 用了一个聪明的方法,还是一个屏幕,然后将他分成"区域",这些"区域"用一个描述来表示,当然这其中不只是存放位置,大小等信息。程序在绘图时只是在自已的区域中绘制,因为API 底层的检测机制所以你不会绘制到区域以外的地方。但是如果是子窗全因为拥有和父窗全相同的区域,所以父窗体绘制的图像,会在子窗体区域中显示,但为什么我们一般情况下看不到呢,因为在父窗体刷新时,子窗体也刷新了,所以是看不出来的。如果你出现了上面情况 说明你的刷新机制有问题!
子窗口收到鼠标按下消息,然后你的鼠标移动操作又被发送到子窗口。你的鼠标移动到主窗口后,主窗口收到鼠标移动消息。你在主窗口放开鼠标,鼠标释放消息又被发送到主窗口。
其中鼠标移动消息是连续多个。鼠标按下,在两个窗口间移动的时候,有时候还有dropin 和dropout消息。