猜测是微软内部制定了高度,不知道如何重新匹配。。
但是Skin++等皮肤软件却可以实现,请高手,前辈们指教。
最好有代码或demo。。
8 个解决方案
#1
一般做法是用一个工具栏来实现菜单,再把窗口的菜单设为空(SetMenu(NULL),让窗口不会自己的菜单),工具栏根据窗口的菜单创建工具栏按钮,工具栏的按钮自绘成一级菜单的样式,点工具栏按钮时弹出子菜单。CodeProject上有这个源码。www.softui.net
#2
SoftUI,谢谢你,能粘贴上CodePrject的源码链接页面吗?我也在上面找过,找不到,
关键字搜索不出来,谢谢了,我也帮你打一下你的Logo,呵呵。。。
www.softui.net , (a good choice of your life)..晕。。。
关键字搜索不出来,谢谢了,我也帮你打一下你的Logo,呵呵。。。
www.softui.net , (a good choice of your life)..晕。。。
#3
http://www.codeproject.com/menu/DrOwnerDrawnMenu.asp
#4
http://www.codeproject.com/docking/sizablerebar.asp
这个代码很不错,它不光只是处理了菜单,你还能从中学到其它东西。(光搜索菜单关键字可能很难找到:))
这个代码很不错,它不光只是处理了菜单,你还能从中学到其它东西。(光搜索菜单关键字可能很难找到:))
#5
用Spy++看了一下skin++处理后的菜单,它是没有toobar等控件去承载的,
会不会处理方式他们更优秀呢?如果可以不改变原先的属性,或许更好。希望继续探讨,
当然了,贴是一定结的,看看能不能有更好的方案!
谢谢 jiangsheng 蒋晟 跟 SoftUI 先。
会不会处理方式他们更优秀呢?如果可以不改变原先的属性,或许更好。希望继续探讨,
当然了,贴是一定结的,看看能不能有更好的方案!
谢谢 jiangsheng 蒋晟 跟 SoftUI 先。
#6
换肤所用的方法比较复杂,即要在非客户区实现自绘又要不让MS的代码绘制还要保证消息的正常路由,处理很麻烦(主要这些定制是MS没有提供资料的,去看泄露的Win2000的代码,MS对窗口的绘制方面比没有使用它提供给我们用的API和消息,而是一套没有暴露的他们自己专用的函数,这样要实现换肤想简单的HOOK那些绘制函数都没用),但还是有处理的办法,毕竟市场上的换肤界面还是有不少,只是时间和复杂度的问题,如果不是专业做界面库,建议用“次完美”一点的方法,再说市面上的换肤界面库也见得是很完美,毕竟不是MS提供的功能,而是采取一些非常“别扭”的方式去实现的。SoftUI现在正准备加入对标准界面的换肤,敬请期待。
#7
3Q,no matter what.结贴吧,呵呵
#8
我也正被这个问所难倒,原本我以为系统画菜单栏是从GetMenuBarInfo中获取的rect,于是我将这个函数HOOK了在里面修改了它的位置,但不起作用.
我又尝试HOOK GetMenuItemRect函数在里面修改了位置但还是无效,系统在在绘制菜单栏与菜单项的时跟本没有从这两个函数取rect.
我又尝试HOOK GetMenuItemRect函数在里面修改了位置但还是无效,系统在在绘制菜单栏与菜单项的时跟本没有从这两个函数取rect.
#1
一般做法是用一个工具栏来实现菜单,再把窗口的菜单设为空(SetMenu(NULL),让窗口不会自己的菜单),工具栏根据窗口的菜单创建工具栏按钮,工具栏的按钮自绘成一级菜单的样式,点工具栏按钮时弹出子菜单。CodeProject上有这个源码。www.softui.net
#2
SoftUI,谢谢你,能粘贴上CodePrject的源码链接页面吗?我也在上面找过,找不到,
关键字搜索不出来,谢谢了,我也帮你打一下你的Logo,呵呵。。。
www.softui.net , (a good choice of your life)..晕。。。
关键字搜索不出来,谢谢了,我也帮你打一下你的Logo,呵呵。。。
www.softui.net , (a good choice of your life)..晕。。。
#3
http://www.codeproject.com/menu/DrOwnerDrawnMenu.asp
#4
http://www.codeproject.com/docking/sizablerebar.asp
这个代码很不错,它不光只是处理了菜单,你还能从中学到其它东西。(光搜索菜单关键字可能很难找到:))
这个代码很不错,它不光只是处理了菜单,你还能从中学到其它东西。(光搜索菜单关键字可能很难找到:))
#5
用Spy++看了一下skin++处理后的菜单,它是没有toobar等控件去承载的,
会不会处理方式他们更优秀呢?如果可以不改变原先的属性,或许更好。希望继续探讨,
当然了,贴是一定结的,看看能不能有更好的方案!
谢谢 jiangsheng 蒋晟 跟 SoftUI 先。
会不会处理方式他们更优秀呢?如果可以不改变原先的属性,或许更好。希望继续探讨,
当然了,贴是一定结的,看看能不能有更好的方案!
谢谢 jiangsheng 蒋晟 跟 SoftUI 先。
#6
换肤所用的方法比较复杂,即要在非客户区实现自绘又要不让MS的代码绘制还要保证消息的正常路由,处理很麻烦(主要这些定制是MS没有提供资料的,去看泄露的Win2000的代码,MS对窗口的绘制方面比没有使用它提供给我们用的API和消息,而是一套没有暴露的他们自己专用的函数,这样要实现换肤想简单的HOOK那些绘制函数都没用),但还是有处理的办法,毕竟市场上的换肤界面还是有不少,只是时间和复杂度的问题,如果不是专业做界面库,建议用“次完美”一点的方法,再说市面上的换肤界面库也见得是很完美,毕竟不是MS提供的功能,而是采取一些非常“别扭”的方式去实现的。SoftUI现在正准备加入对标准界面的换肤,敬请期待。
#7
3Q,no matter what.结贴吧,呵呵
#8
我也正被这个问所难倒,原本我以为系统画菜单栏是从GetMenuBarInfo中获取的rect,于是我将这个函数HOOK了在里面修改了它的位置,但不起作用.
我又尝试HOOK GetMenuItemRect函数在里面修改了位置但还是无效,系统在在绘制菜单栏与菜单项的时跟本没有从这两个函数取rect.
我又尝试HOOK GetMenuItemRect函数在里面修改了位置但还是无效,系统在在绘制菜单栏与菜单项的时跟本没有从这两个函数取rect.