powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка на handle
22 сообщений из 22, страница 1 из 1
Ошибка на handle
    #39621154
apexplsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
Sleep(1);
    if IsWindowVisible(Application.Handle) then
    ShowWindow(Application.Handle, SW_HIDE);


Подчеркивается handle и ошибка E2003 Undeclared identifier: 'Handle' Как убрать её?
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621156
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsql
Код: pascal
1.
2.
3.
Sleep(1);
    if IsWindowVisible(Application.Handle) then
    ShowWindow(Application.Handle, SW_HIDE);


Подчеркивается handle и ошибка E2003 Undeclared identifier: 'Handle' Как убрать её?

не использовать необъявленный идентификатор
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621164
apexplsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Квейд,
Handle это идентификатор, мне просто надо скрыть знаек из панель задач.
Везде написано что надо так это делать но у меня handle все время подчеркивается
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621168
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsqlКвейд,
Handle это идентификатор, мне просто надо скрыть знаек из панель задач.
Везде написано что надо так это делать но у меня handle все время подчеркивается
Application какого типа переменная?
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621169
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsqlВезде написано что надо так это делать но у меня handle все время подчеркивается
Консольное приложение?
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621170
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsql,

Uses Forms есть?
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621173
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsql,

Кстати, есть сомнения в правильности IsWindowVisible(Application.Handle). Может лучше Application.MainForm.Handle?
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621174
apexplsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,
Да, просто консоль
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621176
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterКстати, есть сомнения в правильности IsWindowVisible(Application.Handle). Может лучше Application.MainForm.Handle?

Зависит от версии Delphi и состояния MainFormOnTaskbar.

Попытка скопировать код без его понимания в очередной раз родит говнокод.
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621178
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsqlwadman,
Да, просто консоль

Ну и какой Application у консоли?-) Не, можно конечно и зайца научить курить, но зачем?
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621180
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsqlДа, просто консоль

Окно для консольного приложения показывает не само приложение, а система. Откуда следует, что значком на панели задач невозможно манипулировать изменяя объекты приложения.

В отличие от консольного, GUI-приложение свои окна создаёт само, поэтому имеет полный контроль над ними - включая значок на панели задач.

Однако, вызывающий консольного приложения может указать параметры его запуска. В т.ч. безоконный режим.
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621181
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterесть сомнения в правильности IsWindowVisible(Application.Handle)
авторProvides access to the window handle of the main form (window) of the application.
Думаешь, отличаются?
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621182
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanDarkMasterесть сомнения в правильности IsWindowVisible(Application.Handle)
авторProvides access to the window handle of the main form (window) of the application.
Думаешь, отличаются?

А вот не помню - что-то в голове крутится,а вспомнить не могу - склероз :(
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621203
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, отличаются.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure TApplication.CreateHandle;
// ...
begin
  if not FHandleCreated and not IsConsole then
  begin
    // ...
    FObjectInstance := MakeObjectInstance(WndProc);
    LHandle := CreateWindowEx(WS_EX_TOOLWINDOW, WindowClass.lpszClassName, (FTitle),
      WS_POPUP or WS_CAPTION or WS_CLIPSIBLINGS or WS_SYSMENU
      or WS_MINIMIZEBOX,
      GetSystemMetrics(SM_CXSCREEN) div 2,
      GetSystemMetrics(SM_CYSCREEN) div 2,
      0, 0, 0, 0, HInstance, nil);
    FHandle := LHandle;
    FHandleCreated := True;
    SetWindowLong(FHandle, GWL_WNDPROC, LPARAM(FObjectInstance));
    // ...
  end;
end;



Это отдельное окно, которое создаётся всегда (да, даже если MainFormOnTaskBar = True).

авторProvides access to the window handle of the main form (window) of the application.

Это явная ложь. Она появилась из-за попытки объяснить неочевидное устройство окон в старых версиях Delphi простыми словами. И до сих пор никто документацию не поправил. Смысл этих слов: если вам нужно окно-родитель (кнопка на панели задач) в старых версиях Delphi (или в новых, но с MainFormOnTaskBar = False) - то берите Application.Handle, это корень иерархии.
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621213
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного истории от разработчиков Delphi: https://stackoverflow.com/questions/2204804/delphi-what-is-application-handle
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621277
Салями
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никогда не понимал что же именно делает MakeObjectInstance(), хотя читал много и медленно вдумчиво.
А главное - зачем оно это делает? Делать как делают все WinAPI программы нельзя было почему-то?
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621291
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Салямихотя читал много и медленно вдумчиво.
Вроде прозрачно написано:
This can be particularly useful when using classes that do not have a Windows handle but need to receive Windows Messages.
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621293
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СалямиНикогда не понимал что же именно делает MakeObjectInstance()Делает метод класса оконной процедурой, которую может вызывать Windows
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621304
Салями
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не... Оно вроде как делает какой-то некий динамический код, который получается regular procedure, и просто вызывает заданный метод конкретного захардкоденного экземпляра класса.
А я не понял ни механику данного действа, ни нафига так извыворачиваться... В других библиотеках вроде ж таких финтов не проворачивают, и всё ок.
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621317
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Салями, я могу ошибаться, но предполагаю, что было желание не использовать доступные в WinAPI user-параметры (типа GWL_USERDATA и т.п.), оставляя их свободными для внешнего кода.
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621348
Салями
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гм... Всё может быть... Но обычно все спокойно используют GWL_USERDATA, и сабклассингу это не мешает, вроде наоборот даже упрощает.
А если зачем-то сильно нужно не трогать GWL_USERDATA - есть второй вариант: SetProp(). С которым в VCL вроде как тоже малость перемудрили: https://habrahabr.ru/post/217189/
...
Рейтинг: 0 / 0
Ошибка на handle
    #39621394
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Салями,
делало ...

сделано это было что бы натянуть безобразие из WinAPI на объектную модель, тогда ещё в винде не было поддержки сабклассинга
кроме того, это быстрее чем любые словари


авторuser-параметры (типа GWL_USERDATA и т.п.), оставляя их свободными для внешнего кодаЭто не сильно мешает, в tagWNDCLASSEX есть информация сколько экземпляр окна потребляет байт под свои нужды. Для корректного "наследовании" и использовании готового класса эту информацию нужно учитывать, а не лупить сразу по [GWL_USERDATA].
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка на handle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]