Canvas does not allow drawing как исправить

I want to Draw a Screenshot from the entire screen to a TForm1 Canvas.

This code works well in Delphi XE3

procedure TForm1.Button1Click(Sender: TObject);
var
  c,scr: TCanvas;
  r,r2: TRect;
begin

  c := TCanvas.Create;
  scr := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  try

    r := Rect(0, 0, 200, 200);
    form1.Canvas.CopyRect(r, c, r);

  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;

Now I want to copy the screenshot to another canvas first.
Is there a way to do this without getting this error?

procedure TForm1.Button1Click(Sender: TObject);
var
  c,scr: TCanvas;
  r,r2: TRect;
begin

  c := TCanvas.Create;
  scr := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  try

    r := Rect(0, 0, 200, 200);

    scr.CopyRect(r,c,r); <-- Error, canvas does not allow drawing
    form1.Canvas.CopyRect(r, scr, r); <-- Error, canvas does not allow drawing

  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;

В чем вопрос-то? Куда нажать, чтобы увидеть? На свежей альфе? Знаете-ка что…. Этой ошибке ТРИСТА ЛЕТ! Посмотрите на дату исходного сообщения – март 2006 года.

Никуда не нажать. Эта ошибка возникает сама по себе и непредсказуемо. И чем дальше бат деградирует (с увеличением номера версии) – тем чаще.

Я ж сказал – на форумах по дельфи про такую проблему знают, знают про ее причины и знают, что надо делать, чтобы она не возникала. И всяких новичков терпеливо учат, как надо программировать многопоточные приложения.

Также, когда я искал информацию об этой ошибке, я видел много релизов РАЗНЫХ программ, в описании к которым было указано, что в этой версии “исправлена ошибка, приводящая к Canvas does not allow drawing и к Acsess violation at address”.

Отрицать очевидное бессмысленно – ошибка в Бате есть, и причина ее – корявое программирование, рассинхронизация процессов, утечки памяти.

Беда в том, что эту ошибку в Бате уже НИКОГДА не исправить!!! Слишком все запущено. Я представляю, сколько кода надо перелопатить. А код уже давно такой, что в одном месте тронешь – в трех других сразу рассыпается.

Ошибка – Canvas does not allow drawing

KonstantinDKM

Отредактировано KonstantinDKM11.01.2015, 16:31

16:30, 11.01.2015 | #1

Нет аватара

Сообщений: 13

Добрый день, установил 10 на свой комп и пакет локализации 0.8 Все бы хорошо да вот только винду дико кроет и за одного бага природу которого я не могу понять. Когда он происходит пропадает кнопка пуск, сбиваются шрифты, вместо названий становятся крякозябрики, все тексты становятся жирными, хотел бы показать скриншот но сообщение об ошибке мешает их сохранить.

ChangeBtnPos, err:Canvas does not allow drawing

И за этого приходится перезаходить каждые 2 часа, если честно уже порядком достало. Но иногда комп просто виснет при повторном логине.
довольно таки мощный fx 8320@ 4.2, 8gb, gtx570. Сейчас набираю опять этот баг начался….

sysprg

Отредактировано sysprg11.01.2015, 18:14

18:17, 11.01.2015 | #2

Аватар sysprg

Почетный

Цитата KonstantinDKM ()

только винду дико кроет

Это не Windows кроет, а одно из установленных Вами приложений, на Delphi или того хуже, VB. Вы даже не сообщили о каком билде идет речь и о том, какие приложения гоняете.

Добавлено (11.01.2015, 18:17)
———————————————
Все жалобы на это сообщение относятся именно к подобным приложениям, причем в среде XP, очень старые. В отдельных случаях помогает запуск приложения от администратора.

bl99panda

Отредактировано bl99panda11.01.2015, 19:03

19:03, 11.01.2015 | #3

Нет аватара

Сообщений: 10

Сидел на всех билдах 10ки проблемы такой не было тебе правильно сказали проблемма с софтом…

KonstantinDKM

Отредактировано KonstantinDKM11.01.2015, 19:45

19:30, 11.01.2015 | #4

Нет аватара

Сообщений: 13

