<Win32_13>__win32控件(1)__教你玩美观的按钮控件
来源:互联网 发布:完美国际数据库 编辑:程序博客网 时间:2024/05/28 16:18
本文由BlueCoder编写 转载请说明出处:
http://blog.csdn.net/crocodile__/article/details/10237943
我的邮箱:bluecoder@yeah.net 欢迎大家和我交流编程心得
我的微博:BlueCoder_黎小华 欢迎光临^_^
从今天开始,我将开始仔细讲一下win32中比较重要的一些控件的用法
好了,开始今天的讲解
一、初级篇——创建一般的按钮控件
按钮实质上就是窗口,因此它的创建本质上和创建窗口是一样的,也是用CreateWindow或者CreateWindowEx方法来创建,只不过有一些细节需要注意一下:
(1)在窗口风格中必须添加WS_CHILD,表示它是子窗口,属于一个父窗口;如果为了使按钮一创建就可见,就还得加上WS_VISIBLE
(2)CreateWindow或者CreateWindowEx中HMENU hMenu参数在创建子窗口时,是表示窗口的ID标示,在这里就表示按钮的ID标示
(3)win32所有控件的消息都归结到WM_COMMAND系统标准消息,看一看msdn关于这个消息的说明:
LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window UINT uMsg, // WM_COMMAND WPARAM wParam, // notification code and identifier LPARAM lParam // handle to control (HWND));重要的是wParam、lParam这两个参数:前者是一些通知码和标示(ID)、后者是对应的句柄
好了,接下来看看代码:
switch(message){case WM_CREATE:SkinH_Attach();//创建按钮for(i=0; i<NUM; i++){LONG BtnStyle = WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_BITMAP;hButton[i] = CreateWindow(TEXT("button"), tBtnName[i],BtnStyle,0, 0, 0, 0, hwnd, (HMENU)iBtnID[i],((LPCREATESTRUCT)lParam)->hInstance, NULL);SetWindowText(hButton[i], tBtnName[i]);//设置按钮文本//创建字体ZeroMemory(&lf, sizeof(LOGFONT));lf.lfHeight= -14;//字体的大小hFont = CreateFontIndirect(&lf);//修改字体SendMessage(hButton[i], WM_SETFONT, (WPARAM)hFont, 0);} return 0 ;
//随着主窗口大小的改变来改变按钮的位置
case WM_SIZE:cyButton = HIWORD(lParam) / (NUM + 2);//通过适应窗口大小 来设定按钮的位置for(i=0; i<NUM; i++){MoveWindow(hButton[i], 100, cyButton * (i + 1), 100, 60, TRUE);} return 0 ;
//简单响应按钮按下的消息case WM_COMMAND:switch(wParam){case IDB_PUSHBUTTON1:MessageBox(hwnd, TEXT("按下按钮1"), TEXT("提示"), MB_OK);break;case IDB_PUSHBUTTON2:MessageBox(hwnd, TEXT("按下按钮2"), TEXT("提示"), MB_OK);break;case IDB_PUSHBUTTON3:MessageBox(hwnd, TEXT("按下按钮3"), TEXT("提示"), MB_OK);break;}return 0;
运行效果:
二、中级篇——创建win XP风格的按钮
如果你有MFC的开发经验,你应该比较喜欢MFC的按钮控件吧——OK,现在教你如何创建MFC样式的按钮
这个首先要看一看msdn相关的说明:
修改控件的风格
看完之后,你就应该知道怎么办了吧?
对,就在头文件中添加以下代码即可:
// Copy from MSDN #pragma comment(linker,"\"/manifestdependency:type='win32' "\"name='Microsoft.Windows.Common-Controls' "\"version='6.0.0.0' processorArchitecture='*' "\"publicKeyToken='6595b64144ccf1df' language='*'\"")
他就是是编译器使用Win XP的新式控件风格
ok,还是来看看效果:
这就是比较现代化的风格了,很漂亮
三、高级篇——给按钮添上"美丽的衣裳"——来一张位图
可能,你很清楚窗口添加位图的方式和方法,也许你会觉得这些方式方法稍微麻烦点儿,因此我得告诉你:给按钮添加位图是很容易的事儿
(1)首先加载位图,获取位图句柄
(2)发送消息,告诉Windows,当前按钮以这个位图作为背景图片
具体代码如下:
在WM_CREATE消息中做这些事儿
{HBITMAPhBmp;//位图句柄//加载hBmp = LoadBitmap(((LPCREATESTRUCT)lParam)->hInstance, MAKEINTRESOURCE(iBmpID[i]));//发送消息SendMessage(hButton[i], BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBmp);}
来看看效果吧:
源代码以及相关资源下载
- <Win32_13>__win32控件(1)__教你玩美观的按钮控件
- <Win32_14>__win32控件(2)__教你自学掌握所有控件的玩法
- <Win32_14>__win32控件(2)__教你自学掌握所有控件的玩法
- 仿淘宝分页按钮效果简单美观易使用的JS分页控件
- 仿淘宝分页按钮效果简单美观易使用的JS分页控件
- 仿淘宝分页按钮效果简单美观易使用的JS分页控件
- 仿淘宝分页按钮效果简单美观易使用的JS分页控件
- 教你玩转浮动框和动态控件添加
- 实用jquery的时间控件,教你如何玩转时间
- Android自定义控件之美观的实用型统计表的制作
- 简单易用美观的日期及时间控件
- 按钮控件的使用
- 按钮控件的使用
- 按钮控件
- 按钮控件
- 按钮控件
- 控件,按钮
- 按钮控件
- 关于Android 中TextView字体设置的那点事
- rman异常案例二: 归档日志被人移动到其他目录,导致数据库恢复异常(续)
- <转>BufferedReader和FileReader读取txt文件乱码
- IT学生解惑真经(转)
- as3 加载外部XML
- <Win32_13>__win32控件(1)__教你玩美观的按钮控件
- 写给明天的软件工程师——感悟篇
- Android.mk简介
- Android Gallery setSelection()和onFling()方法的区别
- goagent chomre
- MFC程序处理命令行参数
- onActivityResult执行的时机不对,解决办法
- 程序员学习能力提升三要素
- 初探WCF