Files
GdCpp12/staticOnly/KsMFC/CEditWithBtn.h

104 lines
2.6 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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_