Καλησπέρα κοινότητα του .NetZone!
Σύντομα θα πρέπει να αρχίσω την ανάπτυξη ενός νέου προγράμματος (προορίζεται για εξαιρετικά πολύ μικρές οθόνες, για ειδική χρήση). Η ανάλυση του θα είναι 640χ400 και θα πρέπει να καλύπτει ολόκληρη την οθόνη. Εύκολο... όμως κάπου εδώ αρχίζουν τα προβλήματα..
Οι περισσότερες οθόνες που θα το έχουν, θα έχουν πράγματι 640χ400 ανάλυση. Τι θα γίνει όμως αν μπει σε ένα τάμπλετ με μεγαλύτερη ανάλυση?
Χρειάζομαι ένα τρόπο να κάνω το πρόγραμμα FullScreen, όπως στα παιχνίδια ένα πράγμα.. Το Warcraft ΙΙΙ που παίζω για παράδειγμα, έχει ανάλυση 1280χ1024, ενώ η οθόνη μου έχει ανάλυση 1920χ1080. παρόλαυτά όμως, όταν ανοίγει το warcraft, αλλάζει η ανάλυση της οθόνης στην ανάλυση που υποδεικνύει το Warcraft III (για όσο παίζει), και αν πατήσω Alt+Tab (ή το WinKey for that matter), τότε γίνεται minimize το παιχνίδι και η οθόνη αλλάζει την ανάλυση σε αυτή που είχε πριν.
Ακριβώς αυτό θέλω να πετύχω και εγώ.
Έψαχνα με τις ώρες στο google σκεπτόμενος "δεν μπορεί, σίγουρα θα έχει λύσει το google... αποκλείεται να είμαι ο μόνος που θέλω κάτι τέτοιο...". Turns out δεν είμαι ο μόνος, αλλά οι λύσεις που δίνουν είναι πρόχειρες
Είδα κώδικες του τύπου:
1
2
3
4
5
6
7
8
9
| Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
With Me
.MaximizeBox = False
.MinimizeBox = False
' .TopMost = True
.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
.WindowState = System.Windows.Forms.FormWindowState.Maximized
End With
End Sub |
ή του τύπου:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
| '''<summary>
''' It will return current resolution parameters.
''' It can make a form FULLSCREEN ...
'''</summary>
'''IPStudents.Info - Its all about creativity and ideas.
'''Author : Yash Bharadwaj and Chander Prakash
'''Copyright : Free to use.Don't remove this Sticker.
'''Usage: Just call function fullscreen with form name as parameter.
'''It can detect client resolution as width-x and height-y
'''It can maximize form as fullscreen.
'''You can make form Topmost as optional
'''<author>Yash Bharadwaj</author>
'''<remarks></remarks>
Public Class FullscreenClass
Public Declare Function SetWindowPos Lib user32.dll Alias SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndIntertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags
As Integer) As Boolean
'You also need an alias to the API function called GetSystemMetrics, like this :
Private Declare Function GetSystemMetrics Lib user32.dll Alias GetSystemMetrics (ByVal Which As Integer) As Integer
'Following this you need to declare 4 constants :
Private Const SM_CXSCREEN As Integer = 0
Private Const SM_CYSCREEN As Integer = 1
Public Shared HWND_TOP As IntPtr = IntPtr.Zero
Public Const SWP_SHOWWINDOW As Integer = 64
'Then 2 public properties :
Public ReadOnly Property ScreenX() As Integer
Get
Return
GetSystemMetrics(SM_CXSCREEN)
End Get
End Property
Public ReadOnly Property ScreenY() As Integer
Get
Return
GetSystemMetrics(SM_CYSCREEN)
End Get
End Property
Public Sub FullScreen(ByVal frm As Form, ByVal boolTopOptional As Boolean)
frm.WindowState = FormWindowState.Maximized
frm.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.TopMost = boolTopOptional
SetWindowPos(frm.Handle, HWND_TOP, 0,0, ScreenX, ScreenY, SWP_SHOWWINDOW)
End Sub
End Class |
και άλλα πολλά
Οι ιστοσελίδες που επισκέφτηκα περιλαμβάνουν, αλλά δεν περιορίζονται σε:
- http://www.daniweb.com/software-development/vbnet/threads/78323/full-screen-apps
- http://softwaredevelopmentinchicago.com/2009/01/03/writing-full-screen-apps-in-vbnet/
- http://www.codeproject.com/Articles/25039/Fullscreen-the-form-in-VB-NET-using-a-class
- http://softwaredevelopmentinchicago.com/2009/01/03/writing-full-screen-apps-in-vbnet/
- http://weblogs.asp.net/ashben/archive/2003/10/17/32325.aspx
- http://stackoverflow.com/questions/4649877/making-winforms-fullscreen
- http://stackoverflow.com/questions/8657991/can-you-run-a-vb-application-in-full-screen
- http://bytes.com/topic/visual-basic-net/answers/386016-full-screen
- http://dhresta.wordpress.com/2010/09/24/fullscreen-in-vb-net-2010/
- http://www.codeproject.com/Articles/16618/How-To-Make-a-Windows-Form-App-Truly-Full-Screen-a
- http://www.daniweb.com/software-development/vbnet/threads/78323/full-screen-apps
(και άλλα)
Δυστυχώς δεν βρήκα λύση, και ελπίζω ότι θα μπορέσουμε να βρούμε κάτι μαζί.
Η εναλλακτική είναι να χρησιμοποιήσω αυτό που γράφουν και όλοι οι άλλοι (δλδ maximize το παράθυρο, border style = none) και να προγραμματίσω resize για το κάθε τι μέσα στη φόρμα..
Το θέμα είναι ότι η φόρμα θα έχει 5*4=20 εικονίδια στο πρότο tab, και άλλα 5-6 ακόμα στο δεύτερο, μαζί με textboxes, listbox, buttons...
Κι αν θέλω να αλλάξω κάτι και να βάλω κάτι άλλο.. άντε πάλι προγραμμάτισε resize για το control..
και δεν ξέρω καν αν μπορώ να τα κουνάω προγραμματιστικά και να φαίνονται σωστά... δεν μιλάμε μόνο για αλλαγή στο .width/height αλλά θα πρέπει και να κουνιούνται, δλδ αλλαγή και του .location(x,y).
γιαυτό πιστεύω ότι το fullscreen είναι η σωστή λύση..
Πείτε μου τι πιστεύετε κι εσείς.