Jump to content
Sign in to follow this  
TanerJames

GUIRegisterMsg not working

Recommended Posts

TanerJames

Hi,

Drag not working on GUICtrlCreatePic object. Why?

Thanks.

#include
#include
#include


GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")

$hGUI = GUICreate("Test", 500, 200, -1, 100)
$caption = GUICtrlCreateLabel("example", 200, 100, 150, 26)
$iBtn_Exit = GUICtrlCreateButton("Exit", 200, 150, 100, 40)
;~ GUISetState()
$hGUI2 = GUICreate("gui2", 150, 70, 10, 10, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
$iBtn_Effect2 = GUICtrlCreateButton("XXXX", 10, 10, 100, 40)
GUISetBkColor(0xE0FFFF, $hGUI2)

$hGUI3 = GUICreate("gui3", 150, 70, 10, 80, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
GUISetBkColor(0xA0FFFF, $hGUI3)
$img = GUICtrlCreatePic("mslogo.jpg", 10, 10, 100, 50)

GUISetState(@SW_SHOW, $hGUI)
GUISetState(@SW_SHOW, $hGUI2)
GUISetState(@SW_SHOW, $hGUI3)

Global $hHBmp
Do
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $iBtn_Exit
GUIDelete()
Exit

EndSwitch
Until False

Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
GUICtrlSetData($caption, $hWnd & " " & Random()) ; for test
If (($hwnd = $hGUI) or ($hwnd = $hGUI2) or ($hwnd = $hGUI3)) And ($iMsg = $WM_NCHITTEST) Then
_SendMessage($hGUI,$WM_SYSCOMMAND,0xF012,0)
EndIf
EndFunc

Share this post


Link to post
Share on other sites
guinness

Place GUIRegisterMsg after the GUI creation. Also you the basic editor when posting AutoIt code and the includes were stripped.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
TanerJames

GUIRegisterMsg after GUI creation same problem.

Can't drag on GUICtrlCreatePic object.

Share this post


Link to post
Share on other sites
Melba23

TanerJames,

The $WM_NCHITTEST message is sent to see if the cursor is over the title bar - as the pic control does not have a title bar it will never fire the message. ;)

I would check to see if the cursor is over the control when the mouse button is pressed - like this:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SendMessage.au3>

$hGUI = GUICreate("Test", 500, 200, -1, 100)
$caption = GUICtrlCreateLabel("example", 200, 100, 150, 26)
$iBtn_Exit = GUICtrlCreateButton("Exit", 200, 150, 100, 40)
;~ GUISetState()
$hGUI2 = GUICreate("gui2", 150, 70, 10, 10, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
$iBtn_Effect2 = GUICtrlCreateButton("XXXX", 10, 10, 100, 40)
GUISetBkColor(0xE0FFFF, $hGUI2)

$hGUI3 = GUICreate("gui3", 150, 70, 10, 80, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
GUISetBkColor(0xA0FFFF, $hGUI3)
$img = GUICtrlCreatePic("M:\Program\Au3 Scripts\Images\VistaX.jpg", 10, 10, 100, 50)
$hImg = GUICtrlGetHandle($img)
ConsoleWrite($hImg & @CRLF)

GUISetState(@SW_SHOW, $hGUI)
GUISetState(@SW_SHOW, $hGUI2)
GUISetState(@SW_SHOW, $hGUI3)

GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")

Global $hHBmp

Do
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $iBtn_Exit
            GUIDelete()
            Exit
        Case $GUI_EVENT_PRIMARYDOWN
            $aCInfo = GUIGetCursorInfo()
            If IsArray($aCInfo) And $aCInfo[4] = $img Then
                _SendMessage($hGUI, $WM_SYSCOMMAND, 0xF012, 0)
            EndIf
    EndSwitch

Until False

Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
    GUICtrlSetData($caption, $hWnd & " " & Random()) ; for test
    If (($hWnd = $hGUI) Or ($hWnd = $hGUI2) Or ($hWnd = $hGUI3)) And ($iMsg = $WM_NCHITTEST) Then
        _SendMessage($hGUI, $WM_SYSCOMMAND, 0xF012, 0)
    EndIf
EndFunc   ;==>WM_NCHITTEST

All clear? :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
TanerJames

Melba23, thanks :)

How do I use except GUIGetMsg?

Example: RunWait process (not work GUIGetMsg but GUIRegisterMsg working)

How can I use in GUIRegisterMsg? (I want drag code to continuous run)

Share this post


Link to post
Share on other sites
Melba23

TanerJames,

Some people are never satisfied! :D

Try this - you have to disable the pic control but that has no effect on its appearance: ;)

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SendMessage.au3>

$hGUI = GUICreate("Test", 500, 200, -1, 100)
$caption = GUICtrlCreateLabel("example", 200, 100, 150, 26)
$iBtn_Exit = GUICtrlCreateButton("Exit", 200, 150, 100, 40)
;~ GUISetState()
$hGUI2 = GUICreate("gui2", 150, 70, 10, 10, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
$iBtn_Effect2 = GUICtrlCreateButton("XXXX", 10, 10, 100, 40)
GUISetBkColor(0xE0FFFF, $hGUI2)

$hGUI3 = GUICreate("gui3", 150, 70, 10, 80, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
GUISetBkColor(0xA0FFFF, $hGUI3)
$img = GUICtrlCreatePic("M:\Program\Au3 Scripts\Images\VistaX.jpg", 10, 10, 100, 50)
GUICtrlSetState(-1, $GUI_DISABLE) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

GUISetState(@SW_SHOW, $hGUI)
GUISetState(@SW_SHOW, $hGUI2)
GUISetState(@SW_SHOW, $hGUI3)

GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUIRegisterMsg($WM_LBUTTONDOWN, "WM_LBUTTONDOWN")

Global $hHBmp

Do
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $iBtn_Exit
            GUIDelete()
            Exit
    EndSwitch

Until False

Func WM_LBUTTONDOWN($hWnd, $iMsg, $iwParam, $ilParam)
    If (($hWnd = $hGUI) Or ($hWnd = $hGUI2) Or ($hWnd = $hGUI3)) Then
        _SendMessage($hGUI, $WM_SYSCOMMAND, 0xF012, 0)
    EndIf
EndFunc

Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
    GUICtrlSetData($caption, $hWnd & " " & Random()) ; for test
    If (($hWnd = $hGUI) Or ($hWnd = $hGUI2) Or ($hWnd = $hGUI3)) And ($iMsg = $WM_NCHITTEST) Then
        _SendMessage($hGUI, $WM_SYSCOMMAND, 0xF012, 0)
    EndIf
EndFunc   ;==>WM_NCHITTEST

Does that meet with your approval? :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
TanerJames

wow :) big thanks

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×