PropertySheet应用程序和用法Win32

时间:2014-05-05 03:47:51

标签: c++ visual-studio winapi properties

我正在尝试在我的Win32 DialogBox应用程序中使用属性表,以便我可以先获取用户输入,让它应用于我的类,然后在该用户输入specfication的情况下运行该程序。

物业页面似乎很好,但我不确定我是否错了。

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

我设法让属性页(其中2个)第一页有一个编辑框和一些组合框,其中包含OK,Cancel和禁用的Apply按钮。我想要做的是......

一个。将int添加到编辑框

时启用应用按钮

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

我知道它如何与我的DialogBox窗口一起使用。我有我所有的IDC_东西的WM_Command。但是属性页面,我不知道IDC是什么,或者如何调用EDIT框和我放入的列表框。或者如何让它识别它们已被用于启用应用按钮。

这是我的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)
{

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

2 个答案:

答案 0 :(得分:1)

您可以使用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宏。

答案 1 :(得分:0)

为您创建diagloproc所需的每个页面:

Decimal('7.325').quantize(Decimal('.01'), rounding=ROUND_DOWN)
Decimal('7.32')

Decimal('7.325').quantize(Decimal('1.'), rounding=ROUND_UP)
Decimal('8')