« first day (1481 days earlier)      last day (1699 days later) » 
00:00 - 17:0017:00 - 00:00

5:03 PM
@MathieuGuindon It's not.
That's just their excuse for charging you so much.
 
welp... "form too large"... wow...
"MyTinyExample.thing"
 
so much for "tiny"
 
yeap... two orders of magnitude above what's considered acceptable
 
might have been meant ironically.
@MathieuGuindon simplify this by using a local variable ---> DECLARE @actualfilter int = ISNULL(@excludeInactive, 0);
it then becomes just WHERE @actualFilter = 0 OR SWACTV=@actualFilter or something like that.
 
5:16 PM
Tangentially, I've seen claims from other that using local variables helps w/ query performance. Never proved that for myself, though.
 
@MathieuGuindon I :cough: must have not been active those days. The 2016 message entirely pre-dates my visiting the pond :wink:
GoDaddy undervalues the ducks worth.
 
Mistake #1: Buying anything with GoDaddy.
 
What company is the best to go with?
I guess the better question is: What companies should you avoid?
 
i'd probably go for Amazon or Azure. I've heard some good reviews for few others like 1and1 (?) and dreamhost but meh. Amazon/Azure seems a better bet since you have more flexibility and control without having to pay an arm and a leg for what you need.
 
I just had a realization about hWnd. Do all objects have a hWnd? IE Would the format cells dialog window have one even though it's housed within an Excel application?
Or is it just displayed objects?
 
5:28 PM
have you ever opened up spy++?
 
Only heard about it.
 
Azure is good.
But it can be cost-prohibitive for some website types.
 
fire it up (it should come w/ the Visual Studio, IINM). use the find window and look around. You'll be surprised at how many windows there are.
Wayyyy more than you thought.
@Hosch250 Yes, that's why Amazon is worthwhile for checking out.
 
Yep. I hate Amazon, and I'm not running first-person shooters on Azure, so...
 
would you consider Google?
 
