Hi Mr Dunn,
I saw your article "WTL for MFC Programmers, Part VI - Hosting ActiveX Controls" in code project.
I want to run an internet explorer on my application, which is C++ and on Microsoft Visual Studio (on PocketPc or Windows Mobile Platform).
I use a class CWebBrowser to work with this Control.
I use RegEdit for Mobile and I can't find the GUID of that control on my mobile, therefore the control does not create.
When running Aero, the tabs in FF 2 are bloody awful - it's too hard to tell where the tab boundaries are because they're all gray. So I was poking around extensions and came upon Colorful Tabs[^], which makes each tab a different color. Right now I have 4 tabs and they are gray, green, pink, and red. Nice!
But then I had the problem of not being able to tell which tab was the current one. Sure, the text is bold but that isn't easy enough to spot at a glance. So I added this to my userChrome.css:
As one of the few, the proud, the VC6 users, I figured I'd post my experience installing it on Vista for posterity. Welcome to all of you viewing this from the future (or 2007, as I am calling it currently).
I started with:
Vista RTM Ultimate
Visual Studio 6 Enterprise
October 2001 MSDN
February 2003 Platform SDK (all CAB files unzipped and burned to CD)
Before we start: Vista will show some warnings about programs having compatibility problems with Vista. Since I use VC6 for work, I threw caution to the wind and ignored the warnings. I've had no troubles yet.
Run the VS6 installer. The first thing it will do is update the Java VM. Once that's done, let it reboot the machine.
Once you've rebooted and relogged, the install wizard will come up automatically. Close the wizard right away. The wizard is not running elevated, so it won't be able to do its job.
Rerun the wizard and install the VS components you want.
When you get to the part where it prompts you to install MSDN, I said no because I'll install it later. Continue on with the wizard (I don't install any of the additional stuff) and finish the process.
Put in your Oct 2001 MSDN disc and run the installer on the disc. I had no hiccups at all installing this.
Run VS6 once and close it right away. I got in the habit of doing this because years and years ago, the Platform SDK wouldn't install if you had not run VS once yet.
Install VS6 SP6. Again, I had no troubles here. Run VS once and close it just to be sure.
Install the Platform SDK. Because the installer uses an ActiveX control, you'll be stuck if IE is not your default browser. If this is the case, either make IE the default temporarily, or drag default.htm from the root of the disc into IE. IE will ask you if it's OK to run active content to run from the local machine, say yes.
Use the PlatSDK Visual Studio Registration tool to add the PSDK dirs to the VS include and lib paths.
Optional: Create a shortcut to msdev (I pin it to the Start menu) and set the shortcut properties to always run the app elevated. I need to do this because otherwise I can't build DLL COM servers; regsvr32 needs write access to HKCR and HKLM, which it won't have unless the IDE is running elevated.
Run VS6 and enjoy your IDE! In beta 2, MSDN didn't run unless it was elevated, but this has been fixed in RTM.
I also use the WMP 10 Player SDK and that too installed without a hitch.
Step 0: use Notepad to create a file named msjava.dll (use "" around the filename to stop Notepad adding a .txt extension) in Windows\System32.
This fools the VS6 installer into thinking that the MS Java VM is already installed, so it does not run the VM installer. This means that it won't prompt for the reboot so steps 1 and 2 are not required.
If you have already followed these steps go to Change/Remove Programs and uninstall the Microsoft VM. The version that VS6 installs is highly vulnerable to attack.
Hi, Mike. Because there were some bugs and mistakes in Simon's translations, I re-translated your articles, both of the 1st edition and the 2nd edition. I had emailed you thus you didn't reply to me, so, this note is here. Thanks for your perfect work.
If you post translations of articles PLEASE let me know - or make a note in any links that the translation has been approved by the original author. I get many, many reports of plagarism and have to be vigilent about protecting our authors which means I can be a little trigger happy.
I'm guessing you've translated all 10 now, since I got 10 notifications about posts to the WTL articles. However, I guess you self-deleted right away because the posts don't exist, and the URLs didn't come thru Gmail properly so I have no idea what the URLs are.
This situation is going to be highly confusing for anyone who comes along later and finds these translations with a web search.
or, "I spent good money on this thing... might as well blog about it"
1. Gretchen[^] is a cool gal.
2. Raymond[^] is a really coolguy.
3. People love Anders Hejlsberg and Don Box. Don because he's whacky, Anders because he's down-to-earth and gets to demo the cool stuff (XLINQ especially).
4. IE 7 Protected Mode (low rights mode) is going to cause headaches for legit toolbars too (like mine).
5. Even us jaded geeks can still mark out for stuff occasionally. Witness the "show your open apps as a stack of windows so you can flip through them" demo in the keynote.
6. Lots of people have used my WTL articles. I had 3 total strangers come up and introduce themselves, saying they recogized my name and they had really liked the articles. Now I feel bad for not updating them for so long since some of the code won't compile in VC7.
7. An Alienware laptop can double as a leg exercise machine, plus the heat will soothe your muscles afterwards.
7a. I want one.
8. The first feature people will want to turn off in Longhorn is the glow that moves across progress bars. Yuck.
9. The first feature that shareware devs will steal from Longhorn and make work on XP is the thumbnails for minimized apps when you point at their taskbar button.
10. TaskDialog() and TaskDialogEx() - at least someone is looking out for us "crusty old Win32 developers."
11. The BoFs I attended turned out to be busts, but at least I got a nice shot of the Convention Center at night[^].
12. Being right next to thousands of free t-shirts [^] is a sub-optimal location to find oneself in.
13. The beta version of 1ClickPicGrabber[^] caused a reproducible bluescreen on Longhorn beta 2.
14. Avalon is going to make for some really nifty animation/gfx apps... and some really annoying ones too. Videos playing in realtime on playing cards?[^] Imagine everyone doing that...
Don Box is quiet a guy. I saw him speak at TechEd 2000 in Amsterdam, where he spent the entire lecture behind a lectern. When he finally stopped speaking, he walked out onto the stage and he had't been wearing any trousers the entire time Very funny guy and not afraid to tell it how it is.
This week's poll, and the serendipitous arrival of a new Joel on Software article[^], sparked some thoughts about how I got into this whole programming thing.
In mid-January, 1995, I got my first job in the software biz, as an Associate QA Engineer at Symantec[^]. I think I impressed my eventual boss not with my half-page résumé, but with the spell checker program that I brought with me to show that I did, in fact, know C++.
Once I was there, my boss gave me a crash course in Win32 stuff, but I was pretty much on my own as far as learning. (Remember this was 1995*, no public 'net yet, certainly no awesome resources like CP, and even back then I had come to the conclusion that Usenet sucked.) After much self-teaching, book-reading, and article-writing, I can say it's been quite a journey. Not always good or enjoyable, but then what is?
The traditional 10 year anniversary gift is, if I'm not mistaken, a 21" widescreen LCD monitor. The collection plate will be passed around now...
*Gawd I feel so old when I say things like that, or "this was before the net" or "this was before cell phones" or even the dreaded "this was before Google"
I got this nice pullover sweatshirt that I can wear when I'm bike riding in the chilly mornings, and it has a handy little sunglasses holder on the front, along with a big tag making sure you don't miss said holder:
What's this? A little loop of fabric is patented? Why yes, number 5,584,074[^] in fact.
So a couple inches of fabric and some stitches that do this with my sunglasses:
warrant patent protection?
I especially like claim number 1(b):
a first of said ends being attached to said shirt at said seam at a first point, and a second of said ends being attached to said shirt at said seam at a second point spaced a predetermined distance which is less than said strip length along said seam from said first point, which said predetermined distance defines substantially the widest width of said loop means.
So, whilst doing some actual work with VC 7 over the past weeks, I've come up with two new things I hate. Second is the resource editor. First is what I'll be bitching aboutcommenting on here: solutions.
"Solution"... ick. I haven't encountered solutions since my high school chemistry class. Let the marketdroids play with Windows and Office and the other stuff that has to appeal to non-techy people. They can talk about Office 20XX being "the solution" for whoever's troubles. But keep marketing-speak out of my IDE, for two reasons. 1) It's a horrible replacement for the old term "workspace", and 2) I feel like I'm a marketdroid when I say "solution" to someone else. :shiver:
But if it were just as bad as having to do a mental s/solution/workspace/g during my day, it wouldn't be hateful. The real offender is the new project system. I already stumbled over this back in my early days of using VC 7 (read about it here[^]). The way it works is:
A solution contains a number of projects
A project contains a number of configurations
A solution configuration is a list of projects and project configurations
This is, by itself, not bad, aside from the overloaded use of "configuration." However, it gets better:
At any point, there is a current solution configuration
At any point, there is a "StartUp Project"
You select the current solution configuration using the combobox in the Standard toolbar. This is the list of projects and build targets that gets built when you hit F7. The StartUp project is the project that gets run (and built, if necessary) when you hit F5.
Where it gets hateful is that while the preset solution configurations and the preset project configurations have the same names, they are not the same things. You could set the MyApp Debug solution configuration to build MyStaticLib|ReleaseMinSize and MyApp|DebugUnicode if you wanted to. And with the similar names, it's easy to misunderstand the purposes of the Project|Project Dependencies and Build|Configuration Manager dialogs.
So, assuming that you've correctly processed how the solution/project configs work, you're in for more fun if you have multiple binaries in your solution. To change which one gets debugged by F5, you have to set one as the StartUp project. How do you do this? A simple combo box like the solution config? Hah hah, of course not, foolish mortal. You have to go to the Solution Explorer pane (aka FileView from VC 6), scroll around and/or collapse tree branches until you find the node for the right project, right-click it, and pick Set as StartUp Project. Simple! And how do you know if you have the right project set as the StartUp project? Again, you have to scroll around in the Solution Explorer pane and look for the one node whose text is bold. That's the only way VC indicates what F5 will do.
Those two things, in combination, replace the simple and obvious "current project" notion in VC 6. What does F7 build? Your current project. What does F5 run? Your current project.
This is yet another concept relating to projects/solutions that is almost, but not quite, completely unlike the others. Result: much confusion.
The whole configuration/solution/project thing becomes actually useful when your projects no longer have one-to-one dependency, but are like "Debug OEM build with feature X", "Debug Retail build with library Y" etc. and you need to have precise control with which lib, option etc, the whole thing is linked.
I agree that the way MS exposed these settings is somewhat cumbersome though.
Sometimes I use "Batch build" to setup quick and dirty build sequence. It (exposed via toolbar icon or shortcut) works quite well when I need to rebuild some projects and do not want to mess with configurations.
What I am missing though is "build startup project", I presume there might be some obscure thing to do this (like writing a macro in VB ), but I never needed to venture so far.
From your s/solution/workspace/g remark I assume you are using "The Editor" , if this is the case, do you, by any chance, know, if there is some support/tool/script that allows invoking MSDN on <cword>? I found some undocumented COM interface for MSDN Help 2 engine, but using this will need to write some sort of COM out proc server wrapper, which I want to avoid.
In this post, I'll list the worst "features" VC 7 has foisted on me. If anyone knows how to fix/workaround anything I mention here, please respond. You will be making my life easier, and I will send you cookies. The IDE looks like VB
There, I've said it. Now that that's out of the way...
No way to turn off the whacky toolbars/menus
In VC 7 the toolbars are all flat (I have a distaste for flat UI elements in general, but that's for another rant...) and the colors don't obey your system settings. Hooray for following the user's preferences!
Plus, when you mouse over a toolbar or menu item, the icon hops up and down to say "hey! look at me! I'm 3-D!" I care about none of this. Fluff like that belongs in apps you sell to non-techy users like Office, or media players where a "hook" is necessary to distinguish yourself from the competition, or in Longhorn. Having weirdly-colored hopping UI elements is basically MS showing off how many graphic designers they have. I want to turn it off like I could in VC 6.
The MSDN viewer is hateful
This also has the "we're showing-off our GDI-fu" UI. But what's really hateful is the awful keyboard navigation. I do as much as I can with the keyboard. Using the new MSDN viewer with the keyboard is horribly broken and complicated.
First off, there are the hateful keyboard shorcuts - what kind of "shortcut" is Ctrl+Alt+F2?
And second, the mnemonics don't work. In the VC 6 viewer, if I'm reading a page and want to set the focus to the Index tab, I hit Alt+N and it works. In the VC 7 viewer, if I'm reading a page and I want to set focus to the Index, I can hit Ctrl+Alt+F2 (which is too hard for me to hit easily) or... well, nothing else. The Index page has a label that reads Look for: however hitting Alt+L does nothing but beep at me.
VC 7 failed miserably in converting VC 6 projects
At work we use VSS, and our code base has about 15 different VC projects, built in various ways. I took on the work of converting these to VC 7 and hit various walls along the way, including:
VC 7 didn't preserve some settings like "what kind of CRT to use"
VC 7 couldn't keep its own source control settings straight. In one dialog it would act like VSS wasn't installed, yet in the options dialog it clearly said VSS was installed.
During the project conversion, the above VSS problems resulted in a totally incomprehensible dialog, which I think was asking me to tell it where some projects were in the repository. Unfortunately, the dialog was pre-filled with the right locations so I didn't know what else I could do to make it find the projects.
Due to all those problems I gave up and rebuilt the projects manually.
F4 behavior changed for the worse
When you are moving through a list of build errors, you still hit F4/Shift+F4, however the caret now stays in the Output window. You have to hit Enter to move the caret to the text editor. This is dumb since, as far as I know, you cannot change code from the Output window.
Also, (Shift+)F4 only applies to the Output window. If you want to move thru Find in Files results with the keyboard, tough luck.
VC 7 removed the ability to bind "open this include" to a key
And I have no idea why. Ctrl+Shift+G worked perfectly fine in VC 6.
Incremental search annoys me
Incremental search, which I use all the time can be case-sensitive. In VC 6, when it was in case-sensitive mode, the status bar indicated this, and you could hit Ctrl+C to toggle case-sensitivity off.
In VC 7, it still can be case-sensitive, however there is no indication that case-sensitivity is on, and you can't toggle it with Ctrl+C.
As if that isn't bad enough, when you do a Find in Files and turn case-sensitivity on there, that also sets the case-sensitivity mode for incremental search. This one problem had me convinced that incremental search was broken (maybe it didn't wrap around a file?) until I happened to make the connection in my mind.
And what's even worse, if you hit Ctrl+F for the regular find, the case-sensitive checkbox is unchecked, which makes incremental search case-insensitive again.
The Properties window in the resource editor has this one annoying behavior
Double-clicking an item changes the value, which I find mystifying. Now I can't select, say the control ID field ("IDC_ABOUTBOX") by double-clicking the text, because that changes the ID to whatever is next alphabetically, I guess.That's all for this rant... this is just the stuff that annoys the hell out of me on a daily basis, I have more to come.
What about not being able to close a source file tab by double-clicking it or wheel-clicking it, like any decent tabbed application (Mozilla, UltraEdit, Visual C++ with WndTabs)? Or have I miss anything?
Michael Dunn wrote: The IDE looks like VB
There, I've said it. Now that that's out of the way...
It does grown on your after a while. Or maybe it just brain-washes the user
Michael Dunn wrote: The MSDN viewer is hateful
Don't get me started about Dynamic Help. You close the window, it comes back again. You try and turn it off from the options, it still comes back. I wouldn't mind but it never shows any useful help anyway.
Michael Dunn wrote: F4 behavior changed for the worse
Amen. After using VS.NET for all this time, this is the one thiing that annoys me more than anything else.
If I've been in a pissy (pissier?) mood lately, it's because I've been forced to use Microsoft Visual Studio .Net 2003 (or VC 7.1 or just VC7 for short).
Longtime readers will know that I've been pretty sour on VC7 ever since trying out a beta of 2002. I believe the "He-Man VS.Net IDE Haters Club" came up a couple of times. I was initially repulsed by the IDE (which is a pretty common reaction), and the buggyness of 2002 kept me away. And all kidding aside, VC 6 + WndTabs[^] is so bloody good of an IDE that I had zero reason to change. Didn't care about .net, didn't care about working templates, didn't want a VB-ized IDE.
So anyway, fast-forward to 2004. At work[^] we use a static lib provided by the WMP team. Prior to 2004, we had a lib built with VC 6, and all was fine. Then a couple months ago, we got a new lib from them that was built with (you guessed it) VC7. argh
So we could no longer build our stuff with VC 6. It was VC 7 or nothing, and since our company wants to stay in business, "nothing" was quickly ruled out as an option. Now that I've actually used it for production code, I can form opinions more detailed than "the IDE sucks". I have opinions, and I will be presenting them here. Not just to bitch, but to seek solutions to what I perceive as bad problems with VC 7. I guess I could use the VS.NET IDE issues[^] forum, but what I have really aren't questions, and a blog is really the better place for ranting/venting/griping/bitching anyway.
PS: I totally understand why the new WMP lib was built with VC7. Doesn't mean I have to like it.
Women reading this: NEVER CUT YOUR HAIR! I don't care how good you think you will look. Don't do it. Trimming a couple inches off the ends is fine. Chopping it off so you look like a frumpy mother is not.
Michael Dunn wrote: Women reading this: NEVER CUT YOUR HAIR!
Got to disagree. I love women with short hair. And Alyson look mighty fine in that photo. I think the new hairstyle suits her. She'd been looking a little ropey in the last few times I saw her, but now she's back to near her best.
I was driving to work this morning and in front of me was a car that had those silly spinning hubcap things. That wouldn't be noteworthy except the car was a Toyota Camry. Not a low-rider, not a tricked-out car or anything. Just a plain, stock Camry. Not lowered, no detailing, not even a license plate frame with a catchy saying on it.
After posting about my bike ride[^] this morning, some folks responded and asked where I went, so I figured I'd make a blog out of it. I don't usually post about personal stuff here, because I figure no one really cares, but since y'all asked...
I bought myself a bike a few weeks ago. I've had some bad luck with it, as the first time I went riding the back tire got f'ed up (turned out to be defective), and then the next time I went out I ended up getting sick and laid up for a week. But I've gone 2 weeks without a mishap now.
I live in Mar Vista, which is next door to Venice and Marina Del Rey. Basically it's on the border of rich neighborhoods that I could never afford to live in. The nice thing is that it's near the beach, and there's a bike path that runs along the beach for 20 miles or so.
What I've been doing is picking up the bike path in Marina Del Rey and riding south to this bridge that's over this river that's used for rowing/kayaking events by nearby colleges. It seems like a good distance for me because I can ride there, rest for a few minutes, and ride back home, all in about 1 hour.
Since I'm just starting out with regular riding, I'm doing that 2 days a week (Tuesday and Thursday). I get up at 6 (not hard to do since it's already light), eat and stretch and I'm out by 6:30.
On Saturdays I'll ride a bit farther. Today I took the path north (opposite direction from the bridge) through Venice and Santa Monica. This isn't quite as nice because there are always idiots walking on the bike path, but whatever. Once I get past the Santa Monica Pier, the path is less crowded and it's a nicer ride. This morning I was there at about 9:30 and the marine layer was still around, so the water looked really nice.
That path is really the only place I ride. I have a road bike, and I'm in no shape to tackle mountains yet, so I'll keep up that routine until I start feeling better. I rode on the path when I was in college, and I could do the whole trip down to Redondo and back in about 3.5 hours. Give me a few months and I might be doing those trips again on the weekends.
For those not familiar, the US TV season runs from roughly September to May. There are three month-long periods in there - November, February, and May - called "sweeps" periods, during which all the stations run their best shows (eg season finales in May) and basically do anything to improve their ratings. This is done because the ratings that a show/station gets during a sweeps period are used to determine advertising rates for the following months. Higher ratings == more people watching == higher ad rates.
Unfortunately, this system creates a dead zone between Thanksgiving and Feb 1, during which you might get the occasional holiday-themed new episode, but most of the time it's reruns. I can deal with this, it's the holiday season and I'm usually not concerned with watching TV anyway during that time.
Summer used to be all reruns, all the time. This was all well and good since you could catch reruns of shows you liked, but not sweat things if you missed a show. Then, networks got the rather good idea of premiering new shows in the summer to see if they would catch on. Sometimes a gem popped up like The O.C. (well, I don't watch it but it's popular, so I'll go with that one as the example since it's the most recent summer success). Other times, shows that were popular (but not popular enough to make the normal schedule) were aired, such as The Amazing Race or Dog Eat Dog.
But now, summer has turned into a wasteland of horrible "reality" shows, and not just from Fox. NBC is on the bandwagon with its Bachelor ripoffs. What's worse is that the reality TV craze has drifted into "but there's a surprise!" territory and many shows are about making the contestants look foolish. Witness WB's Superstar USA (they let the bad singers advance, kick off the good ones). It's not enough to show unscripted or semi-scripted action with non-actors, noooo now we have to humiliate them for the viewers to get their jollies.
So, what am I going to watch today? Well, if there's ever a rerun of Las Vegas I'll watch that. Not sure if Dog Eat Dog is coming back, but if it is, I'm all over it. Otherwise, I'm counting the days until The Amazing Race 5 starts, the only show I'm really looking forward to this summer.
Side note: Phil Koeghan has like the ultimate dream job. Fly to various cities around the world, narrate introductions, and greet the arriving contestants. See the sights of the world on CBS's tab!
A huge (600+ pages) and extremely well-written history of the video game industry, starting in the pre-Pong era and ending in 2000. It's a great read and literally hard to put down. If you were around for the initial 80's boom but weren't keeping up with the politics and flying lawsuits (for example, Nintendo vs. Universal over Donkey Kong being too close to King Kong) this book will be especially enlightening. If you're a youngun' who has never had a computer slower than 300 MHz, well...
Getting a little more modern, this is a long article on probably the second-biggest modern game debacle (Duke Nukem Forever being #1), documenting the beginning of Ion Storm and what the game went through during the years of development.