属性表应用和使用
PropertySheet Application and Usage Win32
我试图在我的Win32对话框应用程序中使用属性表,以便我可以首先获得用户输入,使其应用于我的类,然后运行该用户输入规范的程序。
属性页似乎很好,但我不确定如果我错了。
无论如何,我正试图实现它,我遇到了一些麻烦。我读了文档,但还是不明白。
我已经设法使属性页(其中2个)第一页有一个编辑框和几个组合框OK,取消和一个禁用的应用按钮。我想做的是…
。当我添加一个int到编辑框
时,启用apply按钮B。想办法把这些数据放到一个变量中。
我知道它是如何与我的对话框窗口工作的。我有WM_Command为我所有的IDC_的东西,我把它。但是属性页,我不知道它的IDC是什么或者如何调用我放进去的编辑框和列表框。或者如何让它识别它们已被用于启用应用按钮。
这是我的属性页设置方法
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
宏。
您需要为每个页面创建一个diagloproc:
LRESULT CALLBACK IntPage1DlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
UNREFERENCED_PARAMETER(wParam);
BOOL myCondition = 0;
LPNMHDR lpnm;
switch (uMsg) {
case WM_INITDIALOG:
break;
case WM_NOTIFY:
lpnm = (LPNMHDR)lParam;
switch (lpnm->code) {
case PSN_SETACTIVE:
if (myCondition) {
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
}
else {
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK);
}
break;
case PSN_WIZFINISH:
break;
case PSN_WIZBACK:
break;
case PSN_RESET:
break;
default:
break;
}
break;
}
return 0;
}
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- c++r值引用应用于函数指针
- QT 样式表主题,适用于使用属性选择器的整个应用程序
- 应用于类型别名声明的 [[maybe_unused]] 属性的语法
- 当删除上下文属性中的QLIST对象时,QT QML应用程序崩溃
- 可以将属性应用于构造函数参数
- 如何从属性表中删除确定,取消和应用按钮
- 当应用于静态方法时,为什么constexpr属性不起作用
- 对 Qi 中解析器公开的属性应用操作
- 从ASP.NET应用程序查询Active Directory对象属性将返回旧结果
- OpenCV videoCapture 为 iOS 应用程序文档目录中的文件提供了错误的属性
- 如何使用Qt Windows中的设置路径属性从命令行运行应用程序(.exe)时在命令行上打印日志
- 使用属性表将向导定位在屏幕 win32 应用程序的中心
- 如何在用户模式应用程序C++中访问AVStream扩展相机控制属性
- 将属性更改应用于解决方案中的所有DLL项目
- 对于具有额外"通道"和"id"属性的多线程应用使用 boost::log 的最佳方法
- 是否有一种方法可以防止Qt设计器应用属性
- 属性表应用和使用