https://www.excelfox.com/forum/showt...ll=1#post10471
Part _Rem2_b)(ii) the positional arguments
Although, the important feature of the spreadsheet selection possibility whilst the Pop Up is up has been realised, ( and also another issue, the Microsoft “Help” appears to work ) , the position and size is somehow in someway coming to a default value, there is no position or size option
I am guessing that possibly it is not sized as such and that there are predetermined rules for an owned “Window”. There size is possibly predetermined from some pre determined “Window” that does not generally have the resize option , although positioning is somehow possible..
The feature of controlling the size was an option in both the Application InputBox Method and the InputBox Function. In the case of the InputBox Method it appeared to broken from Excel 2007+
I am not particularly interested in sizing and positioning after the event as I want a fairly fundamental Pop up for simple user input.
It turns out that this requires some very complicated processes.
It requires a full understanding of “Window”s. I can only attempt a very short very light-minded fecile overview. That will be discussed in the next posts: in Brief:
Sub Classing / Redefining a “Window”
As is generally the case with “Window” Functions, A window belongs to a class. The Dynamic Linked Libraries concept allow the small programs in the with windows shipped typically in the User32 Folder programs to be called up / used at runtime, rather than a fixed set of instructions copied or and/ or used as such at some point. This allows for a modification of the class, known as Sub classing.
This means that it is possible to modify / add to the “Window” Function and so pseudo create a customised dll. It does not necessarily mean that a “Window” Function or a used User32 Folder program is directly Sub classes , but it just happens to be in our case as we are intending to mess about with the MessageBoxA ( or MessageBoxTimeoutA )
Trigger Events Codes in Windows programs
If you are familiar with Event triggered codes in VBA then the way to do this you can consider as similar idea:
You can arrange that a used “Window” Function is modified as it is used.
Similar in the way that a Worksheet_change code is triggered as something happens, you must arrange that a VBA Function is triggered when a Windows “event” occurs. At this point the concept gets a bit vague and I doubt many people really understand anymore how it really works. A good name for the VBA Function might be Function WinSubWinCls_JerkBackOffHooKterd.
This VBA Function will itself be a pseudo “Window” Function and “hung” or hooked on a chain of events. Because of the dynamic / volatile nature of the stuff, things will have a habit of going on forever if they not “unhooked” such that a procedure will have to be designed to unhook itself. This will mean that generally this event triggered type code will only work once. A simple solution to make the solution work in a code for any number of message boxes would be use a simple routine which does two things, like pseudo
Sub()
' A) Hook the pseudo Windows Sub Class Function WinSubWinCls_JerkBackOffHooKterd
' B) Call the MessageBoxA
End
***The actual form of this will be close to these pseudo codings. It will be explained a bit more in detail later..
OrCode:Sub HookAPIssinUserDLL_MsgBoxThenDropIt() ' A) HOOK Hook the pseudo Windows Sub Class Function WinSubWinCls_JerkBackOffHooKerd Let hHookTrapCrapNumber = SetWindowsHooksExample(5, AddressOf WinSubWinCls_JerkBackOffHooKterd, 0, GetCurrentThreadId) ' (5-pull before flush, somehow arranges that the function gets called , ' B) Call the MessageBoxA APIssinUserDLL_MsgBox(hWnd:=&H0, Prompt:="Yes, or No to ReCheck, Cancel for help ", Title:="Selection Check: Address is " & Rsel.Address & " Value is """ & Valyou & """", Buts:=vbYesNoCancel) ' ' Pseudo Non Modal Message Box End Sub
' B) Call the MessageBoxACode:Sub HookAPIssinUserDLL_MsgBoxThenDropIt() ' a) HOOK Hook the pseudo Windows Sub Class Function WinSubWinCls_JerkBackOffHooKerd Dim BookMarkClassTeachMeWind As Long: Let BookMarkClassTeachMeWind = 5 Let hHookTrapCrapNumber = SetWindowsHooksExample(BookMarkClassTeachMeWind, AddressOf HoldYaBackCalledYaBackClapTrap, 0, GetCurrentThreadId) ' (5-pull before flush, somehow arranges that the function gets called , ' b) Call the MessageBoxA APIssinUserDLL_MsgBox &H0, "Select Range", "MutsNuts AkaApi working ApplicationPromptToRangeInputBox", vbOKOnly ' Pseudo Non Modal End Sub
This is simply our
Code:__ APIssinUserDLL_MsgBox(hWnd:=&H0, Prompt:="Yes, or No to ReCheck, Cancel for help ", Title:="Selection Check: " & RngSel.Address, Buts:=vbYesNoCancel) ' Pseudo Non Modal MsgBox
We need now to find the solutions to two things, I will try to give them a identifying “handle”
HOOK _ ' A) Hook the pseudo Windows Sub Class Function WinSubWinCls_JerkBackOffHooKterd
and then
PROC _ we need the ( VBA in this case ) Function/ Sub Procedure in that we will be hanging, / dangling on, a chain of events / effectively making a Windows Sub Class. I am calling this:
Function WinSubWinCls_JerkBackOffHooKterd.
Sub Classing Windows aka in English: One way to mess about and modify the underlying Windows processes within a VBA code to get extra and novel solutions
The following I will repeat a few times as it is a seemingly complicated way of doing stuff, and a bit off a *** “chicken and egg” thing to try and explain. It is very difficult to start anywhere, as you usually need to go back and forth constantly when explaining the underlying concepts. This is reflected in the very complicated interrelated processes and interactions going on in a final solution
I will do my best to explain it in some sort of logical order. In parallel to the last two issues we have
HOOK_ Setting a hook
The Hook bollox word in this situation can be thought of as
_(i) lots of hooks on a lot of different things / events that might happen. Alternatively a cyber robot keeping his beady eyes on lot of different things / events that might happen
PROC _(ii) Some process / procedure / Function or similar that would be done on if any of the hooks are aroused. This (ii) may sometimes be referred to in literature as the hook procedure
Refs:
Microsoft Windows Features : types, states, size, and position : https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
User 32 API VBA Function list :
Dan Appleman “Visual Basic Programmer’s Guide to the Win32 API”
https://www.excelforum.com/excel-pro...rary-list.html
Getting some Messsaga Box API Call’s working:
http://www.eileenslounge.com/viewtopic.php?f=18&t=28885
https://www.excelforum.com/excel-pro...dll-stuff.html
http://www.vbforums.com/showthread.php?329373-MsgBoxEx-Extended-Message-Box[/url]
https://eileenslounge.com/viewtopic....321874#p321874
Microsoft help (argument options): http://www.excelfox.com/forum/showth...0467#post10467




Reply With Quote
Bookmarks