Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизВопрос о стилях окон Найти похожие ветки
← →
Владимир Березин (2004-10-31 18:13) [0]Здравствуйте!
Подскажите, пожалуйста, какие флаги WS_XX следует использовать
для получения окна у которого нет ничего кроме поверности?
У меня комбинация WS_POPUP or WS_VISIBLE почему-то дает невиди-
мое окно.
← →
Игорь Шевченко © (2004-10-31 18:33) [1]
> У меня комбинация WS_POPUP or WS_VISIBLE почему-то дает
> невиди-
> мое окно.
А что в WM_PAINT написано ?
← →
Владимир Березин (2004-10-31 18:43) [2]>>А что в WM_PAINT написано ?
Ничего.
← →
Vladimir Vorfolomeev © (2004-10-31 19:00) [3]Во первых поставь WS_POPUP и используй ShowWindow чтобы показать окно, также после этого рекомендуется обновить UpdateWindow
← →
Владимир Березин (2004-10-31 19:04) [4]>> Во первых поставь WS_POPUP и используй ShowWindow чтобы показать окно, также после этого рекомендуется обновить UpdateWindow
Это все сделано.
← →
Vladimir Vorfolomeev © (2004-10-31 19:11) [5]Как ты создаеш окно?
Если все на API, то во первых нужно
1) Зарегистрировать класс окна
2) Создать окно
3) Показать его
4) Обрабатывать сообщения
Наверно ты не обрабатываеш сообщения
← →
Владимир Березин (2004-10-31 19:18) [6]>> Как ты создаеш окно?
Вот весь код.
program winmin;
{
**********************************
* *
* Минимальное Windows-приложение *
* *
**********************************
}
uses
Windows,
Messages;
const sClassName = "WinClass";
sCaption = "Минимальное приложение";
var Window:HWND;
wc:TWndClass;
msg:TMsg;
//--- Оконная функция ---
function WinProc
(Window:HWND; Mes:Word;
WParam:Word; LParam:LongInt):Integer;stdcall
begin
Result:=0;
case Mes of
WM_DESTROY: begin
PostQuitMessage(0);
Halt
end;
end;
Result:=DefWindowProc(Window,Mes,WParam,LParam)
end;
//--- Инициализация приложения ---
procedure AppInit;
begin
//--- Регистрация оконного класса ---
wc.style := CS_HREDRAW or CS_VREDRAW;
wc.lpfnWndProc := @WinProc;
wc.cbClsExtra := 0;
wc.cbWndExtra := 0;
wc.hInstance := HInstance;
wc.hIcon := LoadIcon(0, IDI_APPLICATION);
wc.hCursor := LoadCursor(0, IDC_ARROW);
wc.hbrBackground := GetStockObject(BLACK_BRUSH);
wc.lpszMenuName := nil;
wc.lpszClassName := sClassName;
RegisterClass(wc);
//--- Создание окна ---
Window:=CreateWindow(sClassName,
sCaption,
WS_VISIBLE or WS_POPUP,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,0,
hInstance,nil);
if Window=0 then Halt;
ShowWindow(Window, SW_SHOW);
UpdateWindow(Window);
end;
//--- Основной цикл ---
procedure AppRun;
begin
while GetMessage(msg,Window,0,0) do begin
TranslateMessage(msg);
DispatchMessage(msg)
end;
end;
begin
AppInit;
AppRun
end.
← →
Vladimir Vorfolomeev © (2004-10-31 19:22) [7]Вместо CW_USEDEFAULT, поставь реальные значения.
Удачи тебе.
← →
Владимир Березин (2004-10-31 19:37) [8]>> Вместо CW_USEDEFAULT, поставь реальные значения.
>> Удачи тебе.
Спасибо, все получилось!
← →
GuAV © (2004-10-31 20:21) [9]Владимир Березин (31.10.04 19:18) [6]
while GetMessage(msg,Window,0,0) do
Смотрим в MSDN про GetMessage. Читаем warning.
> Halt
Зачем ? PostQuitMessage сделает то что описано в её названии и при получении Quit Message фция GetMessage вернёт False. А хальт - не хорошо.
Владимир Березин (31.10.04 19:18) [6]
function WinProc
(Window:HWND; Mes:Word;
WParam:Word; LParam:LongInt):Integer;stdcall
Неверно. Это только в win16 было так.
Надо так:
function WindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
← →
Vladimir Vorfolomeev © (2004-10-31 22:40) [10]Насчет Msg и wParam правильно замечено. Но с win16 я с тобой GuAV не согласен, так как win16 не была многозадачной.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c