We’re really making progress on our big conversion at work. The DevExpress conversion is pretty much complete except for one lingering problem. We have a strange error with some of the TreeViews where we get a StackOverflow exception when we assign a DataTable to the DataSource property. However, I managed to create a sample project demonstrating the bug, and DevExpress was able to reproduce the problem on their end using our sample. So now they are working on it, and hopefully they’ll get back to us soon with a fix.

The Atalasoft conversion is also nearing completion. I still need to work out a few of the TWAIN methods, but the documentation is pretty clear, so I’m not anticipating too much of a problem. I do have one odd bug trying to get an ImageInfo object from the JPEGDecoder, and I guess I’m going to have to call that one in to Atalasoft because I’ve tried quite a few things and I can’t seem to get around it. When we feed the control one of our jpeg images as a byte array, it can correctly display the image, and if we pass the array to the GetDecoder method, it correctly returns a JPEGDecoder, but when we pass it into the JPEGDecoder to get the ImageInfo, we get an error message back that says the file is not a valid jpeg image. Weird. I’m probably just doing something wrong, but it looks like I’ll need them to tell me exactly what the problem is.

Yesterday I completed the switch from our old VB6 wrapped WebBrowser control to the new WebBrowser control in the .Net Framework 2.0. Everything is working properly, which is great, but it’s not quite as clean as I had hoped it would be. The new Framework wrapper only wraps a portion of the properties and methods that are actually exposed by the WebBrowser control and the various DOM objects, so the rest of them use what I think of as a “jump” property that flips things back over the unmanaged DOM objects from MSHTML. The downside to that is that our project still needs to keep a reference to MSHTML in order for all of that to work. That means that MSHTML will be the only unmanaged reference in our entire program. If Microsoft had just wrapped a little bit more in the Framework, we could be 100% managed code, which would be great. So that’s kind of a let down, but it’s still way better than the VB6 wrapper we were using before. Plus the new control finally lets us use XP styled HTML controls in the WebBrowser inside our project, which makes things look much nicer. It also makes it possible to do programmatic scrolling down to individual pixels again, which is something we lost when we switched to .Net 1.0 several years ago.

All of that is just to say we are definitely in the home stretch now. I knew the user interface changes were going to be kind of neat, but I never thought they were a particularly big deal. But now that I see the code running with all of the new controls, I have to admit that it really does look good. It’s a big step up in terms of the initial impression that the program makes.