PDA

View Full Version : تشخيص كد اسكي Tab در برنامه



m_zi
یک شنبه 15 شهریور 1388, 14:34 عصر
با سلام و خسته نباشيد
من چگونه مي توانم در برنامه وقتي روي TextBox هستم و تايپ مي كنم كنترل كنم كه آيا كليد Tab را فشرده ام يا خير ؟
ممنون از راهنمايي شا

m_zi
یک شنبه 15 شهریور 1388, 15:54 عصر
سلام
ميشه لطفاً جواب بديد. خيلي فوريه . اين كار در VB خيلي راحته ولي در VC++ رو نمي دونم.
ممنون
منتظر جوابتون هستم.

A_Salimi
یک شنبه 15 شهریور 1388, 22:48 عصر
سلام

اگه قصد دارید از فشرده شدن کلید Tab مطلع بشید نابعی به نام PreTranslateMessage را به برنامه بصورت زیر اضافه کنید :

BOOL CTABDlg::PreTranslateMessage(MSG *pMsg)
{
if ( (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_TAB) )
{

MessageBox("Tab key pressed");
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}

این تابع به محض فشار این کلید فراخوانی می شود.

m_zi
دوشنبه 16 شهریور 1388, 08:16 صبح
سلام
ممنون از جوابتون. ولي مي خوام همزمان كه در TEXTBOX تايپ مي كنم و يكسري شرطها را چك مي كنم فشردن كليد TAB را حين تايپ چك كنم و يكسري عمليات را انجام دهم.آيا با روش شما مي شود؟
در ضمن يك رويدادي بر روي TEXTBOX وجود دارد به نام OnKeyDown كه يكي از وروديها LPDISPATCH KeyCode مي باشد ولي نمي دانم چگونه از آن استفاده كنم. ميشه راهنماييم كنيد.

ممنون

Nima_NF
دوشنبه 16 شهریور 1388, 19:17 عصر
یک کلاس برای کنترل EditBox خودتان تعریف کنید (با class wizard و مشتق شده از CEdit)
سپس پیام EN_CHANGE را برای آن تعریف کنید، این تابع که برای این پیام تعریف کرده اید وقتی ارسال می شود که شما یک کارکتر وارد EditBox می کنید.
مثال در این لینک (http://www.flounder.com/avoid_en_change.htm)

اگر می خواهید قبل از اعمال کار به شما اطلاع داده شود، پیام EN_UPDATE را تعریف کنید، این طوری ایتدا می توانید tab را بررسی کنید و اگر بود کار مورد نظر خود را انجام دهید.