Извините за
такую большую задержку в выходе рассылки. Хочу сообщить Вам пару
новостей. Первая заключается в том, что старый сайт (winapi.by.ru) больше не поддерживается.
Этот сайт в ближайшее время будет объединен с сайтом BcbDev.ru. На этом сайте будет выложена обновленная
версия перевода справки MSDN в OnLine варианте, и переделана справка в
формате CHM, выходившая там ранее. Все статьи и переводы теперь будут
публиковаться именно на новом сайте. В этой рассылке остаются только
статьи по WinApi. Переводы функций будут выходить в официальной рассылке
сайта BcbDev.ru. Вторая заключается в том, что рассылка начинает
выходить в другом режиме. Так как статьи каждый день не попишешь, рассылка
будет выходить по мере написания статей. Это может быть как два раза в
неделю, раз в неделю или даже раз в две недели. В описании рассылки будет
указано, что рассылка выходит нерегулярно.
Ну и
в заключение сказанного небольшая статья:
Изменение надписей у
кнопок стандартных
диалогов
Иногда требуется изменить надпись на кнопках
стандартного диалога. Например, изменить надпись у кнопки «Открыть» в диалоге
открытия файлов. Это может понадобиться, например, в том случае, когда Вы хотите
использовать кнопку не по прямому назначению, а для, скажем, удаления выбранного
файла. Согласитесь надпись «Удалить» была бы в данном случае более уместна, чем
надпись «Открыть». Изменить надпись довольно просто. Это можно сделать
следующими способами:
Win32API:
Требуется установить процедуру ловушки для диалога. Для этого при
создании диалога требуется указать флаг OFN_ENABLEHOOK: OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(OPENFILENAME)) .... ofn.Flags =
OFN_ENABLEHOOK|OFN_EXPLORER; и, собственно установить саму ловушку: ofn.lpfnHook
= reinterpret_cast<LPOFNHOOKPROC>(OFNHookProc);
Или так как Вам
надо. Теперь требуется переопределить надпись на
кнопке. Для этих целей требуется определить дескриптор окна диалога и
идентификатор нужной кнопки. Для определения дескриптора окна используется
функция GetParent. Подробнее о этой функции вы можете прочитать в справке на
сайте. Для определения идентификатора кнопки можно использовать следующий
способ. Открыть файл COMDLG32. DLL в редакторе ресурсов VisualC. Найти нужный
диалог и узнать требуемый идентификатор. В моем случае кнопка «Открыть» имела
идентификатор «1», кнопка «Отмена» 2. После того, как Вы
узнаете требуемую информацию можно начинать творить дальше. Все изменения в
диалоге нужно вносить во время его создания, точнее до того как он будет
отображен на экране. По этому внесем несколько изменений в процедуру ловушки.
Для этого инициализации диалога будем определять дескриптор диалога и менять
название на кнопке:
Изменение надписей у
других диалогов также не представляет труда. Для этого требуется лишь дескриптор
диалога и идентификатор того элемента, который вы хотите изменить.