Ну в общем так, играю в Star Trek Online, Star Conflict, Word of Warkraft 5.4.8. biggrin
Установлен Eset Smart Security 8.0, торрент клиент, рк, тим спик, Adobe Photoshop CS3.
Поставил был PerfectDisk но у него не было доступа к жд. Удалил, поставил Smart Defrag последний.
Конвертирую видео в XvidPSP, установлены последние кодеки, DirectX 9 и С++ все версии. Как то раз автоматом на комп поставился анти спай от Iobit комп намертво повис когда оно открылось, удалил. angry2

Фиг его знает как понять по чему меню пуск превращается в кашу и система либо перезапукает рабочий стол, либо самому на выход, и то потом бывает зависание намертво, а вчера вообще было зависание 7 раз подряд при загрузке рабочего стола.. стало последней каплей…

Как то раз был вылет в синий экран, тогда посмотрел логи а там chkdsk.exe+8470
DPC_WATCHDOG_VIOLATION как то так…

Билд 9879

Вот только что ради интереса нажал сменить аватар в меню пуск и сразу

опять пошли эти глюки.

sysprg

Отредактировано sysprg11.01.2015, 19:53

19:50, 11.01.2015 | #5

Аватар sysprg

Почетный

Могу лишь посоветовать сносить приложения по одному в обратной к порядку установки последовательности и проверять не возникают ли описанные ошибки. Другой вариант – сразу снести самые старые по возрасту создания приложения, те, котрые Вы еще под XP гоняли, если таковые имеются. Ни с одним из перечисленных Вами, кроме С++ никогда не имел дел. smile

maxaon09

Отредактировано maxaon0911.01.2015, 19:56

19:55, 11.01.2015 | #6

Аватар maxaon09

Почетный

Сообщений: 561

Цитата KonstantinDKM ()

поставился анти спай от Iobit комп намертво повис когда оно открылось

Вот отсюда и пляши, я бы ещё и Eset Smart Security убрал и все приложения от Мэил-ру (ещё та срань зараза) и т.п. Если есть точка восстановления до проблемы откатись. Как вариант Восстановление компьютера без удаления Файлов: “Если ваш компьютер работает неправильно, вы можете его восстановить без потери фотографий, музыки, видео и других личных файлов.” Программки придется переустановить

KonstantinDKM

20:13, 11.01.2015 | #7

Нет аватара

Автор темы

Сообщений: 13

Без антивируса тож не вариант.. нет никакой антивир защиты у провайдера, часто происходят сканирования портов, мдс и проч гадость. У меня стоит майл ру агент последняя версия. Опера.
На 7 тоже откат не хочу, прирост производительности уже очень ощутимый, загружается очень быстро.
Вопрос еще гаджеты от 8.1 могут быть причиной таких провалов? Из гаджетов стоит ток монитор системы 2, и погодка.

Да вот еще что замечали ли вы проблемы с файлом подкачки? Система поставила на С и размер аж 9 ГБ, убрал в ручную выставил 2 ГБ макс, и переместил на другой диск. Один раз было такое что комп стал дико тормозить при конвертировании, посмотрел на монитор, файл подкачки заполнен 100%, а память свободно 60%. Что это может быть?
Из приложений времен Хр стоит ток XvidPSP 5.3 ибо только им можно нормально делать рипы.

sysprg

Отредактировано sysprg11.01.2015, 20:45

20:44, 11.01.2015 | #8

Аватар sysprg

Почетный

Цитата KonstantinDKM ()

XvidPSP 5.3

А вот этот зверь как раз и упоминался как источник ошибки! Снесите и проверьте, не знаю, кто такие рипы, но можете 10 минут без них прожить? Или проверьте запуск этой проги от администратора

otto600

Отредактировано otto60011.01.2015, 21:03

20:54, 11.01.2015 | #9

Нет аватара

Цитата sysprg ()

А вот этот зверь как раз и упоминался как источник ошибки

Именно, в нем есть или для его работы требуется такая мерзость как к-лайт глюко пак, которая калечит систему и корректно удалить его и искоренить остатки не возможно кроме как переустановка ОС. Также этот зверь, когда то заброшенная разработка, теперь поддерживаемая и обновляемая только энтузиастами рутрекера в “домашних условиях” на “коленке”.

KonstantinDKM
Попробуйте MeGui и функционал для работы с HD побольше и ни чего вредного для системы нет. Хотя что тот что эта всего лишь графическая морда для многих консольных прог, которыми можно успешно работать без Гуев, тот же eac3to + x264.exe+avisynth. Да и зачем при современном железе, объемах ОЗУ и емкости носителей-HDD заниматься рипованием – ремукс если надо выкинуть лишнее и перекодировать аудио.

KonstantinDKM

Отредактировано KonstantinDKM11.01.2015, 21:41

21:37, 11.01.2015 | #10

Нет аватара

Автор темы

Сообщений: 13

Ну не у всех еще хороший интернет который позволяет качать от 40гб и выше. Ремуксы легко делаются в мкв мерге, но вот что то и с ним не так. Значит недавно делал рип, видео отдельно, а дорожку с блюрика вынул,концерт, чаптеры сделал, мало того что мерге не корректно выставил мои чаптеры, так еще ближе к концу видео рассинхрон видео и картинки. Сначала все превосходно минута в минуту идет.. а в конце такая хрень. Уж очень он как то быстро создавал файл в 12 гб, я вначале не сильно придал этому значение, ну все таки новая винда и т.д . Хорошо хоть ремуксы не испортил, а то в сеть вылаживаю…
Теперь понятно, этот зверь последний раз показал мне ахинею, резал блюрик, на отдельные части, 4 минуты хотел кодировать 10 часов….
Надо подбирать замену.. жаль. Знаю.. 6 его версия шлак полный.

otto600

21:46, 11.01.2015 | #11

Нет аватара

KonstantinDKM, подготавливайте материал вот этим, учитывает задержки видео/аудио, исправляет ошибки в потоках

eac3to и как им пользоваться

PainteR

22:26, 11.01.2015 | #12

Аватар PainteR

DG Win&Soft

Почетный

KonstantinDKM, а мир тесен happy
Решили наконец разобраться? А не меня грязью поливать? dry
http://nnm-club.me/forum/viewtopic.php?p=7055776#7055776

И на счет антивируса: антивирусы используют часто нестандартные приемы для борьбы с вредоносным ПО и они часто создаются под конкретную версию ОС (тот же драйвер), поэтому ставить антивирусное ПО на тех. релиз без подтверждения работы от производителя не имеет смысла, только “дров наломать”.
Но это отдельная тема, для списка совместимых антивирусов и т.п.

MisterMyth

22:27, 11.01.2015 | #13

Аватар MisterMyth

otto600, k lite codec pack калечит систему? Не верю. Много лет пользуюсь только им и без проблем.

otto600

Отредактировано otto60011.01.2015, 23:48

23:14, 11.01.2015 | #14

Нет аватара

MisterMyth,
А зачем им пользоваться много лет, для просмотра/прослушивания любой плеер все играет из коробки своими внутренними декодерами с dxva (mpc hc/be, pot player…). А если нужны фильтры для програм конвертирования, достаточно ffdshow или LAV. А в кодепаке все существующие фильтры и кодеки собраны в кучу и конфликтуют между собой.
К-лайт был актуален версий 1и2, когда кроме WMP ничего не было. А современные версии это нонсенс, там и LAV и ffdshow и core, вот и приходится по настройкам плееров скакать приоритеты кодекам задавать, что бы друг у друга декодирование не перехватывали.
Вот MPC BE и никаких глюко паков

KonstantinDKM

23:59, 11.01.2015 | #15

Нет аватара

Автор темы

Сообщений: 13

Прошу прощения, рассматривал разные варианты проблемы, а учитывая что названия файлов превращаются в кашу, грешил на русификатор. sad
Вообще по идее если это есет то система должна была бы обваливаться при загрузке раб. стола по скольку он все время первым грузится.
И ни один антивирус не даст 100% совместимость, под бета версии ни кто такого не делает.

