كيف تعطيل ثم تمكين زر إعادة المحاولة في MESSAGEBOX؟

StackOverflow https://stackoverflow.com/questions/176062

  •  05-07-2019
  •  | 
  •  

سؤال

ولدي غير المدارة البرمجية التالية C ++:

MessageBox( NULL, strMessage, "Cool Product", MB_RETRYCANCEL | MB_ICONEXCLAMATION);

وأريد أن تعطيل زر إعادة المحاولة لمدة 10 ثانية (على سبيل المثال)، ثم تمكينه.

وكيف يمكنني أن أفعل هذا؟

هل كانت مفيدة؟

المحلول

ومثل <وأ href = "https://stackoverflow.com/questions/176062/how-do-i-disable-and-then-enable-the-retry-button-in-a-messagebox-c#176082 ">ffpf يقول، تحتاج إلى إجراء الحوار الخاص بك للقيام بذلك، وذلك باستخدام MFC، ATL، Win32 والخام، وما إلى ذلك.

وبعد ذلك إنشاء جهاز ضبط الوقت من شأنها أن تمكن زر وتعطيل.

نصائح أخرى

لا يمكن التلاعب مباشرة الضوابط MESSAGEBOX، ولكن يمكنك استخدام الإختراق. تثبيت ربط WH_CBT فقط قبل عرض الحوار والتعامل مع الحدث HCBT_ACTIVATE. هذا وسوف تعطيك HWND مربع الرسالة، بحيث يمكنك أن تفعل ما تريد مع ذلك (فئة فرعية لها، إدارة أزرار وتحديد توقيت).

ويمكنك العثور على البرنامج التعليمي على مخصص MESSAGEBOX مع رمز العرض في الموقع جيمس براون.

ومع الدعوة MESSAGEBOX القياسية، لا يمكنك. كنت بحاجة لتنفيذ MESSAGEBOX الخاصة بك من أجل القيام بذلك.

لا أعتقد أن هذا ممكن مع الدعوة مربع رسالة القياسية.

وأنت من المحتمل أن يكون أفضل حالا كتابة مربع الرسالة الخاصة التي تتضمن هذه الوظيفة.

و(أو يمكن أن تكتب موضوع منفصل ان الساعات باستمرار على الشاشة في انتظار أن مربع الرسالة في الظهور، قم بتعطيل زر إعادة المحاولة، وانتظر 10 ثانية، وإعادة تمكين ذلك. ليس متعة. محمل الجد، أن تفعل ذلك بطريقة أخرى.)

ومنذ فيستا يمكنك استخدام taskdialog - حوار أكثر تطورا من مربع رسالة بسيطة. مزيد من المعلومات والروابط <لأ href = "http://shellrevealed.com/blogs/shellblog/archive/2006/09/19/So-long-MessageBox-and-thanks-for-all-the-memories.aspx" يختلط = "نوفولو noreferrer"> هنا .

وأنا أتفق مع efotinis، انها ليست مستحيلة، وبمجرد الانتهاء من HWND يمكنك أن تفعل ما تريد مع ذلك. انها مجرد مسألة "هل حقا بحاجة الخارقة أو هل أنت أفضل حالا مع مجرد خلق الخاصة الحوار مربع الرسالة"؟

وهناك طريقة أخرى يست لطيفة جدا للعثور على HWND (التي من الواضح تعطيك الوصول إلى eveything في مربع الرسالة) سيكون لبدء موضوع والاستقصاء ciclically لمقبض مربع الرسالة باستخدام EnumChildWindows. ولكن أنا شخصيا يفضل ربط WH_CBT أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top