ورود

View Full Version : تفاوت این دو شرط در چیست؟؟



lexical_error
پنج شنبه 28 شهریور 1392, 21:30 عصر
سلام دوستان
میخواستم بدونم تفاوت این دو شرط که مربوط به استفاده از ماوس در فرم هست چیه؟؟

if((nFlags & MK_LBUTTON)== MK_LBUTTON)

و

if(nFlags == MK_LBUTTON)

نتیجه کار هم یکی هست

mehdi.mousavi
جمعه 29 شهریور 1392, 13:58 عصر
سلام.
این اتفاق تصادفی افتاده... در واقع برای مشخص شدن موضوع، میتونید به تعارف مربوطه نگاه کنید:

#define MK_LBUTTON 0x0001
#define MK_RBUTTON 0x0002
#define MK_SHIFT 0x0004
#define MK_CONTROL 0x0008
#define MK_MBUTTON 0x0010
#define MK_XBUTTON1 0x0020
#define MK_XBUTTON2 0x0040

این به شما چه میگه؟ اینکه این Flag ها رو میشه تواما کنار همدیگه استفاده کرد. فرضا، کلید Shift رو پایین نگه دارید، سپس کلید سمت پی mouse رو بزنید. اگر از == استفاده کنید، نتیجه false خواهد بود، در صورتیکه اگر nFlags رو با دو Flag مورد نظر & کنید (یعنی MK_SHIFT و MK_LBUTTON) می تونید متوجه بشید که هنگام فشرده شدن کلید سمت چپ Mouse، کلید Shift روی Keyboard نیز پایین نگه داشته شده بوده... بنابراین، همواره باید از روش اول استفاده کنید. برای اطلاعات بیشتر، لطفا به این URL (http://msdn.microsoft.com/en-us/library/windows/desktop/gg153548%28v=vs.85%29.aspx) مراجعه کنید.

موفق باشید.

lexical_error
جمعه 29 شهریور 1392, 14:07 عصر
ممنون دوست عزیز
ممکنه یه توضیح مختصری راجع به این که چه وقت از AND و OR منطقی استفاده میکنیم و چه وقت از AND و OR باینری؟؟!
چون همون مثالی که زدید(فشردن SHIFT LMouse Button) رو با and منطقی هم میشه نوشت !