2012-05-18 18 views
12

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

मैंने माउस को डाउन/अप ईवेंट की कोशिश की है और इसे ट्रैक कर रहा है, लेकिन फॉर्म को आकार देने पर इन घटनाओं को नहीं कहा जाता है।

उत्तर

20

चलने या आकार बदलने का पता लगाने के लिए, WM_ENTERSIZEMOVE संदेश पकड़ें। उपयोगकर्ता विंडो के शीर्षक पट्टी पर क्लिक करने या सीमा का आकार बदलने के बाद इसे विंडो में भेजा जा रहा है (खिड़की चलती या आकार देने वाली लूप में प्रवेश करती है)।

चलने या आकार बदलने का पता लगाने के लिए, WM_EXITSIZEMOVE संदेश पकड़ें। उपयोगकर्ता खिड़की के शीर्षक पट्टी को छोड़ने या सीमा का आकार देने के बाद इसे खिड़की पर भेजा जा रहा है (विंडो को चलती या आकार देने वाली लूप से बाहर निकलने में क्या बनाता है)।

आप प्रपत्र स्तर पर घोषित करने के लिए (और लागू करने) उनके द्वारा उनमें से या तो पकड़ कर सकते हैं:

procedure WMEnterSizeMove(var Message: TMessage); message WM_ENTERSIZEMOVE; 
procedure WMExitSizeMove(var Message: TMessage); message WM_EXITSIZEMOVE; 
+6

+1। आशा है कि आपको थोड़ी मदद नहीं मिलेगी। :) –

+0

टीलामा: क्या एफएमएक्स में ऐसा करने का कोई समकक्ष तरीका है? – RobertFrank

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