Chinaunix首页 | 论坛 | 博客
  • 博客访问: 367992
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:39:20

yangzhi070:存在一个不足:显示"panal"的边框和背景色且未最小化时,当覆盖桌面的其它最大化窗口退出最大化让它显示出来的时候,"panel"的边框和背景不会同时显示。

可在CDynamicLayout类添加声明:
static UINT WhenPaint(LPVOID lParam);
实现:
UINT CDynamicLayout::WhenPaint(LPVOID lParam)
{
  CDynamicLayout* pThis = (CDynamicLayout*)lParam;
  Sleep(2);//释放CPU
  pThis->m_pMainPanel->Draw();

  return 0;
}
然后更改void CDynamicLayout::OnPaint()的实现为:
void CDynamicLayout::OnPaint()
{
   //m_pMainPanel->Draw( );
   AfxBeginThread( WhenPaint, this );
}

问题是在WindowProc内获取和处理对话框消息顺序引起的。如果让对话框先响应WM_PAINT消息,然后CDynamicLayout类再捕获和处理WM_PAINT消息,问题即可解决。上面用启动一个新的线程的方法来改变响应顺序,希望大家提出更好的解决办法。
(发表于2007-11-27 22:04:00)

xiexianyong380:该项目写的很是不错但有一个不足,存在着内存泄露 !
(发表于2007-12-13 16:30:00)

tiandongdong001:for yangzhi070,using Visual Leak Detector,modify it as below:
CDynamicLayout::~CDynamicLayout()
{
      if( m_pMainPanel != NULL )
delete m_pMainPanel;
//below is added ,CLayoutSplit* pLS must be ~()ed.
  POSITION pos;
  void* pLP; void* pLS;
  for( pos = m_mapSplit.GetStartPosition(); pos != NULL; )
  {m_mapSplit.GetNextAssoc( pos, pLP , pLS );
delete pLS;}//CLayoutSplit* pLS is del.
}
(发表于2007-12-19 22:36:00)

tiandongdong001:代码写得很好啊,学习中。下面写的是内存泄漏解决,调用CLayoutSplit析构即可。
(发表于2007-12-19 22:40:00)

yangzhi070:谢谢大家的支持

动态分配的CLayoutSplit应该是释放了的。
内存分配是在CLayoutPanel::GetSplit()里,
析构过程在CLayoutPanel::~CLayoutPanel()里最终调用了CLayoutPanel::ClearSplit(),释放内存。

(发表于2007-12-21 12:38:00)

yangzhi070:应该在CLayoutPanelFrame::~CLayoutPanelFrame()内调用Clear();
多谢大家提醒
(发表于2007-12-21 12:47:00)

boxman:非常不错
(发表于2007-12-21 16:30:00)

yangzhi070:有点被弄晕了,居然同意了“内存泄漏”的观点。请大家仔细看代码里的CLayoutPanel::~CLayoutPanel().

(发表于2007-12-30 11:46:00)

rbagglo:我解压后编译出现了个问题想请教:
--------------------Configuration: DynamicLayoutTest - Win32 Debug--------------------
Linking...
LINK : fatal error LNK1104: cannot open file "..\lib\DynamicLayout.lib"
Error executing link.exe.

DynamicLayoutTest.exe - 1 error(s), 0 warning(s)



(发表于2008-3-6 23:51:00)

lyd_253261362:本程序有两个项目,其中一个项目(DynamicLayout.dsw)是用来生成,DynamicLayout.lib
另一个项目(DynamicLayoutTest.dsw)调用上面的DynamicLayout.lib。
由于没有生成DynamicLayout.lib所以提示错误啊。
评价一下:代码是写的不错的。
(发表于2008-3-18 17:45:00)

JamesBond:谢谢这么好的例子,我下载后,将界面修改为:
左 右
右边分两行:右上,右下
右上再分两行:右上上,右上下
这种格式,
基本上就是左边一个控件
右边上下三个控件
但是拖动的时候控件的大小不改变,光背景改变,怎么回事呢?
(发表于2008-4-17 11:15:00)

JamesBond:好了,使用起来,0,1,1,1的还得好好捉摸捉摸呢

(发表于2008-4-17 11:40:00)

..........................................................................
--------------------next---------------------

阅读(155) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~