Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.02.2012, 17:42
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию два процесса в вин айпи

требуется создать два окна через вин айпи, и если закрываешь одно то и закрывается другое. нужна помошь
Вложения
Тип файла: rar лаб1.rar (40.1 Кбайт, 5 просмотров)

Последний раз редактировалось BIG_BO, 13.02.2012 в 17:46.
Ответить с цитированием
  #2  
Старый 13.02.2012, 17:46
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию

вот сделал, одно окно выводит а что дальше
Ответить с цитированием
  #3  
Старый 13.02.2012, 22:09
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Выводить то может и выводит, но уж больно много ляпов в коде. Второе окно можно вывести строкой:
Код:
  CreateDialog(hInstance, MAKEINTRESOURCE(MYDLG), Wnd, @MyDialogFunc);
где MYDLG - идентификатор окна прописанного в ресурсном файле, а MyDialogFunc оконная процедура этого диалогового окна. Данная функция (CreateDialog) выводит не модальное окно и при закрытии главного, закрывается автоматически.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #4  
Старый 14.02.2012, 16:15
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию

CreateDialog(hInstance, MAKEINTRESOURCE(WinHandle), hWnd, @MyWndProc);
вот написал, запускается просто одно окно
Ответить с цитированием
  #5  
Старый 14.02.2012, 16:33
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

добавь еще один блок:
Код:
  WinHandle:=CreateWindow(WndClass.lpszClassName,'the hello win',ws_overlappedwindow,
  cw_usedefault, cw_usedefault, cw_usedefault, cw_usedefault, 0, 0, Hinstance,
  nil);
  ShowWindow(WinHandle, sw_show);
  UpdateWindow(WinHandle);
после:
Код:
  ShowWindow(WinHandle, sw_show);
  UpdateWindow(winHandle);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 14.02.2012, 16:49
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию

Спасибо =) завтра буду пробовать защищать)
Ответить с цитированием
  #7  
Старый 14.02.2012, 16:51
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от BIG_BO
завтра буду пробовать защищать
только, как уже сказал angvelem, ляпов там достаточно...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 17.02.2012, 17:23
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию

Не правильно. Это не два процесса а два окна. чорт
Ответить с цитированием
  #9  
Старый 17.02.2012, 21:20
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Используй "нить".
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #10  
Старый 18.02.2012, 11:22
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию

не понял, что за нить
Ответить с цитированием
  #11  
Старый 18.02.2012, 21:19
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Берём словарь, смотрим:
Нить - Thread
далее используем функцию CreateThread.
Код:
var
  hPreLoad	: HWND;			// переменные для создания нити
  Dummy		: DWORD;
  hThread	: HWND;
...
function PreLoadDialogProc(hWndDlg : HWND; Msg : Longint; wParam, lParam : Longint) : Integer; stdcall;
begin
  Result := 1;

  case Msg of
    WM_INITDIALOG : 
    begin
      hPreLoad := hWndDlg;
    end;

    WM_CLOSE :  EndDialog(hWndDlg, ord(True));
  end;
end;
...
  hThread := CreateThread(NIL, 0, @PreLoadDialogThread, NIL, 0, Dummy);
...
  // закрывем окно предзагрузки  
  SendMessage(hPreLoad, WM_COMMAND, IDOK, 0);

  if hThread <> 0 then
  begin
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
  end;
Небольшие кусочки из программы. При запуске программы появляется окно с уведомлением о загрузке, после загрузки закрывается.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #12  
Старый 19.02.2012, 08:23
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от BIG_BO
Не правильно. Это не два процесса а два окна. чорт
два окна и требовалось:
Цитата:
Сообщение от BIG_BO
требуется создать два окна через вин айпи, и если закрываешь одно то и закрывается другое. нужна помошь
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #13  
Старый 19.02.2012, 11:55
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию

ну да это я сначала так задание понял, когда пришел сказал мне что два окна это не два процесса(
Ответить с цитированием
  #14  
Старый 20.02.2012, 09:20
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
program CreateWindowAPI;

uses
  Windows, Messages;

var
  AWndClass: WNDCLASS;
  AWnd: HWND;
  AMsg: TMsg;

function WindowProc(AWnd: HWND; Msg: Integer;
  wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
begin
  case Msg of
    WM_CLOSE: begin
      PostQuitMessage(0);
      Result:=0;
    end;
    else Result:=DefWindowProc(AWnd, Msg, wParam, lParam);
  end
end;

begin
  AWndClass.Style:=CS_HREDRAW or CS_VREDRAW;
  AWndClass.lpfnWndProc:=@WindowProc;
  AWndClass.cbClsExtra:=0;
  AWndClass.cbWndExtra:=0;
  AWndClass.hInstance:=HInstance;
  AWndClass.hIcon:=0;
  AWndClass.hCursor:=LoadCursor(0, IDC_ARROW);
  AWndClass.hbrBackground:=HBRUSH(COLOR_WINDOW);
  AWndClass.lpszMenuName:=nil;
  AWndClass.lpszClassName:='TWINAPIFORM';
  RegisterClass(AWndClass);
  AWnd:=CreateWindowEx(0, AWndClass.lpszClassName, AWndClass.lpszClassName,
    WS_OVERLAPPEDWINDOW,
    Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT),
    320, 240,
    0, 0, HInstance, nil);
  ShowWindow(AWnd, SW_SHOWNORMAL);
  UpdateWindow(AWnd);
  while GetMessage(AMsg, 0, 0, 0) do
  begin
    TranslateMessage(AMsg);
    DispatchMessage(AMsg);
  end;
  DestroyWindow(AWnd);
  UnregisterClass(AWndClass.lpszClassName, HInstance);
  AWnd:=FindWindow(AWndClass.lpszClassName, AWndClass.lpszClassName);
  if AWnd<>0 then SendMessage(AWnd, WM_CLOSE, 0, 0);
end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #15  
Старый 20.02.2012, 16:05
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию

поясни плз
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025