Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Delphi и WinAPI

Войти
Регистрация
Восстановить пароль
 
NIKENIT
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 3
#1

Изменение размеров окна при перетаскивании - Delphi WinAPI

23.06.2016, 12:17. Просмотров 406. Ответов 1

Здравствуйте, мне нужна помощь.
Пытаюсь реализовать сворачивание окна приложения при перетаскивании, однако размер либо не изменяется(если стоит флаг), либо меняется постоянно с уменьшенного на оригинальный(если флаг moving_flag убрать). Изменение размеров окна кнопкой работает.
Вот код обработчика сообщений:


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function WindowProc(wnd: hwnd; msg: integer; wparam: wparam; lparam: lparam):lresult;stdcall;
begin
  case msg of
  WM_DESTROY:
    begin
      PostQuitMessage(0);
      Button := 0;
      label1 := 0;
      result := 0;
      Window := 0;
      exit;
    end;
  WM_COMMAND:
    begin
    case LoWord( wParam ) of
      1: MessageBox(Window,'Кнопка','Заголовок',0);
    end;
    end;
  WM_MOVING:
    begin
    if(moving_flag) <> true then
      begin
        GetWindowRect(Window, move_rect);
        SetWindowPos(Window, 0, 0, 0, move_rect.Width, 0, SWP_NOMOVE or SWP_NOZORDER);
        UpdateWindow(Window);
         moving_flag := true;
      end;
    end;
  else
    result := DefWindowProc(wnd,msg,wparam,lparam);
  end;
end;
и код самого окна:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
test_window.cbSize := sizeof(test_window);
  test_window.style := CS_PARENTDC or CS_BYTEALIGNCLIENT;
  test_window.lpfnWndProc := @windowproc;//-указатель на процедуру
  test_window.hInstance :=  hInstance;
  test_window.hIcon := LoadIcon(hInstance,'MAINICON');
  test_window.hCursor := LoadCursor(0,IDC_ARROW);
  test_window.hbrBackground := COLOR_BTNFACE+1;
  //test_window.lpszMenuName := nil;
  test_window.lpszClassName := 'MyWindow';
  if windows.registerclassEx(test_window) = 0 then
  MessageBox(0, 'Ошибка регистрации', 'Заголовок', MB_OK); // регистрация окна в системе
 
  Window := CreateWindowEx(0, test_window.lpszClassName, 'Random text', WS_CAPTION or WS_MINIMIZEBOX or WS_SYSMENU, 300, 300, 350, 130, 0, 0, hInstance, nil);
 
  label1:=CreateWindow('static','Lable',WS_VISIBLE or WS_CHILD or BS_TEXT,6,25,330,40, Window,2,hInstance,nil);
  Button:=CreateWindow('button','Button',WS_VISIBLE or WS_CHILD,6,73,110,25, Window,1,hInstance,nil);
 
  ShowWindow(Window, SW_Show);
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2016, 12:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменение размеров окна при перетаскивании (Delphi WinAPI):

Изменение размеров формы - Delphi
Задача такая , в правом нижнем углу формы находиться кнопка, как сделать чтобы при изменнеии размеров формы кнопка оставалась в этом же...

Изменение размеров формы - Delphi
в общем, на форме есть TPageControl и два TTimer. и при смене активной вкладки происходит изменение размеров формы...

Изменение размеров чужой формы в зависимости от своей, передать фокус другому окну - Delphi
Доброе время суток. 1. МНе нужно, чтобы изменяя размеры своей программы, другая программа принимала размеры clientheight и clientwidth...

Hook, изменение окна - Delphi WinAPI
У меня есть программа, которая создаёт окно, caption которого 'Form1'. Используя хуки, мне нужно изменить это окно до того, как это окно...

Изменение класса окна - Delphi
Можно ли каким-либо образом изменить класс чужого окна? Не текст, а класс?

Центрировать кнопки при создании формы и при изменении размеров формы. - Delphi
Спасайте) Центрировать кнопки при создании формы и при изменении размеров формы. Спасибо

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
NIKENIT
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 3
24.06.2016, 12:54  [ТС] #2
Ок, уже нашел решение проблемы, через редактирование lParam вместо использования функций.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2016, 12:54
Привет! Вот еще темы с ответами:

Изменение размеров Image.Picture.LoadFromFile при изменении размеров окна - Delphi
Подскажите, пожалуйста, какие функции для этого нужны.

Изменение размеров рисунка при изменении размеров области вывода (окна) - Delphi
Нужно сделать так, что бы рисунок менял свой размер при изменении окна... unit Unit1; interface uses Windows, Messages, SysUtils,...

Изменение размеров окна при изменении размеров виджета - C++ Qt
Доброго времени суток, господа программисты! Возникла такая ситуация: есть окно программы, в нем виджет, который увеличивается при...

Изменение размеров виджета при изменении размеров окна - C++ Qt
Здравствуйте! Окно, созданное Qt (в моем случае QMainWindow), можно увеличивать и уменьшать в размерах. А как сделать так, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru