dom3787 Posted October 27, 2013 Share Posted October 27, 2013 Hi, I have 2 GUIs, I need to be able to know when my mouse is clicked on one or the other. I'm registering the $WM_LBUTTONDOWN message and I thought with a switch on the GUI handlers I could achieve that but it ain't working. Any tip on this please ? GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN") Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam) Local Const $SC_DRAGMOVE = 0xF012 Switch $hWnd Case $hGUI _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0) Case $hGUI_Secondary ConsoleWrite("secondary GUI is clicked") EndSwitch EndFunc A click (hold) on the main GUI allows to move it by dragging, no issue. A click on the 2nd GUI ... doesn't trigger anything, no message displayed in the console. No idea why. Link to comment Share on other sites More sharing options...
water Posted October 27, 2013 Share Posted October 27, 2013 Did you read the tutorial in the wiki how to handle multiple GUIs? My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted October 27, 2013 Moderators Share Posted October 27, 2013 dom3787,Works perfectly for me: #include <GUIConstantsEx.au3> #include <Constants.au3> #include <WindowsConstants.au3> #include <SendMessage.au3> $hGUI = GUICreate("Test", 200, 200, 100, 100) GUISetState() $hGUI_Secondary = GUICreate("Test 2", 200, 200, 300, 300) GUISetState() GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam) Local Const $SC_DRAGMOVE = 0xF012 Switch $hWnd Case $hGUI _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0) Case $hGUI_Secondary ConsoleWrite("secondary GUI is clicked" & @CRLF) EndSwitch EndFuncM23P.S. Posting runnable code rather then snippets is always a good idea. Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Solution dom3787 Posted October 27, 2013 Author Solution Share Posted October 27, 2013 (edited) Did you read the tutorial in the wiki how to handle multiple GUIs? Yep I found it while trying to solve my issue, wasn't helpful. I just found out the reason for it not to work though, still a bit wondering how to get that going as I want. The 2ndary GUI was filled with transparent label on all it's surface, thus when click on it, I, in fact, click on the Label which is on it and that message isn't triggered. edit : my code is hundreds of lines and a bunch of includes so I'm trying to strip it to the minimum, which was in fact here, lacking the gui declarations and their controls over them (especially that label ^^) Typical situation by the way, I'm not super familiar with GUIRegisterMsg() so that even if the code seemed ok, my eyes were on it for a long time, trying to find why it wasn't working, maybe of some misunderstanding on my part, whereas, in fact, the problem had it's origin on a totally different area which was the nature of the GUI and how it was made, here, completely covered with the label so that no background gui pixel was accessible to get that message triggered! Edited October 27, 2013 by dom3787 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now