Igor Delovski Board Forum Index Igor Delovski Board
My Own Personal Slashdot!
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Tooltips & Other Common Controls

 
Post new topic   Reply to topic    Igor Delovski Board Forum Index -> Win32
Win32  
Author Message
Ike
Kapetan


Joined: 17 Jun 2006
Posts: 3026
Location: Europe

PostPosted: Tue Jun 27, 2006 1:52 pm    Post subject: Tooltips & Other Common Controls Reply with quote

Raymond Chen: Coding in-place tooltips

"These are tooltips that appear when the user hovers the mouse over a
string that cannot be displayed in its entirety. The tooltip overlays the
partially-displayed text and provides the remainder of the text that had
been truncated. The keys to this technique are the TTN_SHOW notification
(which lets you adjust the positioning of a tooltip before it is shown) and
the TTM_ADJUSTRECT message which tells you precisely where you need
the tooltip to be."
Back to top
View user's profile Send private message
XNote
Kapetan


Joined: 16 Jun 2006
Posts: 532

PostPosted: Wed Jun 28, 2006 11:19 pm    Post subject: More Reply with quote

More about Tooltips from Raymond Chen:

- Using custom-draw in tooltips to adjust the font
- Multiplexing multiple tools into one in a tooltip
Back to top
View user's profile Send private message
Night Owl
Guest





PostPosted: Thu Jun 29, 2006 7:44 pm    Post subject: Reply with quote

Look at this: Generating tooltip text dynamically

"Let's make it display something a bit more interesting so it's more
obvious that what we're doing is actually working."
Back to top
James
Guest





PostPosted: Wed Jul 05, 2006 6:55 pm    Post subject: Control Spy 2.0 Reply with quote

"Control Spy is a tool to help developers understand common controls,
the application of styles to them, and their response to messages and
notifications.

With Control Spy, you can see instantly how different styles affect the
behavior and appearance of each control, and also how you can change the
state of each control by sending messages.

Two versions of Control Spy are available, one for Comctl32.dll version 5.x
and one for Comctl32.dll version 6.0 and later."


On MSDN: Control Spy 2.0
Back to top
delovski



Joined: 14 Jun 2006
Posts: 3522
Location: Zagreb

PostPosted: Sun Jul 16, 2006 11:56 am    Post subject: Reply with quote

Groups: tool tips disappear and will not return

"The single tool tip I've created seems to behave as described in the
Platform SDK documentation, except that when its autopop timer goes off (and
the tip thus disappears), and I move the mouse outside the tool and then
back inside, the tool tip will not reappear. Is this standard behavior?"
Back to top
View user's profile Send private message Visit poster's website
delovski



Joined: 14 Jun 2006
Posts: 3522
Location: Zagreb

PostPosted: Thu Oct 05, 2006 10:47 am    Post subject: Reply with quote

CodeGuru: Tab control - Lparam

"One of the approaches would be to assign pointer of a dialog to tab’s
data structure, retrieve it when tab is selected. And yes you can use
LPARAM member to store it."


CBoard: Rebar Band problem

According to the documentation, the WPARAM argument for the RB_SETBANDINFO
message specifies the zero-based index of the band to receive the new settings.

Code:
   rbc.hwndRB = CreateWindowEx(WS_EX_TOOLWINDOW, REBARCLASSNAME, NULL,
      WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN 
      | RBS_BANDBORDERS | CCS_NODIVIDER  | RBS_VARHEIGHT,
      0, 0, 0, 0, hwnd, NULL, hInst, NULL);;
Back to top
View user's profile Send private message Visit poster's website
XNote
Kapetan


Joined: 16 Jun 2006
Posts: 532

PostPosted: Wed Oct 11, 2006 9:16 pm    Post subject: Reply with quote

CodeGuru: Animate an Icon on the Taskbar when the Application Is Minimized

"This article will show the technique to animate an application's icon on
the Taskbar when the application is minimized. The main usage of this
implementation is to inform the user about some background tasks that
are still active in the application when it is minimized."


Code:
   if (hIconNew != hIconCurr)  {
      DestroyIcon (hIconCurr);
      SetClassLong (m_hWnd, GCL_HICON, (long) hIconNew);
      RedrawWindow (NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE);
   }


Or SetWindowLong() maybe?
Back to top
View user's profile Send private message
delovski



Joined: 14 Jun 2006
Posts: 3522
Location: Zagreb

PostPosted: Wed Dec 13, 2006 7:10 pm    Post subject: Reply with quote

RC: Displaying infotips for folded and unfolded listview items

"When displaying infotips for listview items, you have to deal with both
the folded and unfolded case. "Folded" is the term used to describe a
listview item in large icon mode whose text has been truncated due to
length. When the user selects the item, the full text is revealed, a process
known as "unfolding"."


And: Computing listview infotips in the background

"When the listview control asks you for an infotip, it sends you then
LVN_GETINFOTIP notification, and when you return, the result is displayed
as the infotip"
Back to top
View user's profile Send private message Visit poster's website
Ike
Kapetan


Joined: 17 Jun 2006
Posts: 3026
Location: Europe

PostPosted: Tue Jan 16, 2007 6:32 pm    Post subject: Reply with quote

RC: EnumChildWindows already enumerates recursively

"The reason is that the EnumChildWindows function already does the recursion.
If a child window has created child windows of its own, EnumChildWindows
enumerates those windows as well. If you add your own recursion, then you
end up counting grandchildren twice, great-grandchildren four times, and so
on. The recursion is already done by EnumChildWindows; just use it."
Back to top
View user's profile Send private message
delovski



Joined: 14 Jun 2006
Posts: 3522
Location: Zagreb

PostPosted: Tue Jan 30, 2007 9:57 am    Post subject: Reply with quote

Raymond: If vertical strips are better, why do toolbars use horizontal strips?

"All this is a long way of saying that source code compatibility between
16-bit code and 32-bit code was very important, not only within the Windows 95
shell team, but throughout the Windows 95 product, so that teams could
port their 16-bit components to 32-bit in a gradual and evolutionary manner."
Back to top
View user's profile Send private message Visit poster's website
Ike
Kapetan


Joined: 17 Jun 2006
Posts: 3026
Location: Europe

PostPosted: Wed Jan 31, 2007 5:08 pm    Post subject: Reply with quote

CodeGuru: Tab Bar Control

"It looks like one question is asked quite frequently (or is it my perception)
on the VC++ forum: How do you create more than one view in a frame
and have all views wired to the same document object, with the ability to
switch views at will, making one as visible and active?"
Back to top
View user's profile Send private message
delovski



Joined: 14 Jun 2006
Posts: 3522
Location: Zagreb

PostPosted: Thu Feb 08, 2007 6:41 pm    Post subject: Reply with quote

RC: Why does my property sheet blink and the immediately disappear?

"This also explains why you might see a property sheet page that disappears
once you click on its tab. The same thing happened: The property sheet
manager tried to create the dialog, but the CreateDialog failed, so it deleted
that page and tried the next page."
Back to top
View user's profile Send private message Visit poster's website
delovski



Joined: 14 Jun 2006
Posts: 3522
Location: Zagreb

PostPosted: Fri Feb 23, 2007 9:20 pm    Post subject: Reply with quote

msdn: GUI Control to Major Tom, by John Robbins

Microsoft UI Automation, UISpy, The UIWindow Class: "My goal for this
column is to show you how to get started with GUI automation using the
UI Automation tools and APIs. As with most Bugslayer columns, there's a
large set of code that I provide to make your GUI testing far easier than
using the API directly."
Back to top
View user's profile Send private message Visit poster's website
Ike
Kapetan


Joined: 17 Jun 2006
Posts: 3026
Location: Europe

PostPosted: Wed Mar 28, 2007 5:58 pm    Post subject: Reply with quote

RC: Why are there both TBSTYLE_EX_VERTICAL and CCS_VERT?

"Whoever created the TBSTYLE_EX_VERTICAL extended style didn't realize
that there was already a perfectly good way of specifying a vertical toolbar
(namely, CCS_VERT)."
Back to top
View user's profile Send private message
Ike
Kapetan


Joined: 17 Jun 2006
Posts: 3026
Location: Europe

PostPosted: Thu Apr 05, 2007 8:11 pm    Post subject: Reply with quote

Why can't I display a tooltip for a disabled window?

"When a window is disabled, it does not receive keyboard or mouse input.
The documentation for EnableWindow says so in so many words, right in
the first sentence."
Back to top
View user's profile Send private message
delovski



Joined: 14 Jun 2006
Posts: 3522
Location: Zagreb

PostPosted: Thu Apr 12, 2007 11:31 pm    Post subject: Reply with quote

RC: What is the default version of the shell common controls?

