سلام
این تغییر رنگ متن از طریق API و توابع ویندوز صورت می گیرد.
در ماژول فوق ابتدا متغییری بنام defaultColour از نوع long تعریف شده . در خط بعدی رنگ متن پیشفرض ویندوز ( همان رنگی که در حال حاضر در قسمت های مختلف ویندور در حال مشاهده و کار کردن با اون هستید) در متغیر فوق ذخیره میشود . در خط بعدی رنگ متن سیستمی دلخواه رو برای پنجره مورد نظر ( در اینجا مسیج باکس) انتخاب شده ( در اینجا برای پیغام اول رنگ قرمز و پیغام دوم سبز انتخاب شده) فراخوانی میشود . در خط بعدی فراخوانی پنجره مورد نظر( در اینجا مسیج باکس) و در در خط آخر برگرداندن رنگ متن به حالت پیشفرض و اولیه .
اگر خط آخر درج نشود رنگ متن بخش های مختلف سیستم به رنگ انتخاب شده تبدیل میشود . بنابراین لازم است پس از تغییر رنگ پنجره مورد نظرمون رنگ سیستم دوباره به همان رنگ اولیه تبدیل شود.
طریقه استفاده هم به همون صورت معمولی است که در برنامه ها از مسیج باکس استفاده می کنید تنها چیزی که باید مد نظر قرار داد همان موردهائی که در بالا اشاره کردم . یعنی ذخیره رنگ پیشفرض در یک متغیر . انتخاب رنگ مورد نظر و در پایان برگرداندن رنگ به حالت پیشفرض
به کدهای زیر توجه بفرما:
Dim defaultColour As Long
defaultColour = GetSysColor(COLOR_WINDOWTEXT)
SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, vbRed
If MsgBox("ÂíÇ ãØãÆä Èå ÍÐÝ ˜ÑÏä јæÑÏ ÌÇÑí ãí ÈÇÔíÏ¿", vbQuestion + vbMsgBoxRight + vbDefaultButton2 + vbYesNo, "ÍÐÝ ˜ÑÏä") = vbYes Then
MsgBox "OK"
End If
SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, defaultColour
می بینید که این تغییر رنگ هیچ اثری بر حالت استفاده از مسیج باکس ندارد .
با استفاده از این کدها دیگر نیازی به ماژول MsgBoxColorDemo نخواهید داشت و میتوانید از قسمت ماژول های عمومی آن را حذف کنید.
در پایان پیشنهاد بنده اینست که اگر میخواهید یک مسیج باکس زیبا و جذاب داشته باشی و در برنامه هات از آن استفاده کنی اقدام به ساخت یک مسیج باکس سفارشی بکنید