Насчет глюко пака, тоже с вами не согласен , стоял на старом компе, и на новом тоже. А вот всякие там Win7 паки это баги и т.п.
Установлен еще VLC 32 битный с кучей своих кодеков. AIMP, MKV Chaptlizer. Кстати недавно вторая прога Spyware Terminator так же вызвала зависание при загрузке, удалил сразу же.
Увы меню пуск все так же глючит, перебрал уже все программы.

  • Страница 1 из 2
  • 1
  • 2
  • »
Windows 8.1
  • Вопросы и ответы по Windows 8.1
  • Установка Windows 8.1
  • Оформление Windows 8.1
  • Обои / Wallpapers
  • Курсоры / Cursors
Популярное
  • Сбор и анализ общественного Wi-Fi трафика
  • Где приобрести цифровое весовое оборудование
  • Моддинг современных компьютерных корпусов – нюансы окраски
  • Где заказать печать для брендирования и мерча
  • Как закрыть или ликвидировать компанию онлайн
  • Онлайн-сервис климат-контроля для предприятий
  • Где оформить экспресс-доставку из Китая
  • Где заказать доставку из Китая
  • Современное производство и цифровые технологии
  • Где заказать качественную УФ-печать

Содержание

  1. Ошибка: Canvas does not allow drawing
  2. Решение
  3. Ошибка с классом (Canvas does not allow drawing)
  4. Canvas does not allow drawing как исправить
  5. Кто сейчас на форуме
  6. Canvas does not allow drawing как исправить

