Уроки Iczelion'а




Урок 12. Память и файлы - часть 5


Заметьте, что в этом случае мы не должны вызывать ShowWindow, чтобы заставить появиться контрол на экране, так как мы указали стиль WS_VISIBLE. Вы можете использовать этот трюк и для родительского окна.

;============================================== ; Инициализируем структуру ;============================================== mov ofn.lStructSize,SIZEOF ofn

push hWnd pop ofn.hWndOwner push hInstance pop ofn.hInstance

mov ofn.lpstrFilter, OFFSET FilterString mov ofn.lpstrFile, OFFSET buffer mov ofn.nMaxFile,MAXSIZE

После создания edit control'а edit control'а, мы используем это время, чтобы проинициализировать члены ofn. Так как мы хотим использовать ofn повторно в диалоговом окне, мы заполняем только общие члены, которые используются и GetOрenFileName и GetSaveFileName. Секция WM_CREATE - это прекрасное место для одноразовой инициализации.

.ELSEIF uMsg==WM_SIZE mov eax,lParam mov edx,eax shr edx,16 and eax,0ffffh invoke MoveWindow,hwndEdit,0,0,eax,edx,TRUE

Мы получаем сообщения WM_SIZE, когда pазмеp клиентской области нашего основного окна изменяется. Мы также получаем его, когда окно создается. Для того, чтобы получать это сообщение, стили класса окна должны включать CS_REDRAW и CS_HREDRAW. Мы используем эту возможность для того, чтобы сделать pазмеp нашего edit control'а pавным клиентской области окна. Для начала мы должны узнать текущую ширину и высоту клиентской области родительского окна. Мы получаем эту информацию из lParam. Верхнее слово lParam содержит высоту, а нижнее слово - ширину клиентской области. Затем мы используем эту информацию для того, чтобы изменить размер edit control'а с помощью вызова функции MoveWindow, которая может изменять позицию и размер окна на экране.

.if ax==IDM_OPEN mov ofn.Flags, OFN_FILEMUSTEXIST or \ OFN_PATHMUSTEXIST or OFN_LONGNAMES or\ OFN_EXPLORER or OFN_HIDEREADONLY

invoke GetOpenFileName, ADDR ofn

Когда пользователь выбирает пункт меню File/Oрen, мы заполняем в структуре параметр Flags и вызываем функцию GetOрenFileName, чтобы отобразить окно открытия файла.




Содержание  Назад  Вперед