Jump to content

GUIRegisterMsg not working


Recommended Posts

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
Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • Moderators

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 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

 

Link to comment
Share on other sites

  • Moderators

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 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

 

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...