PDA

View Full Version : ساختskin



taze kar
چهارشنبه 05 مرداد 1384, 17:41 عصر
سلام خدمت تمامی دوستان
دیکه از عنوان معلومه دنبال جی هستم . یکی از رفقا میکفت جند تا تابع API هست واسه این کار .اکه یه بجه توضیحی بدین .....تون میشم
(لعنت به ویندوز عربی) خودم نمیتونم بخونم جی نوشتم .

taze kar
دوشنبه 10 مرداد 1384, 11:54 صبح
مرک من یکی ما رو راه بندازه .

C++Lover
دوشنبه 10 مرداد 1384, 19:09 عصر
می شه بگی منظورت از skin چیه؟

taze kar
سه شنبه 11 مرداد 1384, 08:41 صبح
اکه تاحالا با Windows Media Player کار کرده باشی
یه قسمت میتونی شکل بنجره ای رو که داره عوض کنی مثلا یکیشون قلب . حالا میخوام بدونم جه جوری میشه فورم رو این شکلی کرد .

taze kar
دوشنبه 24 مرداد 1384, 20:59 عصر
هی این تابیک میره اخر و ما دوباره باید یه جیزی بنویسیم که بیاد بالا

seyedof
دوشنبه 24 مرداد 1384, 21:03 عصر
سلام
SetWindowRgn
ممنون علی

taze kar
سه شنبه 25 مرداد 1384, 11:54 صبح
سید جون این تابع رو وقتی اجرا میکنم فرمم غیب میشه شبیه حالتی که فرم رو هاید میکنم با این تفاوت که توی نوار بایین هست ولی خود بنجره نیست

ممنون

seyedof
سه شنبه 25 مرداد 1384, 19:59 عصر
سلام
چون Region ای که تعریف کردید احتمالا غیر معتبر است یا شکلش صحیح نیست. واسه همین هم غیب میشه. با CreateRectRgn یه Region ساده مستطیل درست کنید و امتحان کنید دیگه نباید غیب بشه. بعدش برین دنبال Region های پیچیده تر.
البته این تاپیک خیلی ارتباطی به skin نداره و شما در واقع میخواین ویندویی با شکل غیر استاندارد (غیر مستطیل) داشته باشید.
ممنون علی
ممنون علی

taze kar
سه شنبه 25 مرداد 1384, 21:04 عصر
دقیقا همین طور شده
وقتی یه مستطیل ساده ایجاد میکنم درست جواب میىه ولی واسه بقیه اون ها نه. مثلا CreatePolygonRgn
باعث میشه که بنجره غیب بشه .
این معتبر شدنش جه جوریه ؟ من جند تا مختصات دادم ولی هیج کدوم جواب نداد .
باید مقدار های خاصی باشند یا هرجی بود, بود ؟
ممنون

seyedof
چهارشنبه 26 مرداد 1384, 08:08 صبح
سلام
مطمئنا اشکال از مختصاتی هست که داده اید. راهنماش رو بخونید و اولش با مثلث شروع کنید. چیز خاصی نداره و کار ساده ای است.
ممنون علی

taze kar
چهارشنبه 26 مرداد 1384, 09:36 صبح
سیدجون فدات, قشنک قشنک جواب داد .
میشه در مورد تغییر رنک فرم و کنترل ها هم توضیح بدی ؟
راستی من هندل به Button رو کرفتم و تابع SetWindowRgn رو اجرا کردم ولی هیج تغییری نکرد
GetDlgItem(IDC_MYBUTTON)->SEtWindowRgn(hrgb,TRUE)
اشکال این کد جیه ؟
روی فرمم جواب مبده ولی روی کنترل ها نه
باز هم ممنون از وقت کذاشتنت

C++Lover
پنج شنبه 27 مرداد 1384, 00:42 صبح
دوست عزیز من این دستور را اجرا کردم و جواب داد اما
چون Class Style این کنترل به صورت CS_PARENTDC تعریف شده است موقعی که کنترل دوباره روی فرم رسم می شود شکل اصلی خود را دارد اما رویداد های mouse فقط روی region تعیین شده اثر دارد.

شما می توانید CS_PARENTDC زا از button contorl خود توسط دستور زیر حذف کنید تا حالت فوق پیش نیاید.


SetClassLong(GetDlgItem(IDC_BUTTON1)->m_hWnd, GCL_STYLE, GetClassLong(GetDlgItem(IDC_BUTTON1)->m_hWnd,GCL_STYLE) & (~CS_PARENTDC));

اگر قبل یا بعد از دستور فوق از SetWindowRgn مشکل حل خواهد شد.
توجه کنید که یک دستور SetClassLong روی تمامی کنترلها با WindowClass مشابه در process فعلی اثر می کند پس یک بار اجرای این دستور برای یک Command button کافیست و برای تغییر دادن region بقیه Command Button ها احتیاج به اجرای این دستور نیست.
بابت نگارش بد معذرت.

taze kar
پنج شنبه 27 مرداد 1384, 00:43 صبح
لاور جون دستت درد نکنه . واقعا" لطف کردی .
میشه در مورد تفییر رنک هم یه کوشولو توضیحاتی بدی ؟(خیلی ممنون)

با تشکر فراوان