我想用 setclasslong 设置背景颜色或图片 但是不成功 请大家指点我在 主窗体的 WM_CREATE 中创建了一个button
并且用SetClassLong(buttonQuit,GCL_HBRBACKGROUND,(long)GetStockObject(BLACK_BRUSH));想更改一下button的颜色(其实是想该成图片)但是button 没有任何反应 可是我用SetClassLong(hWnd,GCL_HBRBACKGROUND,(long)GetStockObject(BLACK_BRUSH));(hWnd是主窗体的句柄) 设置主窗体的 hbrBackground 却成功了请问这是为什么 如果我要更改 button 或者 edit 或者其他的控件 应该如何操作呢
并且用SetClassLong(buttonQuit,GCL_HBRBACKGROUND,(long)GetStockObject(BLACK_BRUSH));想更改一下button的颜色(其实是想该成图片)但是button 没有任何反应 可是我用SetClassLong(hWnd,GCL_HBRBACKGROUND,(long)GetStockObject(BLACK_BRUSH));(hWnd是主窗体的句柄) 设置主窗体的 hbrBackground 却成功了请问这是为什么 如果我要更改 button 或者 edit 或者其他的控件 应该如何操作呢
而Button与Edit没有使用该属性。
=========================================================
上海勇进软件有限公司 CTO 阙海忠 敬答各位界面爱好者的问题
公司网站:http://www.uipower.com
我在试试
如果是这样的话 那我该如何制作一个图片按钮 或者用图片做北京的edit
1、可以采用默认提供的自画功能OwnerDraw;
2、可以采用Subclass按钮与Edit的方法对WM_PAINT等各种消息进行处理。如果你刚接触VC,那么我建议你采用第一种方法相对比较简单,但有局限性。
如果你对Windows消息处理比较熟悉,建议采用第二种方法,那种方法相对灵活很多。
=========================================================
上海勇进软件有限公司 CTO 阙海忠 敬答各位界面爱好者的问题
公司网站:http://www.uipower.com
先在resourceView里把按钮的bitmap和owner draw选上。然后添加一个跟这个按钮关联的CBitmapButton变量m_bmpButton(可以先用classWizard添加一个CButton变量然后手动把她改成CBitmapButton).再在OnInitDialog()里
m_btn.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2);应该就可以了。IDB_BITMAP1,IDB_BITMAP2为导入的两个位图,一个是按钮没按时显示的图片一个是按下要显示的
1、对于OwnerDraw,可以使用风格BS_OWNERDRAW
2、对于Subclass,可以使用SetWindowLong,修改WndProc
===============================================================================
阙海忠 (CTO Skin++ 开发成员 http://www.uipower.com 上海勇进软件有限公司)
我还有一个问题没有解决 希望你能指点一下http://topic.csdn.net/u/20080424/00/e3c9b027-2759-45f5-9452-4ffe1aa7f74f.html谢谢
http://www.uipower.com/shownews2.asp?id=269关于SetWindowLong与SetClassLong的区别,可以简单地这样理解为:
SetWindowLong仅对某个窗口更改WndProc,
而SetClassLong是对所有用该类创建窗口的WndProc进行更改,
同时SetClassLong在动态修改WndProc有一些局限性。===============================================================================
阙海忠 (CTO Skin++ 开发成员 http://www.uipower.com 上海勇进软件有限公司)