2008-10-01 16 views
13

में आगे कैसे नियंत्रण ला सकते हैं आप एमएफसी में डिज़ाइन समय पर नियंत्रण-जेड-ऑर्डर कैसे बदलते हैं - यानी मैं सेटविंडोपॉस का उपयोग नहीं कर सकता या रनटाइम पर ऐसा नहीं कर सकता - मैं बदल गया ज़ेड देखना चाहता हूं डिजाइनर में -ऑर्डर (भले ही मुझे .rc कोड को सीधे संपादित करने का सहारा लेना पड़े)।आप एमएफसी

मेरे पास एक एमएफसी संवाद है जिसमें मैं नियंत्रण जोड़ रहा हूं। यदि नियंत्रण के किनारों के बीच ओवरलैप है, तो मैं एक को दूसरे के सामने ले जाना चाहता हूं। विंडोज फॉर्म या डब्ल्यूपीएफ आदि में, मैं सामने ला सकता हूं, वापस भेज सकता हूं, आगे ला सकता हूं, वापस भेज सकता हूं। मुझे एमएफसी में ये विकल्प नहीं मिलते हैं, न ही मैं यह बता सकता हूं कि यह कैसे तय करता है कि आगे क्या है, क्योंकि नियंत्रण पहले जोड़ा गया था जो पहले वहां था। मैं एमएफसी में जेड-ऑर्डर कैसे कर सकता हूं? भले ही मुझे सीधे .rc फ़ाइल कोड में हेरफेर करना है (यानी डिजाइनर के चारों ओर अंत-दौड़)।

उत्तर

14

मुझे लगता है कि सामने का नियंत्रण आरसी फाइल में होने वाला अंतिम नियंत्रण होगा। दूसरे शब्दों में, संवाद संपादक प्रत्येक नियंत्रण को आकर्षित करेगा क्योंकि यह आरसी फ़ाइल में ऊपर से नीचे तक सामना किया जाता है, जब आवश्यक हो तो उन्हें ओवरलैप करना।

आप उन्हें पुन: व्यवस्थित करने के लिए आरसी फ़ाइल को संपादित कर सकते हैं, या आप संपादक में टैब ऑर्डर बदल सकते हैं, जो वही काम करता है क्योंकि टैब ऑर्डर फ़ाइल में नियंत्रण होने के क्रम के आधार पर भी सेट किया जाता है। मेरे ज्ञान के लिए एमएफसी डिजाइन समय पर ओवरलैपिंग नियंत्रणों को लेयर करने का कोई अन्य तरीका नहीं प्रदान करता है।

10
GetDlgItem(IDC_MYCONTROL)->SetWindowPos(HWND_TOP, 
             0, 0, 0, 0, 
             SWP_NOMOVE | SWP_NOSIZE); 
+2

प्रश्न "डिज़ाइन समय पर" निर्दिष्ट नहीं है * नहीं * चलने के समय पर। –

+0

(संपादित करें: एमएफसी-एडिट-ब्राउज-कंट्रोल मेरा समाधान है) ,,, धन्यवाद, गोना को इस लड़ाई से मैन्युअल रूप से लड़ना है। ड्रा + क्लिक + फ़ोकस ईवेंट अपने स्वयं के ऑर्डर को मजबूर करते हैं और मैं अकेले टैब ऑर्डर पर भरोसा नहीं कर सकता। EX: बटन एक CEdit ontop। बटन को संपादन बॉक्स से पहले होना चाहिए, या फिर क्लिक को संपादित करने के लिए क्लिक करें। हालांकि, संपादन में क्लिक करने से यह ऑर्डर के बावजूद बटन के ऊपर खींचने का कारण बन जाएगा। – diox8tony

1

आप माता-पिता खिड़की में अपनी स्थिति को परिवर्तित किए बिना, अपने नियंत्रण के Z क्रम को नियंत्रित करने के CWnd::SetWindowPos() उपयोग कर सकते हैं।

6

दरअसल, यदि आप संसाधन संपादक में ऐसा करना चाहते हैं, तो आप केवल आइटम को काट सकते हैं और फिर उसे त्वरित और गंदे समाधान के रूप में पेस्ट कर सकते हैं। बस Ctrl-X फिर Ctrl-V।

आरसी फ़ाइल संपादित करना भी काम करेगा।

+0

यह दिन बचाया।मेरे पास एक अप्रयुक्त टेक्स्टबॉक्स था जिसे मैं कहीं छिपाना चाहता था और इसे ** आधे घंटे ** के लिए डिज़ाइनर व्यू में ढूंढ नहीं पाया। इसलिए मैंने इसे गुणों से चुना, डिजाइनर व्यू पर क्लिक किया, 'ctrl-x',' ctrl-v', (कुछ कर्लिंग), 'del'। – Sharky

0

में एमएसवीसी 2005 संवाद संसाधन संपादक टैब ऑर्डर सेट करने का विकल्प है। में एमएसवीसी 2005 यह प्रारूप, टैब ऑर्डर मेनू पर पाया जाता है।

इस मेनू विकल्प द्वारा प्रदर्शित टैब ऑर्डर एक ही क्रम है जिसमें संसाधन फ़ाइल को नियंत्रण लिखा जाता है।

17

विजुअल स्टूडियो 6.0 में निम्न कार्य करें।

खोलें संवाद स्क्रीन (डिजाइनर ध्यान में रखते हुए)

Ctrl + D दबाएं

टैब आदेश प्रत्येक नियंत्रण के लिए दिखाया जाएगा टैब क्रम को देखने की उम्मीद में

प्रारंभ क्लिक करके नियंत्रण रन-टाइम (यानी, जिस नियंत्रण पर आप पहले क्लिक करते हैं, उसके पास टैब ऑर्डर 1 तक सेट होगा और ...)

+2

प्रश्न दृश्य जेड-इंडेक्स, * नहीं * टैब इंडेक्स का संबंध है। –

+0

@ टिमरिकसन ने इंगित करने के लिए धन्यवाद, 4 साल पहले इस प्रश्न का उत्तर देने पर मुझे वही विचार था :) लेकिन प्रश्न यह था कि डिजाइन समय पर जेड ऑर्डर ** कैसे करें **, इसलिए मैंने अपने एमएफसी में जिस दृष्टिकोण का उपयोग किया था, उसे साझा किया उस समय संवाद आधारित ऐप। – Senthil

+5

@ टिम एरिक्सन: विजुअल स्टूडियो टैब इंडेक्स * * जेड-इंडेक्स में है। –

1
GetDlgItem(IDC_CONTROL1)->SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE) 
संबंधित मुद्दे