我正在尝试在我的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)
{
任何提示,技巧,指示或建议?也许是在主应用程序启动之前获取用户数据的最佳方法?我发现用户设置值很棘手。
答案 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')