windows SDK编程基础-Button类的封装 .

来源:互联网 发布:ML算法CSDN博客 编辑:程序博客网 时间:2024/06/05 18:58

我想学好用C编写软件,但是C的知识一直不无法深入,C++也是一知半解,
我希望我能静下心下,用心学习一段时间,先不要去学基础的语法知识,太枯燥。没效果。
也不要去学什么算法和数据结构,用不到。不要应为这些东西很高深,就去装深沉。

我希望我能从我最感兴趣的方面入手学习。
我希望我能找到让自己感兴趣的学习方法。

那就老老实实做一个按钮,总行了吧。

 按钮是一个很基本的控件,但是要精通,却不是一个容易的事。
比例图片按钮,变色按钮,鼠标放上去会变图的按钮,圆的按钮,透明的按钮,要实现这些功能,却要学习其它好多的相关知识。

虽是一个小东西,但是却包含windows编程的精要。现在还要学习基础的吧:

Button的种类:

1.Push button基本按钮
2.Check Box 复选框
3.Radio Box单选框
4.GroupBox 组合框


按钮的实现有2常用的方法,一种是CreateWindow函数,一程是用资源来创建。我的TButton类当然要实现这2个功能。
1.用资源画的按钮,这个功能很方便,平时都用资源拖一个按钮,很方便。我打算放在TButton类的构造函数中实现:

PushButton类的定义:

Class TButton{   private:   HWND m_hwnd;//本身的窗口句柄};

PushButton类的实现

TButton::TButton(HWND hParan,UINT IDD)//传入窗口名柄和资源ID:m_hParent(hParan), m_idButton(IDD){    m_hButton = GetDlgItem(m_hParent,m_idButton);//获取这个按扭的句柄}


so ,我在创建按钮类时,可以使用以下代码来生成一个TButton类,

TButton *Button1(m_hwnd,IDC_BUTTON1);

m_hwnd表示父亲窗口,IDC_BUTTON表示资源模板中创建的ID标识。
in this case 我要在我的TWnd 类中放一个按钮类成员,is so easy.

我的TWnd类,使用Create创建非模态窗口,用DoModal创建一个模状窗口,
需要在WM_INITDIALOG消息中初始化这些按钮控件,应为在2个函数之前,窗口还没有生成,所以只好再创建一个函数:
TWnd::OnInitCompoent()

在这个函数中初始化TButoon 成员类,TButton1 = new (m_hwnd,IDC_BUTTON_TEST);

 

在完成这个最简单的功能后,要实现一个最常用的功能,那就是设置按钮的文本和获取按钮的文件,加2个函数:
.设置按钮的文本,调用SetWindowText()API,可以很方便的实现

void SetText(LPCTSTR strCaption){   SetWindowText(strCaption);      }







 

原创粉丝点击