2010-05-12 13 views
9

बस सोच रहा है कि क्या मोनो सिस्टम प्राप्त करने का कोई ज्ञात तरीका है। Windows.Forms एप्लिकेशन उबंटू/जीनोम पर पूर्णस्क्रीन जाने के लिए।मोनो उबंटू में एप फुलस्क्रीन जीतता है?

मोनो 2.4.2.3 उबंटू 9.10

विंडोज पर यह कर एक PInvoke की आवश्यकता है, स्पष्ट रूप से यहाँ काम करने के लिए नहीं जा रहा है।

यह है कि मैं क्या अधिकतम करने के लिए कोई नहीं है, केंद्र के लिए विंडो की स्थिति, और राज्य के लिए खिड़की सीमा की स्थापना हो जाता है:

alt text http://dl.dropbox.com/u/116092/misc/permalink/joggler/screenshot01.png

अद्यतन।

भी करने की कोशिश की:

  • this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
    यह। विन्डोस्टेट = सिस्टम। Windows.Forms.FormWindowState.Maximized;

  • CTRL-F11

  • पाठ = string.Empty; // कोई कैप्शन
    MaximizeBox = false;
    MinimizeBox = false;
    कंट्रोलबॉक्स = झूठा;
    फॉर्मबॉर्डर स्टाइल = कोई नहीं;
    विंडोस्टेट = अधिकतम;

  • फॉर्मबॉर्डर स्टाइल = फॉर्मबॉर्डर स्टाइल।
    स्थान = नया बिंदु (0, 0);
    आकार = स्क्रीन। प्राथमिक स्क्रीन। ध्वनि। आकार;

जिनमें से सभी मैं एक ही परिणाम के साथ समाप्त होता हूं।

मैं एक ऐसे लीड में आया हूं जिसमें _NET_WM_STATE_FULLSCREEN शामिल पिनकोक शामिल है, लेकिन जहां तक ​​मुझे इसके साथ मिला है। उस पर किसी भी संकेतक की सराहना की जाएगी।

+0

किसी से भी कुछ नहीं? – tomfanning

+0

यह एक बढ़िया मामला है, शुभकामनाएं। – rook

+0

हाँ, यही कारण है कि मैं पूछ रहा हूं :-) – tomfanning

उत्तर

2

_NET_WM_STATE_FULLSCREEN बस सीमाओं से छुटकारा पायेगा। गनोम पैनल अभी भी दिखाई देगा।

निम्नलिखित पोस्ट के अनुसार, गुप्त न्यूनतम से छुटकारा पाने के लिए है/अधिकतम आकार इतना है कि विंडो प्रबंधक करता ही आकार बदलने:

http://linux.derkeiler.com/Mailing-Lists/GNOME/2010-01/msg00035.html

यहाँ देशी कल्पना पर कुछ प्रलेखन है:

http://standards.freedesktop.org/wm-spec/wm-spec-latest.html

http://www.x.org/docs/ICCCM/icccm.pdf

एक्स विंडो सिस्टम से सीधे बात करने के लिए आपको XLib में पिनवोक करना होगा। _NET_WM_STATE_FULLSCREEN जैसी कुछ भेजने के लिए आपको विंडो में और डिस्प्ले पर पॉइंटर होना होगा।

मुझे यकीन नहीं है कि डिस्प्ले कैसे ढूंढें लेकिन मैं खिड़की के सूचक के साथ मदद कर सकता हूं। एक्स पर चलते समय, संपत्ति Form.Handle एक्स विंडो के लिए एक सूचक होना चाहिए।

+0

मैंने मोनो स्रोत के माध्यम से थोड़ी सी खोज की और कुछ भी नहीं कॉल _NET_WM_STATE_FULLSCREEN। मैं बहुत सहज हूं कि मोनो का उपयोग कर विंडो प्रबंधक को सही विंडो संकेत भेजने के लिए पूरी तरह से प्रबंधित तरीका नहीं है। आप जीटीके # का उपयोग कर सकते हैं क्योंकि यह जीटीके + अंडरथथ और gtk_window_fullscreen() का उपयोग करता है जो आप चाहते हैं। – Justin

0

क्या आपने यह कोशिश की है?

this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;    
    this.WindowState = System.Windows.Forms.FormWindowState.Maximized; 

दुर्भाग्य से मैं कोई उबंटू अभी उपलब्ध है, लेकिन मैं पुराने मोनो संस्करणों में इस के लिए वर्ष पैच देख सकते हैं ...

+0

दुर्भाग्य से यह स्क्रीन के शीर्ष पर टास्क बार पर नहीं जाता है (स्क्रीनशॉट के साथ अपडेट की गई पोस्ट) – tomfanning

+0

ठीक है - फिर पूर्ण स्क्रीन पर जाने के लिए प्रासंगिक सी कॉल को खोजने का प्रयास करें।देशी सी कार्यों को कॉल करना भी मोनो के तहत काम करता है। अगर आपको वहां समस्याएं हैं तो मुझे बताएं, लेकिन मैंने पहले यह किया है। – weismat

+0

हम्म, एक Google _NET_WM_STATE_FULLSCREEN वापस लाता है। क्या यह उपयोगी दिखता है? – tomfanning

0

यह हर अनुप्रयोग के साथ पूर्ण स्क्रीन मोड में GNOME के ​​अंदर चल रहा है प्रदर्शित करने के लिए संभव हो जाना चाहिए "CTRL + F11" हॉटकी।

शायद तुम

System.Windows.Forms.SendKeys.Send(); 

की कोशिश कर सकते हैं, लेकिन यह सिर्फ एक अनुमान है, मैं एक लिनक्स इस कोशिश करने के लिए एटीएम चल नहीं मिला है। लेकिन शायद यह मदद करता है।

+0

काम नहीं करता है :-( – tomfanning

0

मैं इस समय इसका परीक्षण नहीं कर सकता, लेकिन क्या आपने एक सरल आकार बदलने की कोशिश की है?

form.FormBorderStyle = FormBorderStyle.None 
form.Location = Point(0, 0) 
form.Size = Screen.PrimaryScreen.Bounds.Size 
+0

विंडोज़ पर अच्छा काम करता है लेकिन उपरोक्त दूसरे स्क्रीनशॉट के समान परिणाम। – tomfanning

2

सुनिश्चित नहीं हैं कि आप "पूर्ण स्क्रीन" क्या मतलब है - लेकिन मैं कई Windows.Forms अनुप्रयोगों है कि स्क्रीन पर कब्जा लिखा है, और एक एकल PInvoke बिना।

यहाँ कैसे मैं अपने मुख्य रूप कॉन्फ़िगर है ...

Text = string.Empty; // No caption 
MaximizeBox = false; 
MinimizeBox = false; 
ControlBox = false; 
FormBorderStyle = None; 
WindowState = Maximized; 

वैकल्पिक रूप से,

TopMost = true; 

आशा इस मदद करता है।

+0

यह विंडोज पर वास्तव में अच्छा काम करता है, जो कि बहुत अच्छा है, क्योंकि मुझे नहीं पता था कि आप इसे पिनवोक के बिना कर सकते हैं टास्कबार को छिपाने के लिए। हालांकि मोनो पर ऐसी कोई किस्मत नहीं है: http://dl.dropbox.com/u/116092/misc/permalink/joggler/screenshot02.png – tomfanning

0

मैंने पैनल के ऑटोहोइड प्रॉपर्टी को सेट करके अब इसके लिए काम किया है।

आदर्श नहीं है क्योंकि यह मेरे एप्लिकेशन को बदलने के लिए अपने पर्यावरण को बदलने वाले उपयोगकर्ता पर निर्भर करता है, लेकिन कुछ भी नहीं।

+0

क्या आप इसे मैन्युअल रूप से या कोड में कर रहे हैं? अगर बाद वाला, मैं मान लीजिए कि जब आप अपना ऐप फोकस करते हैं तो आप इसे हमेशा टॉगल कर सकते हैं। इस तरह, आपको पूरी स्क्रीन मिलती है लेकिन हर दूसरे ऐप की अपेक्षा की जाती है और जब सिस्टम पूरा हो जाता है तब सिस्टम छोड़ दिया जाता है। बेशक, आपको प्रारंभिक जांचना होगा यह सुनिश्चित करने के लिए राज्य कि यह पहले से ही ऑटो-छुपा नहीं था। यह काम करना चाहिए जैसे कि आपको लगता है कि यह भी मुश्किल है। – Justin

1

आपको उबंटू में दृश्य प्रभावों को अक्षम करने की आवश्यकता है।

संपादित करें: और सुनिश्चित करें कि आपका फॉर्म आकार सीमाओं के बिना कम से कम स्क्रीन रिज़ॉल्यूशन है। यदि सीमाएं डिजाइन समय पर हैं और आप उन्हें कोड में हटा रहे हैं तो आपको 1024x768 डिस्प्ले के लिए 1030x796 की तरह कुछ चाहिए।

1

मुझे इस समस्या से 2 दिन का सामना करना पड़ा है और अंत में मुझे समाधान मिला: बाएं टूल बार पर पहले आइकन पर क्लिक करें और compizconfig प्रोग्राम खोजें। वरीयता पर जाएं-> एकता और आप देखेंगे कि बाईं ओर एकता प्लगइन के लिए एक टिक है। उस टिक को हटा दें और आप देखेंगे कि शीर्ष मेनू बार गायब हो गया है। हालांकि यह धागा बहुत पुराना है लेकिन मुझे अभी भी उम्मीद है कि मैं इस समस्या को पाने और सहायता की तलाश करने वाले किसी भी व्यक्ति की मदद कर सकता हूं।

संबंधित मुद्दे