Страница 1 из 1

Стили формы, помогите разобраться

Добавлено: 30 дек 2007, 22:39
AdiSan
Короче использую такой код для создания окна (окно мне нужно плоское, без заголовка):
wnd = CreateWindowEx(&h00000100, WND_CLASS_NAME0, "window", &h14000000, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, null, null, instance, null)
В этой функции даю окну стиль = &h14000000 - стиль плоской формы.
Но почемуто плоской она не получается. Ну я ниже делаю так:
SetWindowLong(wnd, GWL_STYLE, &h14000000)
То есть даю опять уже созаднному окну тот же стиль: &h14000000 - все получилось плоская форма.
Скажите что я не так делаю в функции CreateWindowEx???????
И еще использую вначале CreateWindowEx, а потом SetWindowLong - заметно как форма меняет свою "форму", т.е. появляется с заголовком, и тут же он исчезает. Как этого избежать.
Помогите кто чем может. Пишу я это на FreeBasic, но перевариваю и С/С++, Дельфей думаю тож переварю(тока на АПИ). Спасибо!

Re: Стили формы, помогите разобраться

Добавлено: 04 янв 2008, 08:58
Romeo
А как класс окна регистришь, выложи сюда кусок кода.

Re: Стили формы, помогите разобраться

Добавлено: 04 янв 2008, 12:48
AdiSan
instance = GetModuleHandle(null)
InitCommonControls
register_classes
h_font = CreateFont(-13, 0, 0, 0, FW_NORMAL, 0, _
0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, _
DEFAULT_QUALITY, DEFAULT_PITCH or FF_DONTCARE, "Times New Roman")
create_wnd0

Re: Стили формы, помогите разобраться

Добавлено: 04 янв 2008, 12:52
Romeo
Меня интересует имплементация register_classes.

Re: Стили формы, помогите разобраться

Добавлено: 04 янв 2008, 13:41
BBB
AdiSan писал(а):И еще использую вначале CreateWindowEx, а потом SetWindowLong - заметно как форма меняет свою "форму", т.е. появляется с заголовком, и тут же он исчезает. Как этого избежать?
Ты задаешь стиль окна (4-й параметр функции) как
14000000 = WS_VISIBLE | WS_CLIPSIBLINGS

То есть, CreateWindowEx сразу создает окно видимым.
Умери этот стиль, тогда окно создастся невидимым, сделай все необходимые изменения, и лишь после этого "покажи" окно (вызов ShowWindow (wnd, SW_SHOW) ; или, в твоей "нотации": ShowWindow (wnd, 5) :) )

Re: Стили формы, помогите разобраться

Добавлено: 04 янв 2008, 15:08
AdiSan
Romeo писал(а):Меня интересует имплементация register_classes.
А при чем тут это, ну вот:
sub register_classes
dim wc as WNDCLASS

with wc
.cbClsExtra = 0
.cbWndExtra = 0
.hbrBackground = cast(hbrush, COLOR_3DFACE + 1)
.hCursor = LoadCursor(null, byval IDC_ARROW)
.hIcon = LoadIcon(null, byval IDI_APPLICATION)
.hInstance = instance
.lpszMenuName = null
.style = CS_PARENTDC or CS_DBLCLKS
end with

wc.lpfnWndProc = @wnd_proc0
wc.lpszClassName = strptr(WND_CLASS_NAME0)

RegisterClass @wc
end sub

BBB писал(а):Ты задаешь стиль окна (4-й параметр функции) как
14000000 = WS_VISIBLE | WS_CLIPSIBLINGS
То есть, CreateWindowEx сразу создает окно видимым.
Умери этот стиль, тогда окно создастся невидимым, сделай все необходимые изменения, и лишь после этого "покажи" окно (вызов ShowWindow (wnd, SW_SHOW) ; или, в твоей "нотации": ShowWindow (wnd, 5) :) )
Вообщем я разобрался с этим, чтобы окно было плоским надо было добавить к моим
&h14000000 WS_POPUP и убрать WS_VISIBLE и получилось &h84000000