Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CreateDialog


Ev_genus ©   (2002-10-20 18:41:00) 

Покажите как стандартными средствами WinAPI, не делая самому окно, кнопки и т.д., создать нестандартный диалог. Подойдёт любой примерчик. Поменяйте хотя бы цвет фона, что б я увидел структуру действий.

Заранее спасибо.


Rouse_   (2002-10-21 03:48:00) [1]

Вот тебе примерчик

1020.RC
CUT HERE =======================================================

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
10 DIALOGEX 0, 0, 130, 60
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOPMOST
CAPTION "Test ComboBox Application"
FONT 8, "Helv", 0, 0
BEGIN
PUSHBUTTON "Close", 100 ,71,38,53,15
PUSHBUTTON "Add string", 105 ,5,38,53,15
LTEXT "Add string to ComboBox:",IDC_STATIC,7,7,107,10
END

CUT HERE ===================================================

MainProgram.dpr
CUT HERE ===================================================
program MainProgram1;

{$R "1020.res" "1020.rc"}

uses
Windows,
Messages;

var
_Msg : TMsg;
hwnd, combo : Integer;

function WndFunc(Wnd, Msg: DWord; wParam, lParam: integer): integer; stdcall;
var s:String;
i:Integer;
begin
case msg of

wm_destroy :
Begin
postquitmessage(0);
exit;
Result:=0;
End;

WM_QUIT :
Begin
postquitmessage(0);
exit;
Result:=0;
End;

wm_command :
Begin
case loword(wParam) of
100 : //Клик по кнопке закрытия
case hiWord(wParam) of
BN_CLICKED :
Begin
postquitmessage(0);
exit;
Result:=0;
End;
end;
105 : //Клик по кнопке добавления текста
case hiWord(wParam) of
BN_CLICKED :
Begin
s:="Test string"; //Добавляем исполльзуя НЭНДЛ!!! комбобокса
SendMessage(combo,CB_ADDSTRING ,0,Longint(@s[1]));
End;
end;
200: //Ловим сообщение на ID !!! комбобокса
case hiWord(wParam) of
CBN_DROPDOWN : //Список раскрылся
begin
Result := 0;
end;
CBN_SELCHANGE : //Выбран определенный пункт
begin
Result := 0;
end;
end;
end;
end;
end;
Result := 0
end;


begin
hwnd := CreateDialog(hInstance,MAKEINTRESOURCE(10),0,@WndFunc);
combo := CreateWindow("COMBOBOX", "", CBS_DROPDOWN or WS_CHILD or WS_VISIBLE,7, 25, 180, 54, hwnd, 200, hInstance, NiL);
//combo - это его хэндл при помощи него мы работает с комбо //200 - Это его ID на него приходят сообщения
while GetMessage(_Msg, 0, 0, 0) do
begin
TranslateMessage(_Msg);
DispatchMessage(_Msg);
end;
end.


CUT HERE ===================================================


Писал кк пример для кого-то
Желаю успехов


apay   (2002-10-21 03:18:00) [2]

1. используй что-то типа ResourceWorkshop,
2. пример, правда на C: GIZMOBAR.C в win32 sdk help


Наверх

Титульная страница Поиск, карта сайта Написать письмо