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

全部博文(576)

文章存档

2011年(1)

2008年(575)

我的朋友

分类:

2008-10-14 14:50:07

kruglinski:顶!其实就是窗口字类化的一种应用,可以看一下我的关于窗口了类化的文章。
(发表于2005-11-5 16:56:00)

BUG_2005:楼主不提供代码么....

还有菜单问题能解决么..不能显示..
(发表于2005-11-5 19:21:00)

sunjunfneg3:没有源码的骗子,大家注意了不要下
(发表于2005-11-6 10:53:00)

sunjunfneg3:鬼知道你在DLL里面封装了危险代码没有
(发表于2005-11-6 10:53:00)

mybios:不提供源代码者没权利在此处发表!!!强烈抗议!!
(发表于2005-11-6 17:30:00)

boywys:吃饱了,睡一觉,,写的什么东西,还什么Dll



(发表于2005-11-7 8:10:00)

j965829:void CMyFileDialog::OnInitDone()
{
CWnd* pDialog = GetParent();
m_MyWndProc=(WNDPROC)SetWindowLong(pDialog->m_hWnd,GWL_WNDPROC,(long)MyWindowProcNew);
}

为什么是pDialog->m_hWnd呢?而不是m_hWnd.是修改本窗口,又不是修改父窗口.
(发表于2005-11-7 9:01:00)

kruglinski:to j965829,这位兄弟好奇怪哦!
这一句
CWnd* pDialog = GetParent();
没有算见吗?
(发表于2005-11-7 9:08:00)

yisong:说明一下:CFileDialog 有一个著名的BUG,使用它后会改变应用程序路径。所以你的程序中使用相对路径时要注意。解决办法是在显示FileDialg前用GetCurrentDirectory()保存,显示FileDialg完成后用Set...恢复。
(发表于2005-11-15 13:08:00)

yisong:当然也不能说是CFileDialog 的问题。因为CFileDialog还给出了一个标志:OFN_NOCHANGEDIR,加上它后就不用保存当前目录了。

(发表于2005-11-15 14:59:00)

tangxingbin:爬喔,放的啥子东西!例子一般还保密。
(发表于2005-11-16 10:33:00)

vck123:晕,CFileDialog还著名的bug呢,仔细去看看MSDN的文档吧!
(发表于2005-11-16 17:34:00)

yisong:FontDialog ,ColorDialog,MessageBox也弄出来了,若有时间我会把它们的都写出来。
(发表于2005-11-17 9:17:00)

underyun:帖主对HOOK的应用范围看得太窄了吧。HOOK和子类化并没有冲突,相反,两者可以很好的结合。
HOOK函数里不要处理太多的事,否则效率成问题,那么我们可以让他做最少的事,做只有他能做的事——找窗口。
在HOOK函数里面,我们只需关心每个窗口的创建消息和初始化消息,抓到后进行分类,对不同类型的窗口进行不同方式的子类化,也就是帖主所说的方法,对于对话框,完全可以采用相同的子类化方式,不用管是MessagBox还是FileDialog,这样进行进程级别的“替换窗口过程法”,是不是比帖主对每个对话框都亲力亲为来的好呢?
(发表于2005-11-17 12:15:00)

underyun:另外CFileDialog那个不是BUG,默认路径是系统级别的,所有进程共用。解决办法应该是不要用相对路径!
用GetCurrentDirectory保存,SetCurrentDirectory恢复的方法有漏洞,因为别的进程也可以SetCurrentDirectory,而你在Get和Set之间的操作不可能是原子操作,一捅就破
(发表于2005-11-17 12:43:00)

yisong:To underyun:关于CFileDialog改变程序启动的路径是不是Bug的问题,我想谁都不希望它改变应用程序启动的路径,OFN_NOCHANGEDIR这个标志其实是多余的。另外应用程序启动的路径是保存就象Stack的操作一样,当然也充许其它进程这样操作,是不会相互影响的,是安全的。
我用“Bug”只是来提醒大家用CFileDialog时要注意。你提到不要相对路径写程序,我想还有什么比相对路径更优
越的吗?另外我没否定HOOK技术的其它应用,但用HOOK技术去处理软件界面,其合理性值得我们去考虑。
(发表于2005-11-18 10:51:00)

underyun:to 贴主:很赞赏你写文章的行为及对自己想法的坚持,这证明你是一个相当有主见的人。
这两个问题是值得探讨的,关于SetCurrentDirectory,我在前面的说法有误,他是进程级有效的,别的进程不会受影响,你说得没错。但是对于线程来说,这套机制可能就是致命的,特别是组件化开发,组件线程和主线程之间的同步非常重要,这套机制正是会破坏这个同步,所以我说这是个漏洞,相对路径正是有这样那样的不严谨性,所以我不赞成使用。我们在实际开发中就有过这样的教训,出了问题还很难找到错误。在严谨和方便的选择上,我想大家都会作出正确的选择吧。
另外你对HOOK技术在处理软件界面的合理性作出怀疑,我认为是不必要的,技术摆在那,看你怎样用,用的不好情况会很糟糕。按我说的那样只做窗口分类,是不会对性能有影响的,绘图等那些耗时的操作都不是在钩子中做的。在这个实例上,子类化对性能的影响要远大于HOOK对性能的影响。在这个网站上卖广告的那些界面库你认为会对性能造成很大影响吗?如果那样的话有人买吗?

我之所以这么争辩主要是为HOOK技术正名,他的使用效率跟你的代码质量有很大关系,把技术用在刀刃上,才是关键。
(发表于2005-11-18 16:39:00)

James007:窗口过程
(发表于2006-4-8 0:31:00)

wgm001:又不提供源碼!放在這什麽意思
(发表于2006-9-10 11:17:00)

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

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