"If a program wanted to use version 6 of the common controls, it had to say
so explicitly in a manifest. (What we on the shell team informally call a "v6
manifest".) That way, only programs that asked for the new behavior got it."
Back to top
View user's profile Send private message Visit poster's website
delovski



Joined: 14 Jun 2006
Posts: 3522
Location: Zagreb

PostPosted: Wed May 30, 2007 3:52 pm    Post subject: Reply with quote

Rebar and ToolBars

"I finish the project with the ToolBar, I've only that insert some Windows
Styles to the ToolBars..."
, but lots of code...
Back to top
View user's profile Send private message Visit poster's website
Ike
Kapetan


Joined: 17 Jun 2006
Posts: 3026
Location: Europe

PostPosted: Fri Jun 01, 2007 8:07 pm    Post subject: Reply with quote

RC: Visual C++ 2005 will generate manifests for you

"New in Visual C++ 2005 is the ability to specify a manifest dependency
via a #pragma directive. This greatly simplifies using version 6 of the shell
common controls."
Back to top
View user's profile Send private message
delovski



Joined: 14 Jun 2006
Posts: 3522
Location: Zagreb

PostPosted: Sat Jul 14, 2007 2:16 pm    Post subject: Reply with quote

CodeGuru: Tree List Control

"The accompanying code is an implementation of a tree view, combined with
a list view, for the Windows API. The view is compatible to the tree control
of the common controls. It allows the user to set colors, text, and icons for
each item separately. An MFC class for the view is also implemented."
Back to top
View user's profile Send private message Visit poster's website
Ike
Kapetan


Joined: 17 Jun 2006
Posts: 3026
Location: Europe

PostPosted: Tue Jan 29, 2008 4:27 pm    Post subject: Reply with quote

RC: The history of the Windows XP common controls

"These controls were originally custom controls written by the shell team
for use in Explorer, but since they seemed to be generally useful, time was
budged to do the extra work to make the controls more suitable for general
use, testing the controls in combinations and scenarios that Explorer itself
didn't use, and putting together formal documentation."
Back to top
View user's profile Send private message
XNote
Kapetan


Joined: 16 Jun 2006
Posts: 532

PostPosted: Fri Nov 07, 2008 5:02 pm    Post subject: Reply with quote

cboard - XP boot style progress bar

"I know how to make a progress bar just fine. But how do you make the kind
that have a few tickers in the middle scrolling over and over across the screen?"
Back to top
View user's profile Send private message
Ike
Kapetan


Joined: 17 Jun 2006
Posts: 3026
Location: Europe

PostPosted: Tue Nov 28, 2023 4:54 pm    Post subject: Reply with quote

so - SetWindowTextW in an ANSI project

"SetWindowText()/SetWindowTextA() and SetWindowTextW() are all really
WM_SETTEXT which is one of the few messages subject to code-page
translation when you create a multibyte/Ansi window. This means there is no
W and A versions of the message. All you need to do is intercept the
WM_SETTEXT message in your window and pass the arguments to
DefWindowProcW() instead of the usual DefWindowProcA/DefWindowProc()."
Back to top
View user's profile Send private message
Ike
Kapetan


Joined: 17 Jun 2006
Posts: 3026
Location: Europe

PostPosted: Thu Nov 30, 2023 5:40 pm    Post subject: Reply with quote

I learned SetWindowTextW() ends up as a WM_SETTEXT call to the windows
procedure and since all of my edit fields have my own custom procedure that
handles a few different things but then for the rest of the messages ends up
with a call to CallWindowProc() on the original procedure and since it was an
ansi project that is CallWindowProcA() and that is the main reason why
SetWindowTextW() failed in the first place.

SetWindowTextW() would have worked without me sublassing the edit box.
So now, I explicitly call CallWindowProcW() for SETTEXT & GETTEXT outside
of that custom procedure and everything works as it should.

This is all very interesting as it occured to me that when I used
SetWindowTextW() and it displayed e instead of -grave it should have
crashed really or displayed some random characters. But no, edit control's
proc detected what is in the buffer (or lParam for WM_SETTEXT message)
and converted it to my local encoding because I was handling that message
with CallWindowProcA().

But how did edit control know what is in the lParam? SetWindowTextW()
should have sent Unicode string, not plain char *. Or maybe not?

What is actually more interesting is that I intercepted that lParam after I
set the breakpoint on the SetWindowTextW() call and then in my custom
edit proc, on the last line where I use CallWindowProcA() and lParam does
not seem to be Unicode string but it's just a plain C string. How
SetWindowTextW() knows I will call CallWindowProcA()? Because I did
before?

If only Raymond Chen wrote something about it. I found these somewhat
related posts but nothing about WM_SETTEXT and how it's handling lParam.

https://devblogs.microsoft.com/oldnewthing/20211210-00/?p=106021

https://devblogs.microsoft.com/oldnewthing/20211210-00/?p=106021

In the end, in my case with sublassed edit proc, the only way to make it
work with unicode is not to use SetWindowTextW() and to explicitly call
edit's proc like this:

Code:
CallWindowProcW (origEditProc, ctlHwnd, WM_SETTEXT, 0L, (long)wcharBuffPtr);

.. instead of:

Code:
SetWindowTextW (ctlHwnd, wcharBuffPtr);
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Igor Delovski Board Forum Index -> Win32 All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Delovski.hr
Powered by php-B.B. © 2001, 2005 php-B.B. Group