[Home] [Recent] [Site Map] [SharePoint] [XBOX]
Text Services Framework assumes that your text service follows a particular processing path. If your text service doesn"t conform to these assumptions, then your programming job will be more complicated. (Not impossible, just more complex.) The text service samples on MSDN also follow these assumptions, but they aren"t explicitly stated anywhere (that I know of). I"ve mentioned some of these assumptions in previous articles, but I thought I"d bring them together in one post.
Text Services makes the following assumptions:
This last assumption is the big one. It can cause problems for text services that aren"t keyboard-related (speech, for example).
The problem is that TSF handles the (admittedly, very difficult) job of interacting with non-TSF aware applications entirely through compositions. Once you close the composition, TSF assumes that you"re completely finished with that piece of input.
Unfortunately, it"s hard to tell beforehand when you"re done with a piece of dictation. SAPI will tell you when it"s recognized a piece of text, obviously, but, ideally, once you"ve dictated some text, you would like to be able to correct it. That requires that you leave the composition open.
In an application that isn"t TSF-aware, though, you need to close that composition as soon as you can (it"s bad form to have large open compositions; most IMEs have compositions that are a few characters in size).
So there"s a tradeoff here. Dictation in Windows Vista currently closes the composition as soon as the text is recognized. (In fact, it doesn"t use compositions at all.) That works fine for TSF-aware applications, but causes problems with TSF-unaware applications. In particular, once you"ve dictated some text, you can"t correct it by voice. That"s why Windows Speech recognition makes you confirm every dictation into a TSF-unaware application.
Commenter Phil Quirk wants to know what the rules are for determining which windows appear in the Alt+Tab list. It"s actually pretty simple although hardly anything you"d be able to guess on your own. Note: The details of this algorithm are an implementation detail. It can change at any time, so don"t rely on it. In fact, it already changed with Flip and Flip3D; I"m just talking about the Classic Alt+Tab window here.
For each visible window, walk up its owner chain until you find the root owner. Then walk back down the visible last active popup chain until you find a visible window. If you"re back to where you"re started, then put the window in the Alt+Tab list. In pseudo-code:
BOOL IsAltTabWindow(HWND hwnd)
{
// Start at the root owner
HWND hwndWalk = GetAncestor(hwnd, GA_ROOTOWNER);
// See if we are the last active visible popup
HWND hwndTry;
while ((hwndTry = GetLastActivePopup(hwndWalk)) != hwndTry) {
if (IsWindowVisible(hwndTry)) break;
hwndWalk = hwndTry;
}
return hwndWalk == hwnd;
}
The purpose of this algorithm is to assign the most meaningful representative winow from each cluster of windows related by ownership. (Notice that the algorithm doesn"t care whether the owned window is modal or non-modal.)
At least that"s the simple rule if you"re not playing crazy window
style games.
The WS_EX_TOOLWINDOW and WS_EX_APPWINDOW
extended styles were created so people can play games and put their
window in the Alt+Tab list or take it out even if the simple rule
would normally have decided otherwise.
This is one of those
"Okay, if you think you"re smarter than Windows, here"s your chance
to prove it" options.
Personally, I would avoid them since it makes your window behave
differently from the rest of the windows in the system.
A window with the
WS_EX_TOOLWINDOW extended style is treated as if it
weren"t visible, even if it is.
A window with the
WS_EX_APPWINDOW extended style is treated as if it
has no owner, even if it does.
Once you start adding these extended styles, you enter the world of "I"m trying to work around the rules" and the result is typically even worse confusion than what you had without them.
I"m not sure what the original commenter is getting at. The window hierarchy described in the suggestion (which doesn"t make it so much a suggestion as it is a request for me to debug their problem) says that window C is modal on both windows A and B, which doesn"t make sense to me, since a window has only one owner.
The algorithm for choosing the Alt+Tab representative from each cluster of windows may not be the best, but it"s what we have. I wouldn"t be surprised if the details are tweaked from time to time. No, wait, let me rephrase that. I know that the details are tweaked from time to time. The spirit of the operation is preserved (to show the windows the user can switch to, using the most "natural" candidate for each cluster of windows), but the specific details may be fined-tuned as the concept of "naturalness" is refined.
Well, Today, we officially begin the fun stuff. ;-) Today, in my WPF Soup To Nuts webcast series, we"re talking about Styles, Templates and Themes. Now, as you know, WPF is very powerful. Last week, we learned how powerful it can be connecting to data. Well, this week, we"re going to see how we reuse some of our previously gained knowledge with Resources and Databinding to build reusable visual styles. Styles give us a powerful way to develop our own user experience, going way beyond the traditional battleship grey dialog boxes and buttons from the past. In fact, they"re so powerful, that we can easily create buttons (or anything for that matter) that are rotated, nonstandard shaped, or what ever else your imagination can think of... and then reuse that style for all the controls of that type.
We will also look at Control Templates... or blueprints for controls. With a template, I can define my control visually or even functionally and reuse that template globally throughout my form for all controls of the same type. When I want to change one aspect of the control, I do it in one central location and all the controls change on the canvas.
Lastly, we"ll talk about Themes. Themes are Windows way of building a consistent User Experience. WPF has the ability to examine the theme settings for the OS and with that ability, we can customize our own user experience to match the settings of the host OS.
Building differientated user experiences is what WPF is all about and this week we will start to look at the basics of them.
You can sign up right here. And as always, my demo code is attached.
Bill
I wanted to make sure you were aware that two moreupdates were recently released that improve the compatibility, reliability, andstability of Windows Vista.
Cumulative update rollup for USB core components inWindows Vista
http://support.microsoft.com/kb/941600
An update is available that improves the compatibility,reliability, and stability of Windows Vista
http://support.microsoft.com/kb/941649
Kevin
This launched last week - an important initiative to help our partners ensure up to date skills in your businesses at affordable costs.
https://partner.microsoft.com/global/trainingevents/training/40029197
The new PS+ Offer Highlights
· Unlimited vouchers for e-Learning and exams
· Exam Coach – Real-time, online and live access to Microsoft experts 24/7
· Discounts on e-Learning titles and Microsoft Press publications
All the info is available via the above link but here are some direct links for you:
http://www.msnbc.msn.com/id/21182779/
Reid, a customer, sent me email about a problem with using the Visual Studio 2005 Team System SP1 VPC image from the MSDN subscription site. I forwarded the email and found out that folks are looking into it. Until it gets fixed, here"s the process to successfully extract the image.
The files listed for download for the SP1 image are:
en_visual_studio_2005_team_system_with_service_pack_1_rtm_vpc_1of3.exe
en_visual_studio_2005_team_system_with_service_pack_1_rtm_vpc_2of3.rar
en_visual_studio_2005_team_system_with_service_pack_1_rtm_vpc_3of3.rar
However, to get the .exe to extract the necessary files you need to do some file renaming to get the files to extract correctly. The changes are all in the "x of y" portions of the file names.
Rename
en_visual_studio_2005_team_system_with_service_pack_1_rtm_vpc_1of3.exe
to
en_visual_studio_2005_team_system_with_service_pack_1_rtm_vpc_1of1.exe
Rename
en_visual_studio_2005_team_system_with_service_pack_1_rtm_vpc_2of3.rar
to
en_visual_studio_2005_team_system_with_service_pack_1_rtm_vpc_1of2.rar
Rename
en_visual_studio_2005_team_system_with_service_pack_1_rtm_vpc_3of3.rar
to
en_visual_studio_2005_team_system_with_service_pack_1_rtm_vpc_1of3.rar
Hopefully, it won"t be long until the problem is fixed, and this becomes unnecessary. Thanks for sharing this, Reid.
This is a nice (short) article that shows you how to integrate search; in this case: Live and SharePoint, but you could use similar code for "Other" very popular search engines, but I work for Microsoft so we won"t discuss them. :) It"s got some sample code that you can download and customize for your use and a few useful screen shots.
Check it out here: Article Link
~ Robert Shelton
My previous favourite geek T-shirt was the "Will Work for Bandwidth" T-Shirt..... it"s now been superceded by this fabulous Wi-Fi Detector Shirt!

