تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 2 از 2

نام تاپيک: System Tray در MFC App

  1. #1
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض System Tray در MFC App

    سلام به دوستان خوبم.
    عیدتون مبارک!
    قبلا یه مقاله درباره System Tray گذاشته بودم. که در مورد Shell_NotufyIcon , NOTIFYICONDATA
    صحبت شده بود و مثالی که داشته درباره برنامه های Win32 بود. که در link زیر هست:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    خب! این بار در مورد اینکه چطور در MFC ازش استفاده کنیم و چطور بتونیم با مثلا right-click یک منو رو برای
    این Icon فعال کنیم صحبت میشه.
    روند کار مثل Win32 هست. ابتدا یک متغییر public از NOTIFYICONDATA ایجاد میکنیم.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    فرض کنین میخوایم با شروع برنامه , آیکن برنامه در tray قرار بگیره. تابع OnInitDialog رو پیدا میکنیم و بعد از
    TODO: Add extra initialization here کد زیر رو در اون مینویسیم:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگه دقت کنین یکی از property های NOTIFYICON به این شکل تعریف شده:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ما نیاز داریم وقتی که Mouse و یا Keyboard روی این Icon در Tray قرار میگیره پیغامی رو مبنی بر اینکه
    مثلا الان Mouse روی این Icon هست دریافت کنیم. فرض کنین میخوایم با right-click منو ای رو به نمایش بذاریم
    بنابراین با موقیت Mouse رو در Tray به اصطلاح handle کنیم.
    به ابتدای فایل Cpp تون این کد رو اضافه کنین:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    WM_USER کمک میکنه تا ما بتونیم یک private-message برای برنامه خودمون ایجاد کنیم.
    و معولا به این شکل ازش استفاده میشه :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که X یک عدد میتونه باشه.(چون ممکنه در برنامه نیاز به چندین Message باشه.)
    الان وقتی Mouse و یا Keyborad روی این Icon قرار بگیرند پشت سر هم پیغامی به پنجره برنامه
    ما داده میشه. که میتونیم از این Message استفاده کنیم.
    یک تابع با این مشخصات ایجاد کنین :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    با استفاده از دو آرگومان این تابع میتونیم تمامی Event های Mouse و keyborad رو Handle کنیم.
    (برای اطلاعات بیشتر در باره WPARAM , LPARAM به برنامه نویسی تحت Windows مراجعه کنین.)
    خب حالا تابعی رو که ایجاد کردیم پیاده سازی میکنیم :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    فکر میکنم در مورد کد بالا نیازی به توضیح نباشه. فقط اینکه با استفاده از LPARAM میتونیم
    تک تک Event های
    Mouse رو handle کنیم. که در کد بالا برای پیغام right-click آماده شده.
    ما نیاز داریم تا هر وقت MYNOTIFY_MESSAGE در صف پیغامهای برنامه ما قرار گرفت تابع
    MyNotify رو فعال کنیم. این کار با استفاده از این ماکرو انجام میشه:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    الان کافیه این کد رو به برنامه اضافه کنین:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در آخر هم لازم هست وقتی برنامه بسته میشه Icon ما از Tray خارج بشه که اینکار رو با نوشتن کد
    زیر در تابه OnDestroy انجام میدیم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در مورد هر کدوم از توابع قبلا صحبت شده و اگه نیاز به توضیح بیشتر هست بگید.
    موفق باشین.

  2. #2
    آخر فروم باز hamidreza_buddy's Avatar
    تاريخ عضويت
    Sep 2004
    محل سكونت
    شریف
    پست ها
    1,167

    پيش فرض

    ای ول
    تشکر از این مقالاتی که می نویسید
    به نظر من بهتره که این مقالاتی رو که تا حالا نوشتید رو به مدیرا بگید که به صورت archive در بیارن که هم باقی باشه رو نت هم برای سرچ توی گوگل راحت تر پیدا بشه.
    موفق باشی
    Last edited by hamidreza_buddy; 20-03-2007 at 20:09.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •