抛弃GdCpp*.dll/pdb历史重新建库。libhv和Sqlite的dll保留

This commit is contained in:
Zhang Jianjun
2026-02-02 16:09:02 +08:00
parent f148ca49e3
commit 4a2a284ac0
292 changed files with 350450 additions and 0 deletions

188
staticOnly/KsMFC/CWizard.h Normal file
View File

@@ -0,0 +1,188 @@
#pragma once
//#include "KsCPP_Exports.h"
#include "..\inc\properties.h"
#include <map>
#include <list>
#include <vector>
class CWizardPage;
class CWizard : public CBCGPDialog
{
READONLY_PROPERTY(int, start, -1, startId); //setStartId
READONLY_PROPERTY(int, current, -1, currentId);
public:
CWizard(UINT nIDTemplate, CWnd* pParentWnd = NULL);
typedef std::map<int, CWizardPage*> PageMap;
enum Direction {
Backward,
Forward
};
enum WizardButton {
BackButton,
NextButton,
CommitButton,
FinishButton,
CancelButton,
HelpButton,
//CustomButton1,
//CustomButton2,
//CustomButton3,
//Stretch,
NStandardButtons ,
NButtons = NStandardButtons,
NoButton = -1,
};
enum WizardOption {
NoOptions,
IndependentPages = 0x00000001,
//IgnoreSubTitles = 0x00000002,
//ExtendedWatermarkPixmap = 0x00000004,
NoDefaultButton = 0x00000008,
NoBackButtonOnStartPage = 0x00000010,
NoBackButtonOnLastPage = 0x00000020,
DisabledBackButtonOnLastPage = 0x00000040,
HaveNextButtonOnLastPage = 0x00000080,
HaveFinishButtonOnEarlyPages = 0x00000100,
NoCancelButton = 0x00000200,
//CancelButtonOnLeft = 0x00000400,
HaveHelpButton = 0x00000800,
HelpButtonOnRight = 0x00001000,
//HaveCustomButton1 = 0x00002000,
//HaveCustomButton2 = 0x00004000,
//HaveCustomButton3 = 0x00008000,
NoCancelButtonOnLastPage = 0x00010000
};
WizardOption opts= CWizard::NoBackButtonOnStartPage;
int addPage(CWizardPage* page);
void setPage(int id, CWizardPage* page);
void removePage(int id);
CWizardPage* page(int id) const {
auto it = pageMap.find(id);
if (it == pageMap.end()) return nullptr;
else return it->second;
}
bool hasVisitedPage(int id) const {
auto it = std::find(history.begin(), history.end(), id);
return it != history.end();
}
std::vector<int> visitedIds() const {
return history;
}
std::list<int> pageIds() const;
CWizardPage* currentPage() const {
return page(current);
}
void setStartId(int theid);
virtual bool validateCurrentPage();
virtual int nextId() const;
void setButtonText(WizardButton which, const CString& text);
//CString buttonText(WizardButton which) const;
void _q_updateButtonStates();
void updateButtonTexts();
void updateButtonLayout();
void back();
void next();
void restart();
virtual void initializePage(int id);
virtual void cleanupPage(int id);
/*!
This virtual function is called by QWizard::validateCurrentPage()
when the user clicks \uicontrol Next or \uicontrol Finish to perform some
last-minute validation. If it returns \c true, the next page is shown
(or the wizard finishes); otherwise, the current page stays up.
The default implementation returns \c true.
When possible, it is usually better style to disable the \uicontrol
Next or \uicontrol Finish button (by specifying \l{mandatory fields} or
reimplementing isComplete()) than to reimplement validatePage().
\sa QWizard::validateCurrentPage(), isComplete()
*/
virtual bool validatePage()
{
return true;
}
protected:
PageMap pageMap;
std::vector<int> history;
bool startSetByUser = false;
bool canContinue = false;
bool canFinish = false;
std::map<int, CString> buttonCustomTexts;
CFont fontTitle;
CFont fontDescription;
CBCGPStatic labelTitle;
CBCGPStatic labelDesc;
// 窗口、控件大小/位置,本类默认一套数值
// 子类构造时可以修改子类OnInitDialog或OnSize里应用不支持动态修改
int wWidht = 1280;
int wHeight = 960;
// 字体大小设置
int fontSize_title = 240;
int fontSize_desc = 180;
// 控件高度设置
int titleHeight = 32;
int descHeight = 64;
int titleLeft = 32;
int descLeft = 48;
int titleTop = 16; // title顶部到窗口的距离
int descTop = 8; // 描述顶部到title底部的距离
int descBottom = 16; //描述底部空白
int btnWidth = 100;
int btnHeight = 48;
int btnTop = 16; // 按钮顶部空白
int btnBottom = 16; // 按钮底部空白
int btnRight = 64; // 按钮右侧空白
int btnSpace = 16; // 按钮间隔
// 标题和描述占用的高度在OnSize()用上面的参数计算
int headH;
// 按钮占用的高度在OnSize()用上面的参数计算
int footH;
CBCGPButton btns[CWizard::NButtons];
void init() {
}
void reset();
void cleanupPagesNotInHistory();
void switchToPage(int newId, Direction direction);
void updateCurrentPage();
void onChangeTitle();
void onChangeDesc();
friend class CWizardPage;
virtual BOOL OnInitDialog();
afx_msg void OnSize(UINT nType, int cx, int cy);
};