Why bother searching for Wi-Fi hotspots when your T-Shirt can show you the presence of any 802.11b or 802.11g hotspots...
I"m sure v2 will even show whether the access points are open ;)
Voici comment suivre les aventures de FrogZ:
![]()
Me joindre via Facebook ou joindre le groupe FrogZ.
![]()
Le micro-blogging via mon mobile avec Twitter.
![]()
Partagons les photos de nos soirées et autres sur FlickR.
![]()
Mon profil Ziki.
Site List:
>>Xbox Live_s Major Nelson
>>Xbox 360 & SharePoint 2007 Weblog
>>Carsten Keutmann_s Blog
>>Mohamed Zaki_s Blog [Sharepoint MVP]
>>The Mit_s Blog
>>Mart Muller_s Sharepoint Weblog
>>Microsoft SharePoint Products and Technologies Team Blog
>>SharePoint Solutions Blog
>>4GuysFromRolla.com Headlines
>>ASP.NET Blogs
>>SharePoint Blogs
>>SharePoint Blogs
>>Joel on Software
>>ADO Guy_s Rants and Raves
>>Microsoft Live Labs
>>GadgetNews
>>Windows Vista Team Blog
>>VoIP & Gadgets Blog
>>schrankmonster blog
>>Via Virtual Earth Blog
>>Feed
>>MSDN Blogs
>>Mashable!
Links:
Jack's Readings
Month Archives:
Oct 2007
Sep 2007
Top Tags:
social software social networking .NET mashable Sharepoint ASP.NET Web 2.0 Web2.0 Startups Community News Search Marketplace General Software Development AJAX Windows Vista Visual Studio Microsoft myspace Silverlight People Powered! YouTube Vista MOSS Featured News C# Events MOSS 2007 Google WPF Office 2007 Web Community Security General Personal Xbox 360 facebook Tools development SharePoint 2007 Fun Atlas Architecture ASP.NET AJAX myspace codes TheLongTail IIS SQL Server Developers Revenue Sharing Video Pictures WCF Mobile 2.0 Announcements Orcas MIX07 Arcade Team System JavaScript News
@2007 All rights Reserved |