PDA

View Full Version : سوال: شیشه ای کردن فرم (بوسیله API)



Mr'Jamshidy
پنج شنبه 03 دی 1388, 17:55 عصر
کسی میدونه چطور بوسیله API میشه فرم رو شیشه ای کرد یعنی شکل Theme در آورد؟

برای مثال یک عکس زمیمه کردم

یا حق

Tasiyan
پنج شنبه 03 دی 1388, 18:33 عصر
فكر كنم قبلاً هم مطرح شده بود :متفکر:

Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal _
dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib _
"user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha _
As Byte, ByVal dwFlags As Long) As Long
Private Sub Form_Load()
Dim Ret As Long
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, 0, CByte(100), LWA_ALPHA
End Sub

:لبخند:

Mr'Jamshidy
پنج شنبه 03 دی 1388, 18:47 عصر
فكر كنم قبلاً هم مطرح شده بود :متفکر:

Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal _
dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib _
"user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha _
As Byte, ByVal dwFlags As Long) As Long
Private Sub Form_Load()
Dim Ret As Long
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, 0, CByte(100), LWA_ALPHA
End Sub

:لبخند:

ممنون از توجه تون اما منظور من این نبود
اگر به عکس ضمیمه نگاه میکردید متوجه میشدید

منظور من تم Aero ویندوز 7 یا ویستا هست
من میخوام محیط فرم از Theme ویندوز استفاده کنه و اگر تم ویندوز Aero نبود فرم شیشه ای نشه

اونایی که ویندوز سون یا ویستادارن منظور من رو به خوبی درک میکنن

یا حق

REZADG
جمعه 04 دی 1388, 10:04 صبح
در سته این کد ها تمام فرم و اجزاش رو شیشه ای میکنه اما در عکس فقط پشت زمینه شفاف میشه
به نظر من این دوتا فرم هست یه نمونه کد توی همین تالار بود اگر پیدا کنم میزارم دوتا فرم بود که یکی شیشه ای بود و دومی افتاده بود روی اون و شکل همین شده بود

saeedvir
جمعه 04 دی 1388, 11:15 صبح
بله دوست عزیز

win 7 یا هر تم که برای ویندوز نصب می کنید
میاد اون نوار برنامه که شمامل دکمه های خروج - بزرگنمایی و ... هست را مخفی می کنه و از خودش را جایگزین می کنه

Mr'Jamshidy
جمعه 04 دی 1388, 18:10 عصر
اما نظر من کمی با نظر شما فرق میکنه

این ویندوز نیست که چیزی رو روی فرم نوشته شده جای گزین میکنه، فرم برنامست که از تم ویندوز داخل برنامه استفاده میکنه.

حالا اگه ما بخوایم این کار رو خدمون دستی انجام بدیم (تم رو بصورت دستی روی فرم بزاریم) باید چی کار کنیم.

من یک سورس دارم که تم ویندوز رو میگیره و روی فرم میزاره اما شیشه ای نمیکنه و اگر درست یادم باشه فقط و فقط از فایل Themeui.dll استفاده میکرد

یک سورس هم دیدم که تم شیشه ای رو روی فرم پیاده میکرد خیلی جالب بود اما اون چیزی که من میخواستم نبود و در همه حال از حالت شیشه ای استفاده میکرد و در کل خیلی نقص داشت

حالا اگه دوستان پیشنهادی نظری انتقادی چیزی دارن بگن تا از نظراتتون استفاده کنیم

یا حق

leilast
شنبه 05 دی 1388, 01:22 صبح
فكر كنم قبلاً هم مطرح شده بود :متفکر:

Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal _
dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib _
"user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha _
As Byte, ByVal dwFlags As Long) As Long
Private Sub Form_Load()
Dim Ret As Long
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, 0, CByte(100), LWA_ALPHA
End Sub
:لبخند:
من از این کد استفاده کردم ولی فرمم تغییری نکرد!!
میشه بگید چه جوری باید ازش استفاده کنم؟
خیلی لازمش دارم

REZADG
شنبه 05 دی 1388, 07:12 صبح
توی خط اخر یعنی

SetLayeredWindowAttributes Me.hWnd, 0, CByte(100), LWA_ALPHA
به جای صفر وسطی یه عدد دل خواه بده مثلا

SetLayeredWindowAttributes Me.hWnd, 75, CByte(100), LWA_ALPHA

Mr'Jamshidy
شنبه 05 دی 1388, 16:49 عصر
باز هم سلام :)

یعنی واقعا کسی نظری نداره؟

حداقل یک کدی معرفی کنید که بوسیله برنامه بتونم بفهمم که تم ویندوز Aero خست یا نه؟

-------
یا حق

Mr'Jamshidy
شنبه 05 دی 1388, 20:07 عصر
اینم یک برنامه دیگه که مثل برنامه On-Screen Keyboard بصورت تمام شیشه ای هست.
در ضمن امتحانش کردم بطور کامل از تم ویندوز استفاده میکنه.

باز هم کسی نظری نداره؟ :(

--ویرایش-------
در ضمن شرمنده یکم کیفیت عکس پایینه مجبور شدم با MS-Paint این عکس رو بزارم

--------
یا حق

Dr.Bronx
شنبه 05 دی 1388, 22:02 عصر
چرا اذیت می کنید خودتون رو !!!

شما هر تمی که فکر می کنید براتون خوبه و کاری که شما می خواید رو انجام می ده پیدا کنید.

بعد با codejock skin framework فرمتون رو به همون حالت در بیارید.

آموزشش هم توی انجمن به صورت مفصل هستش.

موفق باشید ./

Mr'Jamshidy
شنبه 05 دی 1388, 22:52 عصر
چرا اذیت می کنید خودتون رو !!!

شما هر تمی که فکر می کنید براتون خوبه و کاری که شما می خواید رو انجام می ده پیدا کنید.

بعد با codejock skin framework فرمتون رو به همون حالت در بیارید.

آموزشش هم توی انجمن به صورت مفصل هستش.

موفق باشید ./

*ویرایش شد*
روش یکم کار میکنم اگه به نتیجه نرسیدم باز خلاصشو میزارم اینجا :)