Главная страница
    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.034 c
1-1084887951
Dysan
2004-05-18 17:45
2004.05.30
StrToDateTime(Sdate) ?


7-1082543883
freeman82
2004-04-21 14:38
2004.05.30
вызов функции в потоке


3-1084053792
Shade_
2004-05-09 02:03
2004.05.30
Суммирование полей


14-1084284336
Gero
2004-05-11 18:05
2004.05.30
Меню


8-1078816811
Garic
2004-03-09 10:20
2004.05.30
Описание AVI функций





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский