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

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

создание кнопки [D7, WinXP]


Narayan ©   (2004-04-15 21:39:00) 

создал кнопку

CreateWindow('BUTTON', 'OK', WS_VISIBLE or WS_CHILD or BS_DEFPUSHBUTTON,50,50,70,24,Form1.Handle,0,HINSTANCE,nil);

Как сделать чтоб при нажатии что-то выполнялось?


Narayan   (2004-04-16 14:55:00) [1]

2 Rouse_

большое спасибо


DVM   (2004-04-16 11:16:00) [2]


> Как сделать чтоб при нажатии что-то выполнялось?

Родительскому окну будут приходить сообщения WM_COMMAND.

Можно еще переопределить оконную процедуру кнопки и в ней ловить сообщения мыши.


Rouse_   (2004-04-16 00:05:00) [3]

Вот к примеру (правда создание кнопки идет из ресурса, но происходит создание ListBox)

Ресурс:
<CUT 1020.rc>
/////////////////////////////////////////////////////////////////////////////
//
// 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>


Само приложение:
program Project1;

{$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.


Все интересующие тебя места отмечены жирным...


Наверх

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