@this I hadn't thought of window count before.
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3956?src=pr&el=h1) Report
> Merging [#3956](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3956?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/b20482c9979f3d0b123900ff3c9dceb154ddda45?src=pr&el=desc) will **increase** coverage by `0.05%`.
> The diff coverage is `53.55%`.


```diff
@@ Coverage Diff @@
## next #3956 +/- ##
=========================
 
ORLY! The status bar is it's own window. #TIL
 
@MathieuGuindon Isn't there a term for interfaces with only one implementation?
 
@IvenBach no. it's important to realize that window from a user's POV is much different from what is meant from a developer's POV.
 
5:33 PM
I feel the need for educating coming on.
 
LOL.
 
A menubar? A window. A MDI container? A window. A pane? A window. A control? A window. It's all windows the way down, baby!
 
Also, have fun with processes and threads.
Windows working with multiple threads is awesome fun.
 
Mind, I overstate the case a bit -- there are controls that are not windows, but there are also controls that are windows. So a button on a form somewhere is likely a window of itself and has its own hWnd.
 
@this Humor me as I take baby steps.
menubar = File, Edit, Tools...
 
5:36 PM
So what you see in the Windows menu is grossly undercount (well it's talking about windows from users' POV, not windows from developer's POV).
 
MDI container = Excel pre 2010 IIRC
 
do you have spy++ open?
 
Yes
 
use Find Windows
there'll be a dialog with a crosshair
 
Dragged it onto a window and got the handle
 
5:37 PM
yes, if you drag it all around
you can see the black highlight
that shows you what is a window
 
:makes @this prime the knowledge pump:
 
Oh my gosh.
 
@this Saw that behavior.
 
@Hosch250 good luck.
 
LOL.
 
5:38 PM
So a window can be contained within another window.
 
yes, hence the name.... Windows.
 
:click: I need to sit down for a minute...
Microsoft windows now... I don't...
@this mind humoring me a bit more with spy++ and what some of the properties correspond to?
 
@IvenBach I can help with some of that.
Window Caption--I think you get that one.
Window Handle--I think that's the pointer to the window, although @this can correct me if I'm wrong.
 
I assumed that.
 
Window Proc--the process that owns the window (unless this says otherwise).
 
5:45 PM
Is that the application process?
 
Usually.
Not always.
Rectangle--the display size of the window. Looks like you have it maximized here.
Restored Rect--the display size when you un-maximize it.
Client Rect--the screen size. Might be the size of the current screen, or might be the combined height. I'm guessing the first.
Instance Handle--that's another pointer to something about the window; what, I'm not sure.
Maybe the window handle is the handle to the window "type" and the instance handle is the pointer to the specific window?
Not sure about the menu handle or user data. Apparently, this window doesn't have any for either.
 
@Hosch250 i'm sure that it's not referring to the process but rather the window procedure... the procedure responsible for processing the messages. That's how you can customize a window's behavior and how it should (or not) draw itself.
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3956?src=pr&el=h1) Report
> Merging [#3956](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3956?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/b20482c9979f3d0b123900ff3c9dceb154ddda45?src=pr&el=desc) will **increase** coverage by `0.05%`.
> The diff coverage is `53.13%`.


```diff
@@ Coverage Diff @@
## next #3956 +/- ##
=========================
[rubberduck-vba/Rubberduck] build for commit e86d462d on unknown branch: 52.6% (target 0%)
 
@this :lightbulb:
 
[rubberduck-vba/Rubberduck] build for commit e86d462d on unknown branch: AppVeyor build succeeded
 
5:50 PM
I guess the Window Bytes says how many bytes the window is using.
 
@Hosch250 corresponds to HINSTANCE. Likewise, Menu Handle => HMENU. Not all windows have an instance or menu handles, but when they do, you could also use them for other Win32 API that interacts with that particular subtype of handles.
@Hosch250 That's the area inside the window itself, excluding the border & titlebar & other chrome.
 
@this Really?
I was confused because in the browser events, that's the screen size.
 
@this When a window draws itself, that means moving the window causes all the pixels to stay in the correct location?
 
Yeah, I can see that now. The numbers are smaller.
 
What about the other tabs as well?
 
5:54 PM
@Hosch250 compare the GetWindowRect with the GetClientRect
@IvenBach for styles, you need to learn about this Win32 API: SetWindowLongPtr
from that document you see there are 2 parameters -- GWL_EXSTYLE and GWL_STYLE
each links to a enumeration that you saw above.
BTW, Hosch, that's also where you change the windows proc, passing in the GWLP_WNDPROC.
 
:+1:
 
and that's pretty low level as you can get (short of getting into Windows' source code). I bet even WPF has to go through the Win32 API (even if through several layers of abstractions) to draw that pretty element onto the screen and react correctly to various events.
 
@this You bet it does.
I've even gotten COM exceptions in WPF before.
 
Now that I've an idea of abstractions using other abstractions I'm ok with it. I don't get lost as easily with the layering.
 
You can reliably get them by trying to update a window from a non-owning thread.
 
6:05 PM
hah. Not going to get away from COM anytime soon. :)
they'd have to rewrite the win32 API grounds up.
 
COM will be alive and well for at least another 100 years I bet.
 
(not going to happen)
 
That is, assuming Windows is around that long.
 
more likely - Windows as a product dies out and is replaced with some another OS.
 
If they cut development of Windows, I'd bet it still is around for 50 years.
 
6:06 PM
@this That'd be like redoing the foundation under the building while it's still being used.
 
yeah, pretty much
 
@Hosch250 why?
 
Does it matter why?
I just want to know!
 
not as far as I know
 
More seriously, I need it for use in a blog post.
 
6:08 PM
it's a fallacy. there's the "production" implementation, then there's the proxy type you're using in your tests when you mock that "implemented once" interface.
if an interface makes testing easier, it doesn't matter how many times it's implemented
 
docs.microsoft.com/en-us/windows/desktop/winmsg/… WS_EX_ACCEPTFILES > The window accepts drag-drop files.
 
it's only implemented once if you never write a test that mocks/stubs it... in which case the problem isn't the interface
 
I'm somewhat understanding this geekFactor++.
 
Exactly.
And that can well be the interface that's a problem.
 
not following
 
6:11 PM
You only need to create an interface definition for a single implementation if you can't test the implementation (i.e. a user interface or a database connection or something).
If it doesn't connect to an external environment, you are writing code wrong if you need an interface for a single implementation.
 
I disagree
an interface helps separating your "unit" from its dependencies
 
Well, you can preview my blog post when I get it done.
 
Mug was using the find window of spy++ how you were working with the AC to get the Quick Info hWnd?
 
@MathieuGuindon You don't need the interface if you only have one implementation used purely internally.
The dependencies of that implementation can still be interfaces.
But the implementation itself doesn't need an interface for it.
 
i.e. you're testing Something and Something needs an IFoo and an IBar, if you deem IFoo/IBar superfluous then you won't be testing Something on its own, but together with its interactions with Foo and Bar
 
6:13 PM
That's not at all what I'm saying.
I'm saying that Something doesn't need an ISomething.
 
until SomethingElse needs an ISomething
 
And whatever takes a Something as a dependency should rely on it being correct.
@MathieuGuindon No, SomethingElse will never need an ISomething.
SomethingElse will need a Something.
 
until you need to test it as a unit, with ISomething being a dependency
you're ignoring that a type that has dependencies can itself be a dependency
in a larger project, say, like, Rubberduck
 
In RD, we are abusing interfaces in at least a few places.
 
few
and partly because Ninject legacy
 
6:16 PM
Let me know when you need IRubberduckParserState.
That has one implementation that is always used directly.
 
I seem to recall Max saying that it's really 4 or 5 objects
 
It was split up since I last worked on it?
 
IOW, it should never been allowed to get as large as it is?
 
That's good news.
 
no no
it's not
i'm just recalling that Max mentioned it should be
 
6:18 PM
Oh, OK.
But that's beside the point.
 
@Hosch250 that's one of the few, yes
 
Now, IParser, I agree with. We need the test implementation.
 
And IDialog, because we A) have multiple dialogs, and B) it allows us to mock UIs.
@MathieuGuindon Wrong IParser :)
 
ah, but you said IParser :)
 
6:20 PM
I mean the non-com-visible parser.
Is it named something different?
Might be.
 
I guess you mean ParseCoordinator.
 
Maybe.
I thought of another topic to write about late last night, but I forgot.
Here's the one I'm currently working on: gist.github.com/Hosch250/21141aaf8fcb0a3811b03eae0667e2c9
 
Windows within the window?
 
GTG, TTYL.
 
I'm not understanding the Next and Previous window relationships.
 
6:25 PM
@IvenBach it's windows all the way down
 
I'm now aware of that. I just don't see the corresponding window for 000105BA in Spy++.
 
could be invisible, or overlapping
 
Unsurprisingly I hadn't thought of that.
 
@IvenBach look at the spy++'s other window showing you a treeview of the window.
previous/next coorresponds to the windows they are found on the treeview.
 
I was using that as the reference to previous and next.
I swear the numbers weren't matching up.
 
6:32 PM
oh?
 
They are now.
 
6:47 PM
When dealing with windows. Is there any rhyme or reason why sometimes they are the topmost parent (blue) or inner most child (red)?
Does it depend on if it's within another window that can be selected?
That's why I thought the windows weren't in order.
I was expecting each window to be a child of excel. Didn't realize they could be a further child.child.child descendent.
 
7:02 PM
[rubberduck-vba/Rubberduck] MDoerner pushed commit 9a1e093c to next: Moved discarding of non-parsable modules to the correct spot in the parsing process.
[rubberduck-vba/Rubberduck] MDoerner pushed commit c689f043 to next: Some formatting and out var in ComProject.
[rubberduck-vba/Rubberduck] MDoerner pushed commit 5c8cc15a to next: Added failing tests for the move closer to usage quickfix for sinlge line if statements. (issue #4117)
[rubberduck-vba/Rubberduck] MDoerner pushed commit aa2a1aff to next: Fixed sameLineStatement by changing it to be a mainBlockStmt instead of a blockStmt.
[rubberduck-vba/Rubberduck] MDoerner pushed commit 94705158 to next: Merge branch 'next' into FixingStuff
Merge pull request #4121 from MDoerner/FixingStuff

Fix for MoveCloserToUsage quickfix problem
[rubberduck-vba/Rubberduck] mansellan pushed commit 57e51f33 to next: Fixes #4111
[rubberduck-vba/Rubberduck] mansellan pushed commit 9238e688 to next: Tests added, hack removed, resolver happy
Merge pull request #4129 from mansellan/4111

Grammar - fix MID statement
[rubberduck-vba/Rubberduck] tommy9 pushed commit 73197485 to next: Initial changes for Now fake
[rubberduck-vba/Rubberduck] tommy9 pushed commit 209fbff2 to next: Let TrySetReturnValue be called from derived classes
[rubberduck-vba/Rubberduck] tommy9 pushed commit 06d273ce to next: Handle return value for override and passthrough in Now fake
[rubberduck-vba/Rubberduck] tommy9 pushed commit 4b426069 to next: Add integration tests for Now fake
[rubberduck-vba/Rubberduck] tommy9 pushed commit 1e18d710 to next: Add Time fake and integration tests
 
[rubberduck-vba/Rubberduck] tommy9 pushed commit 6e4be389 to next: Add Date fake and integration tests
[rubberduck-vba/Rubberduck] tommy9 pushed commit 6ba990d6 to next: Add Date fake and integration tests
[rubberduck-vba/Rubberduck] tommy9 pushed commit c786b4b8 to next: Merge branch 'AddMoreFakes' of github.com/tommy9/Rubberduck into AddMoreFakes
[rubberduck-vba/Rubberduck] tommy9 pushed commit f0b70989 to next: Correct return value to test passthrough
Merge pull request #4131 from tommy9/AddMoreFakes

Add fakes for Now, Time and Date functions
 
7:22 PM
@IvenBach :+1:
 
7:42 PM
@ticker what happened to the SO icon?
 
This answer demonstrates a fabulous ignorance and/or misunderstanding of what VBA is and isn't. — Mathieu Guindon 2 mins ago
 
7:57 PM
@Duga ?
 
huh wtf
@mansellan it was merged as part of #4129
 
Ah ok
Hmm not intentional on my part. I had the wrong base to start with
 
kind of surprised that referencing a PR in another PR would close it when merging. Doesn't seem right.
 
Tried to rebase but it went wrong, so I nuked the branch and rebranched. Maybe GH was being 'helpful' when it noticed a new branch with a name it saw before, and reattached the commits. If so, wtf...
 
do we know if the commits from the closed PR were merged? I would assume no.
 
8:12 PM
@this if I make a PR off my [next], and then make another PR off my [next], when the 2nd one gets merged, the first one will close
that's basically what happened here
 
sorry, that's pretty confusing. Those are different commits, right?
 
But these were PRd from 2 separate feature branches?
 
gotta investigate that, but can't rn
 
the keyword being my [next]
 
8:13 PM
@mansellan but did one sprout from the other?
 
in that case, that's done wrong. All branches has to be based off the RD's [next], never anyone else's [next].
 
also, I find unhealthy how badly this infuriates me:
> The central point of the dichotomy seems to be if "Excel VBA" is a separate language or not.

It shares the syntax and basic data types with VBA of other Office products. But the similarity ends here. The object model i.e. the project organization and the entire "standard library" is completely different. And since VBA is not a general-purpose language, the app-specific machinery in VBA code absolutely dominates any similarities in syntax and any common types.

So, it seems that there's actually no such language as "VBA" -- instead, there are several tangentially similar languages: "Excel
 
No, thats why i nuked it so i could branch from my next not the other feature branch as i had it to start with.
 
from someone with 0 related tag badges at that
 
@MathieuGuindon the horror is that he know what an "object model" is, then goes to call it "language".
 
8:14 PM
yes
that
kills
me
> And since VBA is not a general-purpose language
 
@MathieuGuindon uh, wow. Someone needs to explain to him the many many levels of wrong that is.
 
I mean, by that reasoning, we should clamor for chrome-javascript, firefox-javascript, edge-javascript, and jsnode-javascript because javascript can't run standalone.
 
BASIC literally MEANS "all-purpose", you twit
gotta take a breather, my pressure's going up again :)
 
He's kinda right that there's no such language as VBA though, just a hobbled variant of VB6* :-)
*notwithstanding the 64 bitness of VBA7 i guess... ;-)
 
yeah blame MS for poor branding. the language is Visual Basic, but they let VB.NET hijack it
 
