Blog. Just Blog

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

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

Обработка перетаскивания файлов (Drag'n'Drop)

10.12.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Если в вашем приложении используется обработка файлов, то кроме открытия через стандартные диалоги выбора файла и каталога, можно получать их из Проводника Windows перетаскиванием. Обработка перетаскивания файлов выполняется в два этапа. При инициализации диалогового окна приложения должна вызываться функция DragAcceptFiles. Параметр функции TRUE разрешает принятие файлов окном, а FALSE его запрещает, так что прием файлов можно регулировать динамически. Непосредственно прием файлов окном выполняется функцией DragQueryFile.
  1. ; Сегмент кода
  2. section '.code' code readable executable
  3.         ... 
  4. ; Процедура обработчика окна
  5. proc DialogProc hwnddlg,msg,wparam,lparam 
  6.         ...
  7.         ; Инициализация окна
  8.         cmp     [msg],WM_INITDIALOG
  9.         je      wminitdialog
  10.         ; Обработка перетаскивания файлов
  11.         cmp     [msg],WM_DROPFILES
  12.         je      wmdropfiles
  13.         ...
  14. wminitdialog:
  15.         ; Разрешить окну принимать файлы
  16.         invoke  DragAcceptFiles,[hwnddlg],TRUE
  17.         jmp     processed
  18.  
  19. wmdropfiles:
  20.         ; Обработка полученных файлов. Функция DragQueryFile возвращает имя
  21.         ; файла с указанным индексом (нумерация индексов начинается с нуля).
  22.         ; Для получения общего количества переданных файлов ее надо вызвать с
  23.         ; индексом равным 0FFFFFFFFh
  24.         invoke  DragQueryFile,[wparam],0FFFFFFFFh,NULL,NULL
  25.         ; В регистре EAX количество переданных файлов
  26.  
  27.         ; Перебрать по очереди все переданные окну файлы
  28.         xor     ecx,ecx
  29. process_file:
  30.         push    ecx eax
  31.         ; Получить имя файла или каталога в буфер fname
  32.         invoke  DragQueryFile,[wparam],ecx,fname,100h
  33.         ...
  34.         ; Тут будет обработчик переданных файлов и каталогов
  35.         ...
  36.         pop     eax ecx
  37.         inc     ecx
  38.         cmp     ecx,eax
  39.         jne     process_file
  40.         ...
Если требуется получить только один файл, то запрашивать общее количество файлов не обязательно, достаточно вызвать DragQueryFile с нулевым индексом файла. Исходники двух вариантов обработчиков с откомпилированными файлами прилагаются.

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

Готовим свинину в пиве

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

Готовим свинину в пиве

Как я и говорил, мясо я люблю больше шоколада. Поэтому сегодня у меня на обед свинина в пиве.

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

Фишинг серийников в Blumentals Screensaver Factory

04.12.2008 | Категория: Темная сторона Силы | Автор: ManHunter
При помощи программы Blumentals Screensaver Factory вы можете создавать красивые скринсейверы в виде слайдшоу из ваших фотографий. Саму "фабрику" можно без проблем найти в интернете, но речь сейчас не о ней, а о скринсейверах, которые сделаны с ее помощью. В Blumentals Screensaver Factory есть возможность создания коммерческих скринсейверов, защищенных серийным номером, и некоторые аффтары умудряются торговать подобными дешевками, на создание которых было затрачено всего несколько минут. Такие скринсейверы можно узнать по окну настроек:


Окно настроек скринсейвера

В зависимости от использованной версии "фабрики" вкладок может быть больше или меньше, но общий стиль оформления остается неизменный.

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

Окно поверх всех окон (Always On Top)

03.12.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Установка окна поверх всех других окон бывает удобна, когда надо привлечь внимание пользователя к важной информации, или окно с какими-либо данными должно находиться всегда перед глазами. Такое свойство окна можно прописать сразу в ресурсах, а можно изменять динамически, например при нажатии на кнопку-чекбокс "Always on top" или при изменении каких-нибудь внутренних настроек вашей программы.

Для создания окна поверх всех других окон, оно должно быть описано в ресурсах с флагом DS_SYSMODAL. Для динамического изменения используется функция SetWindowPos с флагами SWP_NOMOVE и SWP_NOSIZE. Флаги нужны для того, чтобы не изменять размеры и положение окна.
  1. ; Идентификатор чекбокса в ресурсах
  2. ID_ONTOP        = 101
  3.  
  4. ; Сегмент кода
  5. section '.code' code readable executable
  6.         ...
  7. ; Процедура обработчика окна
  8. proc DialogProc hwnddlg,msg,wparam,lparam
  9.         ; Обработка нажатия на кнопку-чекбокс
  10.         cmp     [wparam],BN_CLICKED shl 16 + ID_ONTOP
  11.         je      .ontop
  12.         ...
  13. .ontop:
  14.         ; Получить состояние чекбокса
  15.         invoke  IsDlgButtonChecked,[hwnddlg],ID_ONTOP
  16.         cmp     eax,BST_CHECKED
  17.         ; По умолчанию будем считать что галочка поставлена
  18.         mov     eax,HWND_TOPMOST
  19.         je      @f
  20.         ; Галочка не поставлена, убрать атрибут "поверх всех окон"
  21.         mov     eax,HWND_NOTOPMOST
  22. @@:
  23.         ; Установить параметр окна "поверх всех окон", изменение размера
  24.         ; и положения окна не производится, это установлено флагами
  25.         invoke  SetWindowPos,[hwnddlg],eax,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE
  26.         jmp     .processed
  27.         ...
  28.  
  29. ; Секция ресурсов
  30. section '.rsrc' resource data readable
  31. ; Диалог описан со стилем DS_SYSMODAL - поверх всех окон
  32. dialog demonstration, 'Always on top Demo', 0, 0, 190, 55,\
  33.         WS_CAPTION+WS_SYSMENU+DS_CENTER+DS_SYSMODAL
  34.         ...
  35.         ; Кнопка-чекбокс, которая будет управлять положением окна
  36.         dialogitem 'BUTTON','Always on top', ID_ONTOP, 5, 150, 63, 13,\
  37.         WS_VISIBLE+BS_AUTOCHECKBOX+BS_FLAT
  38.         ...
В приведенном примере при поставленной галочке "Always on top" окно будет находиться поверх других окон. Исходник с откомпилированным файлом прилагается.

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

Шпаргалки для Web-мастера по HTML, CSS и JavaScript

30.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
В свое время преподаватели учили меня: "Не надо всего знать, надо знать где взять". Для больших объемов информации я, конечно, предпочитаю бумажные справочники. А когда надо быстро посмотреть синтаксис какой-нибудь редко используемой функции, параметры тега или код цвета, то очень выручают онлайн-справочники и файлы-шпаргалки. Вот основные сайты и ресурсы для облегчения поиска.

Целые каталоги шпаргалок по различным языкам программирования предлагают сайты TechCheatSheets.com, gotAPI, WhatIs.com и refcards.com. Последний сайт уже давно не обновлялся.

Большой набор файлов-шпаргалок по PHP, Apache, mod_rewrite, CSS, JavaScript, HTML, MySQL, ASP, VBScript и другие можно найти на сайте Added Bytes. Они выполнены в формате PDF и PNG.

Отдельно шпаргалки по JavaScript выложены на сайте JavaScript Reference, использование регулярных выражений в JavaScript можно посмотреть на сайте VisiBone. При желании там же можно за денежку заказать наборы шпаргалок в бумажном виде.

Онлайновый справочник по HTML и CSS на русском языке на сайте htmlbook.ru, а в виде шпаргалок на сайте HTML Tags. Справочники по CSS с примерами здесь и здесь. Справочник по CSS на русском языке выложен на сайте Александра Климова, а на сайте CSSplay вы можете посмотреть интересные примеры верстки с использованием CSS.

Таблицу HTML-цветов можно посмотреть на сайте VisiBone или скачать в формате PDF с сайта Veign.

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

01 ... 310 311 312 313 314 315 316 ... 322
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.09 сек. / MySQL: 2 (0.0262 сек.) / Память: 5 Mb
Наверх