c++ - PropertySheet 在 Win32 中的应用与使用

标签 c++ visual-studio winapi properties

我正在尝试在我的 Win32 DialogBox 应用程序中使用属性表,以便我可以首先获取用户输入,将其应用于我的类,然后使用该用户输入的规范运行程序。

属性页看起来不错,但我不确定我是否弄错了。

无论如何,我正在尝试实现它,但遇到了一些麻烦。我阅读了文档,但仍然没有理解。

我设法使属性页(其中 2 个)的第一页有一个编辑框和几个带有确定、取消和禁用的应用按钮的组合框。我想做的是..

一个。当我向编辑框添加一个整数时启用应用按钮

B.弄清楚如何将该数据放入变量中。

我知道它如何与我的 DialogBox 窗口一起工作。对于我放入其中的所有 IDC_ 内容,我都有 WM_Command。但是属性页,我不知道它的 IDC 是什么,也不知道如何调用我放入其中的编辑框和列表框。或者如何让它识别它们已被用于启用应用按钮。

这是我的properypage设置方法

void propertyPages(HINSTANCE hInstance){

    memset(m_psp, 0, sizeof(m_psp));
    memset(&m_PropSheet, 0, sizeof(m_PropSheet));

    m_psp[0].dwSize = sizeof(PROPSHEETPAGE);
    m_psp[0].dwFlags = PSH_WIZARD;
    m_psp[0].hInstance = hInstance;
    m_psp[0].pszTemplate = (LPCWSTR) IDD_PROPPAGE_LARGE;
    m_psp[0].pszTitle = L"Champ 1 Scenario";

    m_psp[1].dwSize = sizeof(PROPSHEETPAGE);
    m_psp[1].dwFlags = PSP_USETITLE;
    m_psp[1].hInstance = hInstance;
    m_psp[1].pszTemplate = (LPCWSTR) IDD_PROPPAGE_LARGE1;
    m_psp[1].pszTitle = L"Champ 2 Scenario";

    m_PropSheet.dwSize = sizeof(PROPSHEETHEADER);
    m_PropSheet.dwFlags = PSH_PROPSHEETPAGE;
    m_PropSheet.hInstance = hInstance;
    m_PropSheet.pszCaption = L"Champion Level/Runes/Masteries";
    m_PropSheet.nPages = 2;
    m_PropSheet.nStartPage = 0;
    m_PropSheet.ppsp = (LPCPROPSHEETPAGE) m_psp;
    //SendMessage(GetParent(hDlg), PSM_CHANGED, IDD_PROPPAGE_LARGE, 0);
    //PropSheet_Changed(PROPSHEETPAGE,IDD_PROPPAGE_LARGE);
    PropertySheet(&m_PropSheet);
}

我先调用它

INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{

有任何提示、技巧、指示或建议吗?也许是在主应用程序启动之前获取用户数据的最佳方式?我发现让用户设置值很棘手。

最佳答案

您可以使用pfnDlgProc 成员为页面设置对话过程:

m_psp[0].dwSize = sizeof(PROPSHEETPAGE);
m_psp[0].dwFlags = PSH_WIZARD;
m_psp[0].hInstance = hInstance;
m_psp[0].pszTemplate = (LPCWSTR) IDD_PROPPAGE_LARGE;
m_psp[0].pszTitle = L"Champ 1 Scenario";
m_psp[0].pfnDlgProc = MyDialogProc;

其中 MyDialogProc 只是一个普通的对话过程。

要设置应用按钮的状态,请使用 PropSheet_Changed/PropSheet_UnChanged宏。

关于c++ - PropertySheet 在 Win32 中的应用与使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464475/

相关文章:

C++ 重载运算符<<和运算符>>

c++ - 解析分配给默认参数值的重载函数时考虑了哪些函数集?

c++ - 强制 Visual Studio 进入 STL 类/函数

visual-studio - Visual Studio 调试卡在 "Attaching to the web server"

c++ - 如何使用 Visual Studio 2015 设置 wxWidgets 3.1.0

C++ Win32 通过 to_wstring 将零填充到 int

c - ListView 控件是否有选择更改事件?

c++ - Unresolved external (抽象类构造函数/析构函数)

c++ - GetModuleFileName 的边缘情况不明确

c++ - VS 2017 C++ 编译器在 VS 2005 中找不到匹配的函数