PDA

View Full Version : مشکل ثابت نگه داشتن صفحه نمایش



harry potter
شنبه 17 دی 1384, 22:23 عصر
سلام
من میخواستم که کدی یا اکتیوکسی برام بذارید که بتونه مختصات نمایش رو ثابت نگه داره
مثلا من میخوام که توی همه کامپیوتر ها فرم برنامه وسط صفحه نمایش باشه
من اسم اکتیوکسی که این کار رو میکنه بلدم ولی ندارم اگه اکتیوکس رو دارید برام بذارید
اکتیوکس RESIZER

ممنون دوستان عزیز:خجالت:

meh_secure
یک شنبه 18 دی 1384, 11:55 صبح
شما قصد دارید ابعاد صفحه نمایش رو تغییر بدید یا محل قرارگیری فرم در صفحه ؟؟

H_SH_VB
یک شنبه 18 دی 1384, 12:04 عصر
bebin age mikhay abaade safe namayesh ro avaz koni ke ba ye API mitooni kariam nadare
age khasti apiesh ro migam
vali age mikhay formet vasat bashe ke dige holooe
ye property tanzim mikoni
be esme
startupposition = centerscreen
movafagh bashi

meh_secure
یک شنبه 18 دی 1384, 12:06 عصر
سلام حسین آقا.

صحبت از یه ای پی آی کرده بودی.
میشه بفرستیش؟؟

meh_secure
یک شنبه 18 دی 1384, 12:07 عصر
در ضمن یه سوال:
قصد نداری فینگلیش رو ترک کنی و به یه زبان استاندارد رو بیاری ؟

Bithiah
یک شنبه 18 دی 1384, 12:29 عصر
دوستان برای تغییر resolution صفحه نمایش می تونین از تابع ChangeDisplaySettings استفاده کنین که یک تابع API هست. این هم کدش:

Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, _
ByVal iModeNum As Long, _
lpDevMode As Any) As Boolean

Declare Function ChangeDisplaySettings Lib "user32" _
Alias "ChangeDisplaySettingsA" _
(lpDevMode As Any, ByVal dwFlags As Long) As Long

Declare Function ExitWindowsEx Lib "user32" _
(ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Public Const CCDEVICENAME = 32
Public Const CCFORMNAME = 32
Public Const DM_BITSPERPEL = &H40000
Public Const DM_PELSWIDTH = &H80000
Public Const DM_PELSHEIGHT = &H100000
Public Const CDS_UPDATEREGISTRY = &H1
Public Const CDS_TEST = &H4
Public Const DISP_CHANGE_SUCCESSFUL = 0
Public Const DISP_CHANGE_RESTART = 1

Type DEVMODE
dmDeviceName As String * CCDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

Example

Changes the resolution to 640x480 with the current colordepth.

Dim DevM As DEVMODE
'Get the info into DevM
erg& = EnumDisplaySettings(0&, 0&, DevM)
'We don't change the colordepth, because a
'rebot will be necessary

DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT 'Or DM_BITSPERPEL
DevM.dmPelsWidth = 640 'ScreenWidth
DevM.dmPelsHeight = 480 'ScreenHeight
'DevM.dmBitsPerPel = 32 (could be 8, 16, 32 or even 4)

'Now change the display and check if possible

erg& = ChangeDisplaySettings(DevM, CDS_TEST)

'Check if succesfull

Select Case erg&
Case DISP_CHANGE_RESTART
an = MsgBox("You've to reboot", vbYesNo + vbSystemModal, "Info")
If an = vbYes Then
erg& = ExitWindowsEx(EWX_REBOOT, 0&)
End If
Case DISP_CHANGE_SUCCESSFUL
erg& = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
MsgBox "Everything's ok", vbOKOnly + vbSystemModal, "It worked!"
Case Else
MsgBox "Mode not supported", vbOKOnly + vbSystemModal, "Error"
End Select

End Sub
منبع: AllAPI.net

meh_secure
یک شنبه 18 دی 1384, 12:32 عصر
خیلی ممنون. بسی فیض بردیم.

hadi2345
یک شنبه 18 دی 1384, 13:39 عصر
با سلام .
دوست عزیز کد بالا درست کار میکنه ، ولی Refresh Rate مونیتور رو پایین میاره (60 هرتز) . و متاسفانه من تا حالا کدی ندیدم که این مشکل رو رفع کرده باشه . حتی تو سایت WWW.VBCITY.COM هم مطرح کردم ، ولی اونجا هم کسی جواب درست و حسابی نداد .
ممنون .
موفق باشید .

meh_secure
یک شنبه 18 دی 1384, 13:45 عصر
این یک امر طبیعی هستش.
چون ممکنه رزولوشن مورد نظر رفرش ریت رو ساپورت نکنه و مجبور به تغییر دادن اون بشه

hadi2345
سه شنبه 20 دی 1384, 10:22 صبح
با سلام مجدد .
متاسفانه در رزولوشن های بالا هم که قاعدتا باید ساپورت کنه هم جواب نمیده در حالیکه در بعضی نرم افزارها من دیدم که رزولوشن تغییر پیدا میکنه بدون اینکه رفرش ریت پایین بیاد .
موفق باشید .

meh_secure
سه شنبه 20 دی 1384, 12:10 عصر
آیا تابعی برای تغییر رفرش ریت وجود داره یا نه ؟ و آیا می شه رفرش ریت رو بصورت یکی از پارامتر های تابع تغییر رزولوشن به اون فرستاد ؟؟

perfeshnal
چهارشنبه 27 اردیبهشت 1385, 05:23 صبح
اگر شما می خواهید که فرم شما در وسط صفحه قرار بگیره می تونید از گزینه های Propertise
فرم گزینه StartupPosition بنا به خواست خود تنظیم کنید.

ali_t264
پنج شنبه 28 اردیبهشت 1385, 06:51 صبح
[QUOTE=harry potter]سلام
من میخواستم که کدی یا اکتیوکسی برام بذارید که بتونه مختصات نمایش رو ثابت نگه داره
مثلا من میخوام که توی همه کامپیوتر ها فرم برنامه وسط صفحه نمایش باشه
من اسم اکتیوکسی که این کار رو میکنه بلدم ولی ندارم اگه اکتیوکس رو دارید برام بذارید
اکتیوکس RESIZER

ممنون
دوستان عزیز:خجالت:[/QUOTE
دوستان برای این کار به هیچ تابع apiیا چیز دیگه های احتیاج نیست فقط کافیه که در form_load خودتون این کد رو بنویسیدالبته به شرطی که از فرمهای mdi استفاده می کنید:
Me.Move (MDIForm1.ScaleWidth / 2) - (Me.Width / 2), (MDIForm1.ScaleHeight / 2) - (Me.Height / 2)
]

o0_Amin_0o
پنج شنبه 28 اردیبهشت 1385, 07:15 صبح
این برای فرمهای MDIChild صدق نمیکنه!

subsub
پنج شنبه 28 اردیبهشت 1385, 12:26 عصر
سلام
آقایون راه حل پیدا شد در رجیستری کلیدی وجود داره که رفرش ریت رو ذخیره می کنه
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\Current\System\CurrentControlSet\Control\ VIDEO\{7C2213A8-75C3-49B6-98AE-E618DFCA9671}\0000
DefaultSettings.VRefresh
مقدار این کلید با تغییر رفرش ریت تغییر می کنه
شما می تونید قبل از تغییر هر چیزی اطلاعات را از همین مسیر بخونید و پس از اتمام برنامه این اطلاعات را با کد اجرا کنید. حتماً کار می ده

subsub
پنج شنبه 28 اردیبهشت 1385, 12:31 عصر
آیا تابعی برای تغییر رفرش ریت وجود داره یا نه ؟ و آیا می شه رفرش ریت رو بصورت یکی از پارامتر های تابع تغییر رزولوشن به اون فرستاد ؟؟
همین توابعی که می نویسند، همه این امکانات را داره ولی باید خودت تعیین کنی
اگه خواستی میل بزن تا برات بفرستم

subsub
پنج شنبه 28 اردیبهشت 1385, 12:33 عصر
یه سری به allapi.net بزن