Delay

Переписал всё, отказавшись от первоначального кода, с которого все началось. Получилось почти в 2 раза короче.
🐱Код

Интересные диалоги с учителем в течение дня

tolik: слушай, а зачем в твоем цикле Delay(10)? я его убрал — вроде так же работает (код)
deseven: мне было нехуй делать и я его туда написал
deseven: https://ru.wikipedia.org/wiki/Многозадачность
tolik: я ж не упрекаю, я спрашиваю
deseven: ?
s
deseven: ???
bez
tolik: не понял. оно потребляет на 300 кб больше оперативки?
tolik: *на 300 кб
deseven: сравни попиксельно
tolik: не понимаю
deseven: на что может влиять delay()?
tolik: хз. пойду почитаю справку
deseven: а, понятно
deseven: что такое delay()?
tolik: задержка
tolik: ну справка на этот счет довольно суха. ни о какой экономии памяти ничего нет
deseven: чего это задержка?
deseven: памяти?
deseven: типа ТЫ НЕ ПРОЙДЕЕЕЕШЬ ПАМЯТЬ ЕБАНАЯ
tolik: нет. это задержка работы программы, которая не дает грузить проц. то есть надо смотреть не на память а на проц, где разница 0.3 и 0.4
deseven: а на графике?
tolik: а
tolik: а что это значит?
deseven: при вставке
deseven: ну 1 ядро на 100% загружается
deseven: из восьми
tolik: хм
tolik: а при задержке в 10 миллисекунд не загружается вовсе?
deseven: 10мс это громадное время для компьютера
deseven: загружается минимально
tolik: понял. оставлю

tolik: пока формулировал следующий вопрос письменно — нашел ответ
deseven: что за ответ?
tolik: вопрос:
http://pastebin.com/74Yrr6Dn
Почему не работает конструкция

CreateImage(#icon,16,16)
StartDrawing(ImageOutput(#icon))
Circle(8,8,7,$000000)
StopDrawing()

ответ:

AddSysTrayIcon(#SysTrayIcon,WindowID(#Window),ImageID(#icon))

deseven: эээ
deseven: а ты хотел чтобы что?
deseven: чтобы оно работало без вызова добавления иконки в трей?
tolik: в коде по ссылке я забыл ImageID
AddSysTrayIcon(#SysTrayIcon,WindowID(#Window),#icon)
deseven: а
tolik: сейчас иконка в трее отображается, но вместо черного кругляшка там квадратик. разбираюсь
deseven: ты рисуешь черный кругляш на черном
deseven: рисуй с alphablending и сначала фон $00000000
deseven: чтобы был прозрачный
tolik: вот так не работает

CreateImage(#icon,16,16)
StartDrawing(ImageOutput(#icon))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0,0,16,16,$00000000)
Circle(8,8,3,$ffffffff)
StopDrawing()

вот так работает

CreateImage(#icon,16,16,32,#PB_Image_Transparent)
StartDrawing(ImageOutput(#icon))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0,0,16,16,$00000000)
Circle(8,8,3,$ffffffff)
StopDrawing()

deseven: мб
deseven: я не помню, давно с картинками не работал
deseven: а в текстурах из коробки уже альфаканал есть
tolik: а есть аналог для AddSysTrayIcon только для самого окна?
deseven: https://social.msdn.microsoft.com/Forums/vstudio/en-US/dee0ac69-4236-49aa-a2a2-0ac672147769/win32-c-how-do-i-change-the-window-icon-during-runtime?forum=vcgeneral
deseven: hWnd это WindowID()
deseven: как можно было бы запомнить уже работая с winapi
deseven: ну и во все апи вызовы добавляется _ в конце
tolik: я-то с ним работаю только ничего не понимаю
deseven: ну чо не понимаешь то
было

SendMessage(hWnd, WM_SETICON, ICON_SMALL, icon)

стало

SendMessage_(WindowID(0),#WM_SETICON,#ICON_SMALL,ImageID(icon))

tolik: интересно. addSysTrayIcon есть апи-независимое, а для иконки приложения надо апи =(
deseven: потому что так никто не делает
deseven: у тебя все равно иконки на самом приложении не будет же
tolik: не понял. а что мы тогда делаем вообще?
deseven: я не понимаю как ты вообще можешь кодить если не понимаешь когда твой код выполняется
deseven: ты думаешь ты эту функцию вызовешь и при заходе в папку с твоей прогой у нее иконка появится?
deseven: ты думаешь что если ты заходишь в папку с экзешниками они все выполнятся начнут сразу же что ли?
tolik: то есть задавать только через компилер опшнс…