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

Вниз

Как с помощю API создать обработчик нажатия Button-а.   Найти похожие ветки 

 
BKGG   (2003-12-17 20:06) [0]

В sdk написанно что "The BN_CLICKED notification message is sent when the user clicks a button. The parent window of the button receives this notification message through the WM_COMMAND message." Я написаль вот следующий код но он не работает и видает ошибку Runtime error 216 at 044...

program winmin;

uses
windows,
messages;

var wc:wndclassex;
mainwnd,btnwnd:hwnd;
mesg:msg;

function windowproc(wnd:hwnd; msg:integer; wparam:wparam;
lparam:lparam):lresult; stdcall;
var hd:hdc;
ps:paintstruct;
rc:trect;
rc2:prect;
begin
case msg of
wm_destroy: begin
postquitmessage(0);
result:=0;
end;
wm_paint : begin
hd:=Beginpaint(wnd,ps);
getclientrect(wnd,rc);
fillrect(hd,rc,rgb(0,0,0));
drawtext(hd, "Hellow!", -1, rc, dt_center);
endpaint(wnd,ps);
result:=0;
end;
wm_command :begin
getclientrect(mainwnd,rc);
rc2.Left:=rc.Left;
rc2.Top:=rc.Top;
rc2.Right:=rc.Right;
rc2.Bottom:=rc.Bottom;
invalidaterect(mainwnd,rc2,false);
hd:=beginpaint(mainwnd,ps);
drawtext(hd,"BBBBB ", -1, rc, dt_right);
endpaint(mainwnd,ps);
result:=0;
end;
else result:=defwindowproc(wnd,msg,wparam,lparam);
end;
end;

begin
wc.cbSize:=sizeof(wc);
wc.style:=cs_hredraw or cs_vredraw;
wc.lpfnWndProc:=@windowproc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=hinstance;
wc.hIcon:=loadicon(0,idi_application);
wc.hCursor:=loadcursor(0,idc_arrow);
wc.hbrBackground:=rgb(0,0,0);
wc.lpszMenuName:=nil;
wc.lpszClassName:="winmain";

registerclassex(wc);

mainwnd:=createwindowex(0,
"winmain",
"winmain",
ws_overlappedwindow,
100,
100,
700,
500,
0,
0,
hinstance,
nil);
btnwnd:= createwindowex(0,
"Button",
"OK",
ws_child or bs_defpushbutton,
20,
20,
40,
25,
mainwnd,
0,
hinstance,
nil);

showwindow(mainwnd, sw_show);
showwindow(btnwnd, sw_show);

while getmessage(mesg,0,0,0) do
begin
translatemessage(mesg);
dispatchmessage(mesg);
end;

end.


 
Rouse_   (2003-12-18 12:47) [1]

{rc2^.Left:=0;//rc.Left;
rc2^.Top:=rc.Top;
rc2^.Right:=rc.Right;
rc2^.Bottom:=rc.Bottom; }
rc2 := @rc;


Желаю успехов


 
Rouse_   (2003-12-18 12:50) [2]

Или еще проще:

wm_command :begin
getclientrect(mainwnd,rc);
invalidaterect(mainwnd,@rc,false);
hd:=beginpaint(mainwnd,ps);
drawtext(hd,"BBBBB ", -1, rc, dt_right);
endpaint(mainwnd,ps);
result:=0;
end;


Желаю успехов


 
Rouse_   (2003-12-18 12:55) [3]

А ошибка твоя была в том, что ты не выделял память перед использованием rc2, например вот так:
GetMem(rc2, SizeOf(prect));

PS: Соответственно после использования ее необходимо освободить: FreeMem(rc2);


 
BKGG   (2003-12-18 16:31) [4]

Rouse_ >> Большое спасибо



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

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

Наверх




Память: 0.45 MB
Время: 0.029 c
3-79605
tesseract
2004-01-28 13:19
2004.02.25
Проблема с ADO + MSAccess


1-79855
Well
2004-02-10 17:25
2004.02.25
Убрать программу из


14-80187
Knight
2004-01-30 16:25
2004.02.25
Лампа сканера HP ScanJet 5200C моргает 6 раз...


3-79630
Sergei!
2004-02-01 08:23
2004.02.25
1C и Дельфи


14-80175
Думкин
2004-01-31 06:54
2004.02.25
31 января.





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