2011-10-21 10 views
7

मैं एक कस्टम संदेश बॉक्स बनाना चाहता हूं। मैं कस्टमाइज़ करना चाहता हूं बटन बटन है।Win32 कस्टम संदेश बॉक्स

MessageBoxW(
    NULL, 
    L"Target folder already exists. Do you want to overwrite the folder?", 
    L"No title", 
    MB_YESNOCANCEL | MB_ICONQUESTION 
); 

मैं सिर्फ Overwrite, Skip, Cancel करने के लिए बटन पाठ बदलना चाहते हैं।
सबसे आसान तरीका क्या है?

मुझे इसे विंडोज डिफ़ॉल्ट संदेशबॉक्स के साथ समान दिखने और महसूस करने के लिए बनाना है।

उत्तर

7

जैसा कि दूसरों ने कहा है, एक सामान्य तरीका एक संवाद संसाधन बनाना है और एक पूरी तरह से स्वतंत्र संवाद है, जिसे जीयूआई को मानक संवाद की तरह दिखने के तरीके की आवश्यकता है (महसूस करने और देखने के लिए आपके अनुरोध को पूरा करने के लिए) । यदि आप टेक्स्ट संदेश स्वीकार करना चाहते हैं, तो संभवतः आपको उस कोड को जोड़ने की आवश्यकता हो सकती है जो विंडो को उचित रूप से आकार दे।

फिर भी, उन लोगों के लिए एक और विकल्प है जो उन्नत चीजों में डाइविंग की तरह महसूस करते हैं। जबकि MessageBox एपीआई फिंट ट्यूनिंग के लिए ज्यादा ऑफर नहीं करता है, तब भी आपके हाथों में SetWindowsHookEx है। हुक को पंजीकृत करने के बाद, आप मानक MessageBox विंडो प्रक्रिया को रोक सकते हैं और जिस तरह से आप इसे पसंद करते हैं उसे उप-वर्गीकृत कर सकते हैं।

ठेठ बातें शामिल हैं:

  • बदलते बटन पाठ
  • अधिक नियंत्रण जोड़ने
  • समय समाप्त हो गया जोड़ने स्वत: करीब

Hooking मानक खिड़की उन सभी कर सकते हैं।

यूपीडी। अरे, मुझे एहसास हुआ कि मेरे पास SetWindowsHookEx के साथ कुछ कोड है: http://alax.info/blog/127

+0

विंडो हुक के साथ संदेशबॉक्स में नियंत्रण जोड़ना बुरा नहीं है? क्योंकि क्या होगा यदि Windows की अगली रिलीज संदेशबॉक्स में कुछ अन्य नियंत्रण जोड़ती है, या उन्हें चारों ओर ले जाती है? – stackptr

+0

@cpp_prog: हाँ, इसे करने से पहले दो बार सोचना चाहिए। दूसरी तरफ यदि आप इसे स्वयं बंद करना चाहते हैं तो फिर से शुरूआत से खुद को बनाने के बजाय अच्छी तरह से किए गए संदेश बॉक्स का पुन: उपयोग क्यों न करें। –

1

एक संवाद संसाधन बनाएं (एक जीयूआई संपादक के साथ, या हाथ से) और DialogBox पर कॉल करें। MessageBox व्यवहार को बदलने के लिए कोई तरीका नहीं है, इसके तर्कों के आधार पर क्या है।

उस ने कहा, आपका संदेश बॉक्स स्टॉक हाँ/नहीं विकल्प का बहुत अच्छी तरह से उपयोग कर सकता है।

2

आप एक स्वयं का संवाद बना सकते हैं। या आप in this article वर्णित विंडो विंडो हुक का उपयोग कर सकते हैं।

0

Vista में पेश की गई task dialog कार्यक्षमता बिल्कुल वही है जो आप चाहते हैं और मौजूदा सिस्टम थीम का पालन करें। हालांकि, अगर आपको XP का समर्थन करना है, तो यह आपके लिए थोड़ा सा आराम होगा।

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