8:17 PM
and in last few years, they've dropped the .NET altogether
 
which makes it very "fun" to search for docs
 
^
 
not sure if the answer frustrate me more than the fact that it's received +9/-9
huh, just got [badge:mortarboard] on MSO
 
@MathieuGuindon i'm curious - do you know if any ISVs have VBA7?
 
what's an ISV?
 
8:31 PM
independent software vendor. In that context... Corel, Sage, AutoCAD....
 
no idea, depends if an updated SDK was ever published?
 
AIUI, no, there never was a VBA7 SDK
 
Sage uses an old 6.x version for sure
 
MSFT did announce at one point that they'd discontinue VBA licensing
and that was prior to the VBA 7
 
So you got your answer then =)
 
8:36 PM
Probably,yeah. I was wondering if they circumvented that one way or other.
Since in case of AutoCAD, 64-bit is a big deal. IDK about others, though.
hmmm.
look at this:
apparently they have 64-bit VBA....
 
> The Visual Basic for Applications (VBA) engine is no longer provided with your AutoCAD OEM installation media
 
(and 2019?!? C'mon. It ain't here for another 6 months....)
 
isn't Excel 2019 out on insider already?
 
Sure, it's not part of OEM but they have 64-bit VBA....
preview is sorta of ok. A official release that's released 1/2 year earlier?
 
They prolly bribed MS for an updated/custom SDK
 
8:40 PM
That's what I'm thinking.
cos I ain't seeing it anywhere else.
 
9:23 PM
@MathieuGuindon dot dot dot
 
9:37 PM
@IvenBach the guy has a grand total of 8 VBA answers, at least 2 with the string "M$" in them.
 
M$... oh dear is that still a thing? #sad
 
I don't know any M$. Is that supposed to mean something?
 
Uh, can't tell if you're kidding or not! It's one of the internet's oldest and lamest memes.
By replacing the S in MS with a dollar sign, one infers that Microsoft are evil and motivated by profits above ethics. Wasn't funny in 1995, still not funny in 2018.
 
OH... now I get it. I thought it was a broken cell reference...
 
And, uh, sorry if you were kidding! My sarcasm radar is a little rusty today :-)
 
9:44 PM
I honestly hadn't thought of it as referring to Microsoft being in it for the money.
 
9:54 PM
TTGH
 
> Fixes #3720. Also seems to close #3721 Using the ReturnsWhen method creates a ReturnValueInfo record with a Parameter set to a specific Argument. When calling TrackUsage with the actual arguments passed into the fake, it first calls TrySetReturnValue matching the specific parameter/argument combination. If that doesn't get a match, it then calls the other TrySetReturnValue method just to pick up any ReturnValueInfo record with the right invocation. However, that will pick up...
ReturnValueInfo records created with a ReturnsWhen call, even though the parameter is not matching. To get around this, the second TrySetReturnValue method checks the ReturnValueInfo records for a Argument == string.Empty because that is how the Returns method creates the ReturnValueInfo record. I'm unsure of using string.Empty. Would it be better to set the Parameter and Argument fields to null for a Returns method call? The probably only false positive would be if someone used empty strings...
for calling ReturnsWhen instead of just using Returns. They shouldn't do that of course but it could happen and null seems to get around this. Integration tests added using the failing examples given in issues 3720 and 3721. They both now pass (having failed before this change). I don't quite follow exactly why but @Vogel612 did suggest they had the same root cause.
 
