Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

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

 
Narayan ©   (2004-04-15 21:39) [0]

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

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

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


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

Вот к примеру (правда создание кнопки идет из ресурса, но происходит создание 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.


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


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


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

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

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


 
Narayan ©   (2004-04-16 14:55) [3]

2 Rouse_

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



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

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.882 c
3-1084283953
Sasha73
2004-05-11 17:59
2004.05.30
Как расшифровать данные


1-1084436594
Inner
2004-05-13 12:23
2004.05.30
Срочно TTreeView подскажите!


6-1081446290
Сергей Ю.
2004-04-08 21:44
2004.05.30
Win98 и XP


14-1084295662
panov
2004-05-11 21:14
2004.05.30
Хоку-хоку... А кто знает, что за модем Chronos?


1-1084620383
Кодер
2004-05-15 15:26
2004.05.30
ActiveX