Главная страница
    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.035 c
1-1084567152
dars73
2004-05-15 00:39
2004.05.30
Как переиминовать все файлы в папке?


11-1073511541
reagent
2004-01-08 00:39
2004.05.30
Глюки ICS


4-1081934911
Аноним
2004-04-14 13:28
2004.05.30
Создание папки


14-1083921039
Den_AK20000
2004-05-07 13:10
2004.05.30
Компоненты в стиле Outlook 2003


14-1084177556
Всеволод Соловьёв
2004-05-10 12:25
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский