View Full Version : مشکل ثابت نگه داشتن صفحه نمایش
  
harry potter
شنبه 17 دی 1384, 23:23 عصر
سلام 
من میخواستم که کدی یا اکتیوکسی برام بذارید که بتونه مختصات نمایش رو ثابت نگه داره
مثلا من میخوام که توی همه کامپیوتر ها فرم برنامه وسط صفحه نمایش باشه
من اسم اکتیوکسی که این کار رو میکنه بلدم ولی ندارم اگه اکتیوکس رو دارید برام بذارید
اکتیوکس RESIZER
ممنون دوستان عزیز:خجالت:
meh_secure
یک شنبه 18 دی 1384, 12:55 عصر
شما قصد دارید ابعاد صفحه نمایش رو تغییر بدید یا محل قرارگیری فرم در صفحه ؟؟
H_SH_VB
یک شنبه 18 دی 1384, 13: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, 13:06 عصر
سلام حسین آقا.
صحبت از یه ای پی آی کرده بودی.
میشه بفرستیش؟؟
meh_secure
یک شنبه 18 دی 1384, 13:07 عصر
در ضمن یه سوال:
        قصد نداری فینگلیش رو ترک کنی و به یه زبان استاندارد رو بیاری ؟
Bithiah
یک شنبه 18 دی 1384, 13: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, 13:32 عصر
خیلی ممنون. بسی فیض بردیم.
hadi2345
یک شنبه 18 دی 1384, 14:39 عصر
با سلام .
دوست عزیز کد بالا درست کار میکنه ، ولی Refresh Rate  مونیتور رو پایین میاره (60 هرتز) . و متاسفانه من تا حالا کدی ندیدم که این مشکل رو رفع کرده باشه . حتی تو سایت WWW.VBCITY.COM هم مطرح کردم ، ولی اونجا هم کسی جواب درست و حسابی نداد . 
ممنون .
موفق باشید .
meh_secure
یک شنبه 18 دی 1384, 14:45 عصر
این یک امر طبیعی هستش.
چون ممکنه رزولوشن مورد نظر رفرش ریت رو ساپورت نکنه و مجبور به تغییر دادن اون بشه
hadi2345
سه شنبه 20 دی 1384, 11:22 صبح
با سلام مجدد .
متاسفانه در رزولوشن های بالا هم که قاعدتا باید ساپورت کنه هم جواب نمیده در حالیکه در بعضی نرم افزارها من دیدم که رزولوشن تغییر پیدا میکنه بدون اینکه رفرش ریت پایین بیاد .
موفق باشید .
meh_secure
سه شنبه 20 دی 1384, 13:10 عصر
آیا تابعی برای تغییر رفرش ریت وجود داره یا نه ؟ و آیا می شه رفرش ریت رو بصورت یکی از پارامتر های تابع تغییر رزولوشن به اون فرستاد ؟؟
perfeshnal
چهارشنبه 27 اردیبهشت 1385, 06:23 صبح
اگر شما می خواهید که فرم شما در وسط صفحه قرار بگیره می تونید از گزینه های Propertise
فرم گزینه StartupPosition بنا به خواست خود تنظیم کنید.
ali_t264
پنج شنبه 28 اردیبهشت 1385, 07: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, 08:15 صبح
این برای فرمهای MDIChild صدق نمیکنه!
subsub
پنج شنبه 28 اردیبهشت 1385, 13:26 عصر
سلام
آقایون راه حل پیدا شد در رجیستری کلیدی وجود داره که رفرش ریت رو ذخیره می کنه
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\Current\System\CurrentControlSet\Control\ VIDEO\{7C2213A8-75C3-49B6-98AE-E618DFCA9671}\0000
DefaultSettings.VRefresh
مقدار این کلید با تغییر رفرش ریت تغییر می کنه 
شما می تونید قبل از تغییر هر چیزی اطلاعات را از همین مسیر بخونید و پس از اتمام برنامه این اطلاعات را با کد اجرا کنید. حتماً کار می ده
subsub
پنج شنبه 28 اردیبهشت 1385, 13:31 عصر
آیا تابعی برای تغییر رفرش ریت وجود داره یا نه ؟ و آیا می شه رفرش ریت رو بصورت یکی از پارامتر های تابع تغییر رزولوشن به اون فرستاد ؟؟
همین توابعی که می نویسند، همه این امکانات را داره ولی باید خودت تعیین کنی
اگه خواستی میل بزن تا برات بفرستم
subsub
پنج شنبه 28 اردیبهشت 1385, 13:33 عصر
یه سری به allapi.net بزن
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.