Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2023, 02:51   #1
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию Блокнот диалоговых панелей. Переход между станицами блокнота.

Здравствуйте! Скажите, как в блокноте диалоговых панелей(PropertySheet) определит индекс выбранной страницы, как узнать последняя ли это страница?
Я делаю так, так я узнаю дескриптор выбранной страницы.
Код:
HWND hWnd = (HWND)SendMessage(GetParent(hDlg),
					PSM_GETCURRENTPAGEHWND,
					0, 0L);
LRESULT idx = SendMessage(GetParent(hDlg),
					PSM_HWNDTOINDEX,
					(WPARAM)hWnd, 0L);
А как узнать индекс(дескриптор следующей страницы) чтобы, наример, на неё перейти?

Не знаю так же правильно ли я уничтожаю блокнот, нужно в по нажатии на кнопку "Готово" перейти к на следующую страницу блокнота, если больше страниц нет, то нужно завершить работу блокнот.
Я делаю так, но не уверен, что это правильно:
Код:
case ID_BUTTON_READY:
{
	/*
	int idx = SendMessage(hList, LB_GETSEL, 0, 0L);
	if (idx == LB_ERR || idx == 0)
	{
		MessageBox(NULL,
			TEXT("No select items"),
			TEXT("Error: ID_BUTTON_READY"),
			MB_OK);
		return FALSE;
	}

	//TCHAR szBuff[256];
	int len = SendMessage(hList, LB_GETTEXT,
		idx, (LPARAM)szBookName);
	if (len == LB_ERR)
	{
		MessageBox(NULL,
			TEXT("No a Item with so index."),
			TEXT("Error: ID_BUTTON_READY"),
			MB_OK);
		return FALSE;
	}
	szBookName[len] = '\0';

	*/

	if (!SendMessage(GetParent(hDlg), PSM_APPLY,
		0, 0L))
	{
               //Так я пытаюсь завершить работу блокнота.
		SetWindowLongPtr(GetParent(hDlg), DWL_MSGRESULT, FALSE);
		return FALSE;
	}
	else
	{
		HWND hWnd = (HWND)SendMessage(GetParent(hDlg),
			PSM_GETCURRENTPAGEHWND,
			0, 0L);
		//Но так я получаю индекс данной страницы, а не следующей.
		LRESULT idx = SendMessage(GetParent(hDlg),
			PSM_HWNDTOINDEX,
			(WPARAM)hWnd, 0L);
		
		//Переход на следующую страницу.
		SendMessage(GetParent(hDlg), PSM_SETCURSEL,
			idx, 0L);
	}
	return TRUE;
}
apofioz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход между формами soundsound Общие вопросы Delphi 3 25.09.2016 14:01
Программа. Delphi 7: Есть 10 панелей с вопросами и 10 панелей с ответами ,ответы и вопросы загружаются из файла,перемешиваются... Kolya23 Помощь студентам 5 05.10.2015 21:57
Переход между Input Des JavaScript, Ajax 3 22.11.2010 06:58
Переход между листами Fezdipekla Microsoft Office Excel 2 14.06.2010 20:27
Переход между формами! Lemo Общие вопросы Delphi 5 05.02.2009 15:50