Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.029 c
8-1072430595
undersun
2003-12-26 12:23
2004.05.30
DSPack.SampleGrabber не грабит с камеры


3-1084046770
ser_ega
2004-05-09 00:06
2004.05.30
Табличка для распечатки


1-1084735371
Chlavik
2004-05-16 23:22
2004.05.30
TGraphicControl и его отрисовка за пределами его :)


14-1083933763
Nick-From
2004-05-07 16:42
2004.05.30
Застрял на запросе


9-1075019291
ZedeS
2004-01-25 11:28
2004.05.30
Игра Удав, движение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский