Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Вниз

Создать окно   Найти похожие ветки 

 
Керик   (2002-12-31 07:57) [0]

Помогите! Как создать невидимое окно, не используя VCL, и принимать на него нужные мне сообщения?


 
Наезжалкин   (2002-12-31 08:39) [1]

CreateWindow() WinAPI


 
Alex Konshin   (2002-12-31 08:56) [2]

AllocateHWnd, Classes


 
Evgeny   (2002-12-31 09:31) [3]

Берешь готовый пример по минимальному окну (таких примеров масса) и убираешь одну команду ShowWindow. Но только как ты это окно потом закрывать собираешься?


 
Alex Konshin   (2002-12-31 09:53) [4]

Пару AllocateHWnd/DeallocateHWnd использует класс TThread.
Чем не пример?


 
Керик   (2003-01-01 07:13) [5]

Дайте мне пример с CreateWindow, плиз!


 
Юрий Зотов   (2003-01-01 12:31) [6]


program HelloWorld;

uses
Windows, Messages;

// Оконная функция - обрабатывает все поступающие окну сообщения.
function WndFunc(Wnd, Msg: DWord; wParam, lParam: integer): integer; stdcall;
var
DC: HDC;
PaintStruct: TPaintStruct;
Rect: TRect;
begin
case Msg of
WM_Paint:
begin // Если поступило сообщение WM_Paint,
DC := BeginPaint(Wnd, PaintStruct); // то подготовить отрисовку,
GetClientRect(Wnd, Rect); // получить клиентскую область и в ее центре отрисовать текст,
DrawText(DC, "Hello, World!", -1, Rect, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
EndPaint(Wnd, PaintStruct); // затем сообщить системе, что рисование завершено
Result := 0 // и что сообщение WM_Paint обработано.
end;
WM_Destroy:
begin // Если поступило сообщение WM_Destroy,
PostQuitMessage(0); // то послать в очередь потока сообщение WM_Quit
Result := 0 // и сообщить системе, что WM_Destroy обработано.
end
else Result := DefWindowProc(Wnd, Msg, wParam, lParam) // Для других сообщений вызвать стандартную оконную функцию.
end
end { of WndFunc };

const
AppName = "Project1";

var
Msg: TMsg;
WndClass: TWndClassEx;

begin { main }

// Заполняем запись WndClass и регистрируем в системе класс окна
with WndClass do
begin
cbSize := SizeOf(WndClass);
Style := CS_HRedraw or CS_VRedraw;
lpfnWndProc := @WndFunc;
hIcon := LoadIcon(0, IDI_Application);
hCursor := LoadCursor(0, IDC_Arrow);
hbrBackground := hBrush(Color_Window);
lpszMenuName := Nil;
lpszClassName := AppName;
hIconSm := hIcon
end;
WndClass.hInstance := hInstance;
RegisterClassEx(WndClass);

// Создаем и показываем окно заданного класса
CreateWindowEx(0, AppName, AppName, WS_OverlappedWindow or WS_Visible, // Если убрать WS_Visible, окно будет невидимым
CW_UseDefault, CW_UseDefault, CW_UseDefault, CW_UseDefault, 0, 0, hInstance, Nil);

// Цикл обработки сообщений (работает, пока не поступит сообщение WM_Quit).
while GetMessage(Msg, 0, 0, 0) do // Выбрать сообщение из очереди потока
begin // и, если это сообщение не WM_Quit, то
TranslateMessage(Msg); // преобразовать сообщение клавиатуры
DispatchMessage(Msg) // и вызвать функцию окна Msg.hWnd
end;

// Передаем системе код завершения программы
Halt(Msg.wParam)
end.



 
Alex Konshin   (2003-01-01 18:39) [7]

Кстати, а для чего тебе нужно невидимое окно? Спрашиваю потому, что обычно такая надобность возникает при использовании Winsock.
Если это твой случай, то знай, что в Winsock2 можно обойтись без такого окна - там можно использовать events.


 
Керик   (2003-01-01 23:07) [8]

Alex Konshin! Для того, чтобы только принимать сообщения! Я об этом писал в вопросе!



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.029 c
3-38094
denipod
2003-01-27 16:51
2003.02.13
Подключение к IB через прокси


14-38559
hatchy
2003-01-26 11:45
2003.02.13
Построение игр штука не простая...


14-38501
Marsello
2003-01-23 18:36
2003.02.13
Кто нибудь работал с InterBase Server???????????


1-38226
Михайлов Антон
2003-02-03 21:17
2003.02.13
Как сделать инсталлятор


3-38112
alxx
2003-01-28 11:38
2003.02.13
Что бы это значило?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский