Операционные системы. Кручинин А.Ю. - 26 стр.

UptoLike

Составители: 

26
или Delphi). Поэтому переходим во вкладку «Styles» и меняем свойства: в пункте
«Style» на «Child», в пункте «Border» на «None». Не забываем ставить флажок в
More Stules→Visible.
Автоматически созданное содержимое диалогового окна удаляем и переносим
туда компонент «Edit Box». Открываем его свойства и помечаем галочкой
следующие пункты: Visible, Tab stop, Multiline, Horizontal scroll, Auto HScroll,
Vertical scroll, Auto VScroll, No hide selection, Border, Read-only, Static edge. А также
растягиваем «Edit Box» до размеров окна.
Заготовка готова, теперь надо еѐ натянуть на главное окно. Первоначально
изменяем класс окна:
WndClass.hbrBackground=(HBRUSH)NULL;
А затем также при обработке сообщения WM_CREATE создаѐм диалоговое
окно (Листинг 8).
hEdit=CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,(DLGPROC) WIN32DIAL);
if (hEdit==NULL)
{
return 1;
}
Листинг 8 Создание немодального диалогового окна
Перед вызовом hEdit должен быть у вас объявлен как HWND, а также должна
существовать функция обработки сообщения диалогового окна (Листинг 9).
LRESULT CALLBACK WIN32DIAL(HWND hWnd,UINT Message,
UINT wParam,LONG lParam)
{
return DefWindowProc(hWnd,Message,wParam,lParam);
}
Листинг 9 Функция обработки сообщений диалогового окна
Компилируем картинка не очень хорошая, т.к. диалоговое окно не
растягивается самостоятельно. Для этого нужно написать свою функцию (Листинг
10).
int SizeEdit(HWND hWnd)
{
RECT Rect;
//получаем размер клиентской области окна
GetClientRect(hWnd,&Rect);
//меняем размеры окон
SetWindowPos(hEdit,hWnd,0,0,Rect.right-Rect.left,Rect.bottom-Rect.top,SWP_NOZORDER);
HWND h=GetDlgItem(hEdit,IDC_EDIT1);
GetClientRect(hEdit,&Rect);
SetWindowPos(h,hEdit,0,0,Rect.right-Rect.left,Rect.bottom-Rect.top,SWP_NOZORDER);
return 0;
}
Листинг 10 Функция установки размеров
или Delphi). Поэтому переходим во вкладку «Styles» и меняем свойства: в пункте
«Style» на «Child», в пункте «Border» на «None». Не забываем ставить флажок в
More Stules→Visible.
      Автоматически созданное содержимое диалогового окна удаляем и переносим
туда компонент «Edit Box». Открываем его свойства и помечаем галочкой
следующие пункты: Visible, Tab stop, Multiline, Horizontal scroll, Auto HScroll,
Vertical scroll, Auto VScroll, No hide selection, Border, Read-only, Static edge. А также
растягиваем «Edit Box» до размеров окна.
      Заготовка готова, теперь надо еѐ натянуть на главное окно. Первоначально
изменяем класс окна:
WndClass.hbrBackground=(HBRUSH)NULL;
      А затем также при обработке сообщения WM_CREATE создаѐм диалоговое
окно (Листинг 8).

hEdit=CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,(DLGPROC) WIN32DIAL);
if (hEdit==NULL)
{
        return 1;
}
                Листинг 8 – Создание немодального диалогового окна

     Перед вызовом hEdit должен быть у вас объявлен как HWND, а также должна
существовать функция обработки сообщения диалогового окна (Листинг 9).

LRESULT CALLBACK WIN32DIAL(HWND hWnd,UINT Message,
              UINT wParam,LONG lParam)
{
     return DefWindowProc(hWnd,Message,wParam,lParam);
}
            Листинг 9 – Функция обработки сообщений диалогового окна

      Компилируем – картинка не очень хорошая, т.к. диалоговое окно не
растягивается самостоятельно. Для этого нужно написать свою функцию (Листинг
10).

int SizeEdit(HWND hWnd)
{
        RECT Rect;
        //получаем размер клиентской области окна
        GetClientRect(hWnd,&Rect);
        //меняем размеры окон
        SetWindowPos(hEdit,hWnd,0,0,Rect.right-Rect.left,Rect.bottom-Rect.top,SWP_NOZORDER);
        HWND h=GetDlgItem(hEdit,IDC_EDIT1);
        GetClientRect(hEdit,&Rect);
        SetWindowPos(h,hEdit,0,0,Rect.right-Rect.left,Rect.bottom-Rect.top,SWP_NOZORDER);
        return 0;
}
                       Листинг 10 – Функция установки размеров

                                                                                           26