Again, the slowness of whole process has embarrassed me. It took way too long, but I've finally figured out how to get the custom menu items (Qblog, Qnews, Qyou) on the main navigation menu to become highlighted most of the time when the blog is selected.
It's all extraordinarily simple, even in the method I used. I suspect that it could be made simpler still, but I haven't yet figured out how to do that.
I'll trace back. It was obvious that I needed to do something with a class called CSContext. In his great CS Developer blog, Keyvan Nayyeri gives a rundown of the class here.
My first attempt was to use CSContext.Current.ApplicationKey (or something similar) in either theme.master or blogs.master. Unfortunately, CSContext is too often null. I haven't so far figured out just when that happens, but it caused problems on either master page.
Intellisense (and something in an unrelated Nayyeri post) prompted me to look at the sub-class CurrentWeblog. That allowed me to get the appkey for any blog post page:
appKey = CurrentWeblog.ApplicationKey;
A related subclass lets me get the key for the aggregate page shown for each blog (run by /Themes/Blogs/[style]/postlist.aspx and not by the other postlist). Thus:
appKey = CurrentSection.ApplicationKey;
OK, then. Now I had the appKey for any chosen blog without throwing a null exception (at least not yet) picked up in the Page_Load method.
On each of the app-specific pages -- post.aspx and postlist.aspx -- I added this:
<asp:Content ContentPlaceHolderID="HeaderRegion" runat="server">
<CSControl:SelectedNavigation ID="MenuHighlighter" runat="server" />
</asp:Content>
Back up in Page_Load(), I added this:
MenuHighlighter.Selected = appKey;
(Using the ID of the SelectedNavigation control.)
All of that highlights the menu as I expect it to.
Now the next step is to use the same appKey value to display an image for the title of each blog, which was one of the main things I was trying to do with all that sillyness.
(And, also, to make that boring navigation menu more interesting.)