104 lines
2.6 KiB
C++
104 lines
2.6 KiB
C++
#pragma once
|
||
#ifndef _EDIT_WITHBTN_H_
|
||
#define _EDIT_WITHBTN_H_
|
||
#include <BCGPEdit.h>
|
||
|
||
// 带按钮的编辑框,增加设置按钮功能的接口和按钮文本
|
||
// 需要调用EnableBrowseButton()使能,然后对_OnBrowseFunc赋值
|
||
class CEditWithBtn :
|
||
public CBCGPEdit
|
||
{
|
||
public:
|
||
CEditWithBtn(LPCTSTR szLabel=_T("...")) {
|
||
EnableBrowseButton(TRUE, szLabel);
|
||
}
|
||
|
||
// 执行点击按钮后的回调函数
|
||
void OnBrowse() override
|
||
{
|
||
if (_OnBrowseFunc) _OnBrowseFunc();
|
||
}
|
||
|
||
// 执行更新后的回调函数
|
||
void OnAfterUpdate() override
|
||
{
|
||
if (_OnAfterUpdateFunc) _OnAfterUpdateFunc();
|
||
}
|
||
|
||
// 设置点击按钮后的回调函数
|
||
inline void setOnBrowseFunc(std::function<void(void)> func) {
|
||
_OnBrowseFunc = func;
|
||
}
|
||
|
||
// 设置编辑框内容更新后的回调函数
|
||
inline void setOnAfterUpdateFunc(std::function<void(void)> func) {
|
||
_OnAfterUpdateFunc = func;
|
||
}
|
||
|
||
protected:
|
||
// 点击按钮后的回调函数
|
||
std::function<void(void)> _OnBrowseFunc;
|
||
|
||
// 更新后的回调函数
|
||
std::function<void(void)> _OnAfterUpdateFunc;
|
||
};
|
||
|
||
// 带打开文件功能的编辑框,增加更新后的回调
|
||
// 需要调用EnableFileBrowseButton()设置参数,然后对_OnAfterUpdateFunc赋值
|
||
class CEditWithOpenFile :
|
||
public CBCGPEdit
|
||
{
|
||
public:
|
||
// 执行更新后的回调函数
|
||
void OnAfterUpdate() override
|
||
{
|
||
if (_OnAfterUpdateFunc) _OnAfterUpdateFunc();
|
||
}
|
||
|
||
// 设置编辑框内容更新后的回调函数
|
||
inline void setOnAfterUpdateFunc(std::function<void(void)> func) {
|
||
_OnAfterUpdateFunc = func;
|
||
}
|
||
|
||
protected:
|
||
// 更新后的回调函数
|
||
std::function<void(void)> _OnAfterUpdateFunc;
|
||
};
|
||
|
||
// 带计算周长的编辑框,增加更新后的回调
|
||
class CEditWithPiCalc :
|
||
public CBCGPEdit
|
||
{
|
||
public:
|
||
// 构造函数,设置小数位数。-1表示不限制小数位数
|
||
CEditWithPiCalc(int decimal=8) {
|
||
CList<UINT, UINT>lstCommands;
|
||
lstCommands.AddTail(CBCGPCalculator::idCommandAdvPi);
|
||
CString str;
|
||
if (decimal < 0) {
|
||
CBCGPEdit::EnableCalculatorButton(nullptr, &lstCommands, nullptr);
|
||
}
|
||
else {
|
||
str.Format(_T("%%.%df"), decimal);
|
||
CBCGPEdit::EnableCalculatorButton(nullptr, &lstCommands, str);
|
||
}
|
||
|
||
}
|
||
|
||
// 设置编辑框内容更新后的回调函数
|
||
inline void setOnAfterUpdateFunc(std::function<void(void)> func) {
|
||
_OnAfterUpdateFunc = func;
|
||
}
|
||
|
||
// 执行更新后的回调函数
|
||
void OnAfterUpdate() override
|
||
{
|
||
if (_OnAfterUpdateFunc) _OnAfterUpdateFunc();
|
||
}
|
||
|
||
protected:
|
||
// 更新后的回调函数
|
||
std::function<void(void)> _OnAfterUpdateFunc;
|
||
};
|
||
|
||
#endif // !_EDIT_WITHBTN_H_
|