Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Вывод лога на Ассемблере

19.09.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Если при работе вашей программы требуется вывод лога неопределенной длины, то это удобно делать в многострочном поле Edit. Преимущества такого способа налицо: можно мышкой выделить и скопировать любой кусок текста, средствами API получить весь текст целиком и сохранить в файл, быстро очистить окно лога и многое другое. Удобно делать все, кроме главного: добавление новых строчек в лог. Конечно, можно получать текст, в памяти добавлять к нему новые строчки и вставлять обратно. Но это долго, неудобно и требует дополнительных ресурсов, а для очень больших логов и вовсе неприемлемо. Поэтому воспользуемся следующей функцией:
  1. ;---------------------------------------------
  2. ; procedure AddLog
  3. ; void AddLog(hWnd:dword,CtrlID:dword,pStr:&string)
  4. ;---------------------------------------------
  5. proc    AddLog  hWnd:dword,CtrlID:dword,pStr:dword
  6.         push    eax
  7.         invoke  GetDlgItem,[hWnd],[CtrlID]
  8.         or      eax,eax
  9.         jz      .AddLog_1
  10.         mov     [CtrlID],eax
  11.         invoke  SendMessage,[CtrlID],EM_GETLINECOUNT,0,0
  12.         dec     eax
  13.         invoke  SendMessage,[CtrlID],EM_LINEINDEX,eax,0
  14.         invoke  SendMessage,[CtrlID],EM_SETSEL,eax,eax
  15.         invoke  SendMessage,[CtrlID],EM_REPLACESEL,FALSE,[pStr]
  16. .AddLog_1:
  17.         pop     eax
  18.         ret
  19. endp  
Парметры вызова: hWnd - хэндл окна, которому принадлежит дочернее окно логом, CtrlID - идентификатор окна Edit в ресурсах, pStr - указатель на строку ASCIIZ, которую надо записать в лог.

Читать статью целиком »
Просмотров: 5993 | Комментариев: 5

Готовим маки-суши (роллы)

16.09.2008 | Категория: А еще я туда ем! | Автор: ManHunter

Маки-суши (роллы)

Сегодня будем готовить маки-суши, или как их еще называют, роллы. Маки-суши, в свою очередь, подразделяются еще на два вида: хосо-маки (тонкие рулетики) и футо-маки (толстые рулетики).

Читать статью целиком »
Просмотров: 8623 | Комментариев: 10

Flash-навигация при отключенном Flash

15.09.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Последнее время технология Flash на сайтах становится все более популярной. Красивые анимированные меню, баннеры, и даже целые сайты выполнены на Flash. Не так давно я с интересом узнал, что изначально Flash создавался для просмотра анимированных порнушных мультиков и совершенно не предназначался для сайтостроительства. Предположим, вы относитесь к тому редкому виду дизайнеров, которые используют Flash "редко, но метко", и сделали на нем красивую навигацию для сайта. У большинства пользователей все работает как надо, ссылки, прописанные в Flash-кнопках открываются, в общем все замечательно. А что увидит пользователь сайта, если у него в браузере отключена поддержка Flash, например в целях безопасности или экономии трафика? Правильно, не увидит НИЧЕГО. Для решения проблемы предлагаю использовать следующий код:
  1. <object type="application/x-shockwave-flash"
  2.   data="images/contact_button.swf" width="100" height="30">
  3.   <param name="menu" value="false" />
  4.   <param name="quality" value="high" />
  5.   <param name="wmode" value="transparent" />
  6.   <param name="bgcolor" value="#ffffff" />
  7.   <param name="movie" value="images/contact_button.swf" />
  8.   <a href="contact.html"><img src="images/contact_button.gif" width="100"
  9.   height="30" border="0" alt="Контакты" /></a>
  10. </object>
Если все нормально, то посетитель увидит красивую кнопку contact_button.swf, если в браузере отключен Flash, будет показана ссылка на страницу контактов и графическая кнопка contact_button.gif. Если отключены и картинки, то будет показан текст-заместитель "Контакты". Как видите, в любом случае посетитель не потеряется на вашем сайте и попадет куда надо. Приведенный код работает во всех браузерах и 100% проходит проверку на валидаторе W3C.

Просмотров: 5401 | Комментариев: 6

Перетаскивание окна за любое место

13.09.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Перетаскивание окна за любое место, а не только за заголовок, реализуется очень просто, но смотрится очень эффектно. Тем более, что окно может быть вообще без заголовка. Для этого в обработчик окна надо добавить следующий код.
  1. ; Процедура обработчика окна
  2. proc  DialogProc hwnddlg,msg,wparam,lparam
  3.       ......
  4.       ; Нажата левая кнопка мышки на окне?
  5.       cmp     [msg], WM_LBUTTONDOWN
  6.       je      drag_window
  7.       ......
  8. drag_window:
  9.       ; Освободить захват мыши окном в текущем потоке и
  10.       ; восстановить обычную обработку ввода данных от мыши
  11.       invoke  ReleaseCapture
  12.       ; Перенаправить сообщение передвижения мышью SC_MOVE на заголовок окна
  13.       ; 61458 = SC_MOVE or HTCAPTION, в FASM по умолчанию не определено,
  14.       ; поэтому сразу задается числовым значением
  15.       invoke  SendMessage,[hwnddlg],WM_SYSCOMMAND,61458,0
  16.       ......
Вызов функции ReleaseCapture необходим для освобождения окна от захвата сообщений мыши. Даже если вы сами не устанавливали эти перехватчики, то они вполне могут быть установлены сторонними программами. В этом случае окно может перемещаться неправильно. Исходник с откомпилированным файлом прилагается.

Читать статью целиком »
Просмотров: 7508 | Комментариев: 6

Поздравляю с Днем программиста!

12.09.2008 | Категория: Всякая всячина | Автор: ManHunter

Ура! Вот и наступил очередной профессиональный праздник! Всех коллег и "товарищей по цеху" сердечно поздравляю с этой красивой датой - 0x100 день года. На улице прохладно, так что купание в фонтане придется отложить :)

Просмотров: 3856 | Комментариев: 1

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 2 (0.0388 сек.) / Память: 4.5 Mb
Наверх