Ошибка: Canvas does not allow drawing

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Потоки, ошибка «Canvas does not allow drawing»
учусь работать с потоками..запускаю потоки все нормально, но иногда вылазить ошибка (прикрепил к.

Ошибка «Canvas does not allow drawing»
Здравствуйте, у меня такая проблема. При попытки скачать картинку через: TFileStream *fsjpg =.

Canvas does not allow drawing
Используя потоки + скин на программу, у меня выдает такую ошибку Canvas does not allow drawing.

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

Добавлено через 22 секунды
Почему все так любят GetDesktopWindow? Ноль там должен быть, ноль.

Решение

Помощь в написании контрольных, курсовых и дипломных работ здесь.

canvas does not allow drawing
программа предназначена для стандартизации записи телефонных номеров. При запуске через раз получаю.

Нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D
Задача нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D. С.

tickОшибка в System.Drawing.dll (Недопустимый параметр)
Ро таймеру отрисовываю экран в пикчербокс. Примерно через 3-5 секунд возникает ошибка в строке bmp.

Drawing operation was attempted when there was no current window. Что за ошибка?
Пытаюсь запустить програмку из конспекта, который дали для изучения материала, а она не хочет.

Источник

BB-код ссылки (для форумов):

rank1

Добрый день, установил 10 на свой комп и пакет локализации 0.8 Все бы хорошо да вот только винду дико кроет и за одного бага природу которого я не могу понять. Когда он происходит пропадает кнопка пуск, сбиваются шрифты, вместо названий становятся крякозябрики, все тексты становятся жирными, хотел бы показать скриншот но сообщение об ошибке мешает их сохранить.

9370ec53de54

ChangeBtnPos, err:Canvas does not allow drawing

И за этого приходится перезаходить каждые 2 часа, если честно уже порядком достало. Но иногда комп просто виснет при повторном логине.
довольно таки мощный fx 8320@ 4.2, 8gb, gtx570. Сейчас набираю опять этот баг начался.

BB-код ссылки (для форумов):

Добавлено (11.01.2015, 18:17)
———————————————
Все жалобы на это сообщение относятся именно к подобным приложениям, причем в среде XP, очень старые. В отдельных случаях помогает запуск приложения от администратора.

BB-код ссылки (для форумов):

rank1

BB-код ссылки (для форумов):

rank1

Ну в общем так, играю в Star Trek Online, Star Conflict, Word of Warkraft 5.4.8. biggrin
Установлен Eset Smart Security 8.0, торрент клиент, рк, тим спик, Adobe Photoshop CS3.
Поставил был PerfectDisk но у него не было доступа к жд. Удалил, поставил Smart Defrag последний.
Конвертирую видео в XvidPSP, установлены последние кодеки, DirectX 9 и С++ все версии. Как то раз автоматом на комп поставился анти спай от Iobit комп намертво повис когда оно открылось, удалил. angry2

Фиг его знает как понять по чему меню пуск превращается в кашу и система либо перезапукает рабочий стол, либо самому на выход, и то потом бывает зависание намертво, а вчера вообще было зависание 7 раз подряд при загрузке рабочего стола.. стало последней каплей.

Как то раз был вылет в синий экран, тогда посмотрел логи а там chkdsk.exe+8470
DPC_WATCHDOG_VIOLATION как то так.

Вот только что ради интереса нажал сменить аватар в меню пуск и сразу

e3a2304b2f04t

опять пошли эти глюки.

BB-код ссылки (для форумов):

BB-код ссылки (для форумов):

BB-код ссылки (для форумов):

rank1

Без антивируса тож не вариант.. нет никакой антивир защиты у провайдера, часто происходят сканирования портов, мдс и проч гадость. У меня стоит майл ру агент последняя версия. Опера.
На 7 тоже откат не хочу, прирост производительности уже очень ощутимый, загружается очень быстро.
Вопрос еще гаджеты от 8.1 могут быть причиной таких провалов? Из гаджетов стоит ток монитор системы 2, и погодка.

Да вот еще что замечали ли вы проблемы с файлом подкачки? Система поставила на С и размер аж 9 ГБ, убрал в ручную выставил 2 ГБ макс, и переместил на другой диск. Один раз было такое что комп стал дико тормозить при конвертировании, посмотрел на монитор, файл подкачки заполнен 100%, а память свободно 60%. Что это может быть?
Из приложений времен Хр стоит ток XvidPSP 5.3 ибо только им можно нормально делать рипы.

Источник

Ошибка с классом (Canvas does not allow drawing)

Вообщем написал класс и для удобства поместил его в отдельный модуль

Но когда из основного приложения вызываю функцию DrawMap то вылетает ошибка
Canvas does not allow drawing

Благодарен за любую помощь

Добавлено через 11 минут
Проблема решилась удалением can:= TCanvas.Create;
Объясните нубу про эти классы плиз smile3

Помощь в написании контрольных, курсовых и дипломных работ здесь.

tickОшибка: Canvas does not allow drawing
после N запусков вот этой функции function GetGPixelColor(X, Y: Integer): BYTE; var c.

Потоки, ошибка «Canvas does not allow drawing»
учусь работать с потоками..запускаю потоки все нормально, но иногда вылазить ошибка (прикрепил к.

Ошибка «Canvas does not allow drawing»
Здравствуйте, у меня такая проблема. При попытки скачать картинку через: TFileStream *fsjpg =.

Canvas does not allow drawing
Используя потоки + скин на программу, у меня выдает такую ошибку Canvas does not allow drawing.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

canvas does not allow drawing
программа предназначена для стандартизации записи телефонных номеров. При запуске через раз получаю.

Нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D
Задача нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D. С.

tickОшибка в System.Drawing.dll (Недопустимый параметр)
Ро таймеру отрисовываю экран в пикчербокс. Примерно через 3-5 секунд возникает ошибка в строке bmp.

Drawing operation was attempted when there was no current window. Что за ошибка?
Пытаюсь запустить програмку из конспекта, который дали для изучения материала, а она не хочет.

Источник

Canvas does not allow drawing как исправить

_________________
Если бы на станции «Мир» стояли Винды, она бы еще висела и висела.

spacer

Мурик folder lock
Друг Кота
file.php?avatar=26374 1498288302

Карма: 3
Рейтинг сообщений: 140
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3171
Рейтинг сообщения: 0

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

spacer
paskal folder lock
Нашел транзистор. Понюхал.
file.php?avatar=43313 1423302042

Зарегистрирован: Пн сен 05, 2011 10:03:06
Сообщений: 160
Откуда: Тула
Рейтинг сообщения: 0

_________________
Если бы на станции «Мир» стояли Винды, она бы еще висела и висела.

spacer
ДанилКоржов folder lock

Зарегистрирован: Вт янв 16, 2018 23:18:46
Сообщений: 3
Рейтинг сообщения: 0

Продуктовая линейка компании KLS на складе Компэл пополнилась модульными соединителями типа RJ. Ассортимент представлен неэкранированными соединителями RJ11, RJ12 и RJ45 для построения базовых информационных сетей, а также экранированными RJ45 с трансформатором для реализации систем передачи данных межу узлами ЛВС.

spacer
SIM31 folder lock
Это не хвост, это антенна
file.php?avatar=86783 1365110605

Карма: 17
Рейтинг сообщений: 20
Зарегистрирован: Чт апр 04, 2013 22:22:57
Сообщений: 1309
Откуда: Белгород, РФ
Рейтинг сообщения: 0

Вебинар пройдет 16/09/2021 и будет посвящен особенностям работы высокопроизводительных микроконтроллеров STM32H7. На вебинаре разберем ключевые особенности линеек STM32H72/3 и проведем практическую работу с оценкой производительности с использованием ускорителей и кэш-буфера при чтении инструкций из внутренней и из зашифрованной внешней памяти. Для отображения результатов будет использоваться программная среда STM32CubeMonitor.

spacer

Часовой пояс: UTC + 3 часа

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Источник

Canvas does not allow drawing как исправить

topdown
WondeRu © ( 2005-03-11 17:17 ) [1]

self.PB.Canvas.Lock;
try
.
здесь рисуем.
..
finally
self.PB.Canvas.UnLock;
end;

topdown
MBo © ( 2005-03-11 17:31 ) [2]

>Данный код написан в обработчике событий onMouseMove

Может он начинает выполняться, когда еще не кончился
предыдущий вывод, тогда может быть что угодно.
Надо помечать что выполняется и обходить.

>В однопоточных приложениях два события не могут выполняться одновременно.

Верно, одно из них будет остановлено в случайном месте
и если второе это тоже самое onMouseMove то тот же код
начнет рисовать недорисованный canvas, а это ни к чему
хорошему не приведет.

>пока не отработае onTime событие onMouseMove не возникнет!

С таким убеждением вас ждут сюрпризы, когда
переменные будут внезапно меняться вроде как сами по себе.
А как же тогда по вашему можно остановить работающую программу
нажатием кнопки?
Вот пример показывает что все события запускается независимо
от того закончилась ли обработка предыдущего:

procedure TForm1.Button1Click(Sender: TObject);
var i:dWord;
begin
i:=GetTickCount+20000;
while GetTickCount

>Ttimer не создаёт нового потока для обработки событий

Потоки это участки кода переключаемые windows по времени.
События запускаются и преключаются внешними причинами
потоков им не надо, но запускаться и работать
они обязаны когда эти причины произойдут,
а все остальное будет стоять пока не закончится
последнее возникшее или не возникнет новое.

topdown
wicked © ( 2005-03-14 10:53 ) [6]


> Верно, одно из них будет остановлено в случайном месте
> и если второе это тоже самое onMouseMove то тот же код
> начнет рисовать недорисованный canvas, а это ни к чему
> хорошему не приведет.

бред.

topdown
Анонимщик1 ( 2005-03-14 11:52 ) [7]

Darklight
Ты уверен, что приложение однопоточное? Что оно из себя представляет? Какие классы (особенно не свои и не-борландовские) используешь?

topdown
Анонимщик1 ( 2005-03-14 13:33 ) [9]

Тогда посмотри какой-нибудь утилитой утечку графических ресурсов.

Какой?
Никода о них не слышал?

topdown
WondeRu © ( 2005-03-14 14:51 ) [11]

topdown
Анонимщик1 ( 2005-03-14 14:57 ) [12]

Посмотреть можно хотя бы с помощью диспетчера задач, только нужно выбрать столбцы нужные.
И см., например, http://www.delphikingdom.com/tower/index.asp?CategoryID=6

topdown
Анонимщик1 ( 2005-03-14 14:59 ) [13]

Обломись, VTune тебе не нужен

[12] Что значит обломись?
VTune не нужен?
Почему?

Возможно, но Именно так работает приведенный пример
при многократном нажатии на button1

>Анонимщик1
>Ты же своим ProcessMessages насильно выбираешь и обрабатываешь сообщение из очереди

Я просто показал что повторное выполнение события обычная вещь
и если выводить на экран какими-то системными процедурами
то никто не гарантирует что произойдет то же самое.

>Но ведь тогда пришлось бы синхронизировать функции, вызванные в контексте одного (скажем, главного)

>потока, в плане разделения ресурсов. Ты сам-то так когда-нибудь делал? Короче, думай, что говоришь.

Я просто не допускаю повторного выполнения кода.
Иначе могут выскакивать произвольные ошибки в произвольное время. И говорю я на основе своего горького опыта:
Хотя никто не запрещает делать в Button1Click, MouseMove все что угодно,
но если возникают случайные ошибки мне не раз помогало
вынесение обработки в timer.

topdown
Анонимщик1 ( 2005-03-15 11:01 ) [16]

Darklight
VTune слишком крут для твоей (видимо, не очень сложной) проблемы.

programania
Извини, но разгребать кашу в твоей голове сил, наверное, нет ни у кого. Кроме стандартных пожеланий читай MSDN и Рихтера у меня для тебя ничего больше нет.

Источник

kessor

4 / 4 / 2

Регистрация: 27.10.2014

Сообщений: 90

1

15.02.2016, 13:09. Показов 9674. Ответов 6

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

после N запусков вот этой функции

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function GetGPixelColor(X, Y: Integer): BYTE;
var
 c: TCanvas;
Col: TColor;
begin
c := TCanvas.Create;
  try
    c.Handle := GetWindowDC(GetDesktopWindow);
    Col   := GetPixel(c.Handle, X, Y);
    Result := GetGValue(Col);
  finally
    c.Free;
  end;
end;

программа вылетает с ошибкой canvas does not allow drawing
как исправить?



0



Пишу на Delphi…иногда

1423 / 1278 / 286

Регистрация: 03.12.2012

Сообщений: 3,914

Записей в блоге: 5

15.02.2016, 13:25

2

Цитата
Сообщение от kessor
Посмотреть сообщение

как исправить?

GetWindowDC

After painting is complete, the ReleaseDC function must be called to release the device context. Not releasing the window device context has serious effects on painting requested by applications.



0



kessor

4 / 4 / 2

Регистрация: 27.10.2014

Сообщений: 90

15.02.2016, 14:06

 [ТС]

3

то есть просто добавить строчку

Pascal
1
ReleaseDC(GetDesktopWindow,GetWindowDC(GetDesktopWindow));

?



0



588 / 455 / 147

Регистрация: 09.12.2013

Сообщений: 2,385

Записей в блоге: 2

15.02.2016, 16:20

4

Зачем вообще TCanvas? Просто HDC возьмите. И да, освобождать надо.

Цитата
Сообщение от kessor
Посмотреть сообщение

canvas does not allow drawing

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

Добавлено через 22 секунды
Почему все так любят GetDesktopWindow? Ноль там должен быть, ноль.



0



kessor

4 / 4 / 2

Регистрация: 27.10.2014

Сообщений: 90

15.02.2016, 17:27

 [ТС]

5

а так можно цвет пикселя получать?

Pascal
1
2
3
4
5
6
7
function GetGPixelColor(X, Y: Integer): BYTE;
var
Col: TColor;
begin
Col   := GetPixel(GetDC(0), X, Y);
Result := GetGValue(Col);
end;



0



BOGG ART

588 / 455 / 147

Регистрация: 09.12.2013

Сообщений: 2,385

Записей в блоге: 2

15.02.2016, 18:40

6

Лучший ответ Сообщение было отмечено kessor как решение

Решение

Я же говорю – возьмите переменную HDC, освобождайте.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function GetPixelColor(X, Y: Integer): TColor;
var DC: HDC;
begin
DC:=GetDC(0); // !!!
Result:=GetPixel(DC, X, Y);
ReleaseDC(0, DC); // !!!
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
var Col: TColor;
begin
with Mouse.CursorPos do
      Col:=GetPixelColor(X, Y);
Color:=GetGValue(Col);
end;



1



4 / 4 / 2

Регистрация: 27.10.2014

Сообщений: 90

18.02.2016, 17:03

 [ТС]

7

после ~100 итераций начинает выдавать всегда одно и то же значение(для G – 255)
помогает перезапуск проги
как исправить?



0



Добавить комментарий