PDA

View Full Version : ساختن توابع message handller



saeed-niknami
سه شنبه 16 آذر 1389, 12:56 عصر
با سلام
من برنامه نویسی به زبان وی سی ++ رو بلدم اما هر کاری می کنم نمی تونم تو سی بیلدر مسیج هندلر درست کنم هلپشم خوندم چیزی حالیم نشد اگه راهنماییم کنین ممنون می شم.

مانند توابع وی سی نیتیو
LRESUALT WNDPROC(HWND MSG WPARAM LPARAM)

tdkhakpur
چهارشنبه 17 آذر 1389, 00:12 صبح
به این شکل کد کنید اما بعد از اتمام کارتان آدرس قبلی رو بر گردانید.


TWndMethod *OldWindowProc;

void __fastcall newProc(Messages::TMessage &Message)
{
switch(Message.Msg)
{
case WM_LBUTTONDOWN:
case WM_LBUTTONUP :
}
}

این قسمت هم باعث تغییر میشه


OldWindowProc = &WindowProc;
WindowProc = newProc;

و در پایان


WindowProc = *OldWindowProc;

برای خواسته شما هم به همین شکله اما نوع تعریف تابع فرق داره ولی بهتره از روش فوق الستفاده کنید البته راههای دیگری هم هست

saeed-niknami
چهارشنبه 17 آذر 1389, 01:20 صبح
دست شما درد نکنه این کد ها رو باید کجای برنامه بنویسم و ازتابع setwindowlong نباید استفاده کنم ؟

tdkhakpur
چهارشنبه 17 آذر 1389, 13:40 عصر
این کد ها رو باید کجای برنامه بنویسم
خب داخت برنامه اضافه کنید قشمت اول تابع هست که باید داخل کدهایتان قرار بگیره و قسمت دوم رو زمانی که میخواهید تابع پیغام برای یک ریویداد رو تغییر بدید به کار ببرید مثلا اگر بخواهید پیغامهای رسیده به یک button را تغییر بدید این شکلی کد کنید.


OldWindowProc = &button1->WindowProc;
button1->WindowProc = newProc;



و ازتابع setwindowlong نباید استفاده کنم ؟

قبلا گفته شد راههای زیادی برای تغییر مسیر وجود دارد.