10:11 PM
[rubberduck-vba/Rubberduck] build for commit 368c724e on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4132?src=pr&el=h1) Report
> Merging [#4132](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4132?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/5b99df7374d18861cfe1d98540462afb13d9ea7a?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `0%`.


```diff
@@ Coverage Diff @@
## next #4132 +/- ##
===========================
[rubberduck-vba/Rubberduck] build for commit 368c724e on unknown branch: 52.49% (target 0%)
 
10:33 PM
I've come to Window Messages and part of the docs say
> To pass a message to a window, the operating system calls the window procedure registered for that window. (And now you know what the window procedure is for.)
This is the Window Proc from the property inspector in spy++. Is this what consumes the message that's sent to it?
 
Within the window messages article it has a link to the TranslateMessage function. Are the keys a, b, ... that we type on considered the virtual keys?
 
That's the callback with the lparam and wparam args
@IvenBach depends what msg you're picking up
 
I've no clue what can be picked up. I'm still trying to understand how it works.
 
Look at actual code
Like the CodePaneSubclass
 
10:43 PM
I'm there.
I've seen wparam and lparam before. What's the semantic difference with W and L?
 
Can't recall. They're just thing1 and thing2 to me
 
I see that it has KeyPressEventArgs. I'm just not groking any concept from seeing it.
 
It spawns a KeyPressEventArgs... From the information in the WM params
So the WM callback receives all messages, and we process or ignore them
 
I'm thickheaded and trying to internalize this.
In the ctor it has the arguments that are passed to it.
Specifically the IntPtr msg is what you're referring to?
That's used in the switch statement to assign args = new KeyPressEventArgs(hWnd, wParam, lParam, (char)wParam); or args = new KeyPressEventArgs(hWnd, wParam, lParam); for the CHAR or KEYDOWN message, respectively.
 
11:05 PM
IIRC from reading Raymond Chen's book, the whole w and l stuff is a legacy of the times when memory was not abundant. Basically, when the switch to 32-bit was made there ware a lot of things only needing 16-bit numbers (words). So they piggy-backed a low word together with another word when passing messages.
 
So they'd use 2 words thing1 and thing2 to make up for the constraint of not having a dwThing?
 
They send two words as one dword. You have to split that to get the inidvidual parts of the message.
This way, your message does need fewer dwords.
On a 32-bit system, nothing smaller than a dword ever gets loaded into a register.
 
That
 
I stumble over why things are done the way they are.
Once I understand why they are that way I can use with less issue.
 
11:13 PM
TTGTB
 
11:38 PM
@MathieuGuindon just check next, the commits on that PR aren't merged. I'll reopen the PR. Are you certain you clicked Merge and not Close?
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4111?src=pr&el=h1) Report
> Merging [#4111](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4111?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/3489486aee1e5454ab71c938f7fb54fc29bba956?src=pr&el=desc) will **decrease** coverage by `<.01%`.
> The diff coverage is `11.54%`.


```diff
@@ Coverage Diff @@
## next #4111 +/- ##
=======================
 
@mansellan I am
 
odd - it also says it was closed in #4129, which would fit... most odd.
the only thing I can think is that recreating a branch under a previously used name confused GH
 
Did you remove the branch from your fork before recreating it?
 
yes
 
11:42 PM
Hm
 
then copied back the files onto the new branch. I had a stash but I thought I was careful to go via notepad so as not to drag stashed commits.
Maybe i messed up somewhere along the way
hmm actually, i may as well sync that branch to next now
 
[rubberduck-vba/Rubberduck] build for commit 14b31990 on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4111?src=pr&el=h1) Report
> Merging [#4111](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4111?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/3489486aee1e5454ab71c938f7fb54fc29bba956?src=pr&el=desc) will **decrease** coverage by `0.14%`.
> The diff coverage is `4.94%`.


```diff
@@ Coverage Diff @@
## next #4111 +/- ##
========================
[rubberduck-vba/Rubberduck] build for commit 14b31990 on unknown branch: 52.49% (target 0%)
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4111?src=pr&el=h1) Report
> Merging [#4111](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4111?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/5b99df7374d18861cfe1d98540462afb13d9ea7a?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `n/a`.


```diff
@@ Coverage Diff @@
## next #4111 +/- ##
==========================
 
oh... mystery solved hangs head in shame...
when I recreated the branch, I used the number of the PR, not the number of the issue...
so I've been pushing to the original branch
gah!
sorry for the confusion
 
Going back to spy++. Is that used only to determine the windows that are open? Or can it be used to find elements or controls within a window as well?
 
AFAIK it's useful for spying on the messages that a given hwnd gets to handle
 
@Duga That's why the other PR got closed - I put the wrong closes # in the comment...
 
If a control has a hwnd, then it would be getting messages that can be spied on
@mansellan wasn't me!
 
00:00 - 17:0017:00 - 00:00

« first day (1481 days earlier)      last day (1699 days later) »