Results 1 to 28 of 28

Thread: [RESOLVED] GDI Scaling, ImageLists, ListView

  1. #1

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Resolved [RESOLVED] GDI Scaling, ImageLists, ListView

    I've found some pretty awful image quality using ImageLists with GDI Scaling, the so-called "System (Enhanced)" appcompat option.

    I tried fiddling around rebuilding ImageList contents in the Paint event, but no dice.

    Now I am doing the same thing, but using GDI+ to do the image scaling to fit the two ImageList controls. These are always built "on the fly" based on data retrieved from a database.

    Weird results.

    Some runs it just plain fails the same as using GDI to scale the images. Yet other runs I get this behavior:

    Name:  sshot1.png
Views: 157
Size:  18.5 KB

    Form opens on 150% monitor, Donna selected, blemished images


    Name:  sshot2.png
Views: 146
Size:  6.8 KB

    Form dragged to 100% monitor, blemishes disappear but Donna shows up blank


    Name:  sshot3.png
Views: 141
Size:  17.0 KB

    Form dragged back to 150% monitor, Doona comes back, no blemishes

    ... continued

  2. #2

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: GDI Scaling, ImageLists, ListView

    continued...

    Name:  sshot4.png
Views: 127
Size:  14.7 KB

    Shipping Dept selected, images blemished


    Name:  sshot5.png
Views: 129
Size:  6.4 KB

    Form dragged to 100% monitor, blemished


    Name:  sshot6.png
Views: 129
Size:  14.5 KB

    Form dragged back, still blemished

    ... continued

  3. #3

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: GDI Scaling, ImageLists, ListView

    continued...

    Name:  sshot7.png
Views: 126
Size:  35.8 KB

    When Form opens on 150% monitor unblemished, choosing Tile View remains unblemished


    So ok, what's going on?

    Why do some runs always have blemished images, while others seem to flipflip?

    I get why GDI+ made a difference when scaling the images to stuff into the Imagelists. GDI+ is not supposed to be impacted by the GDI Scaling appcompat.
    Attached Files Attached Files

  4. #4

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: GDI Scaling, ImageLists, ListView

    BTW: The source images are highly compressed JPGs and the screenshots were reduced to 256 colors to make them smaller to post.

    So even the "good" screenshots above will look a little rough.

  5. #5

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: GDI Scaling, ImageLists, ListView

    I could also re-render the Toolbar bitmaps on the fly to get around the DIB limitations. That's another subject though it will probably have the same issue (sometimes good, sometimes rough).

  6. #6
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,480

    Re: GDI Scaling, ImageLists, ListView

    I assume the test project needs to be compiled?

    Probably won't make a difference. Do you get different results if you manifest for Win10 awareness?

    It would be nice to know the style bits of an imagelist, as there are several different options. By default, the ImageList is just a 4-bit DIB. Would be hard to believe that the common controls use the default though or default to DDB.

    In addition, I would've expected your best results to always be 100% DPI since your manifest has no DPI-awareness set.

    As far as GDI+ not impacted... maybe it isn't but maybe the created DIBs added to the stdPictures added to the imagelist are?

    edited: "best" results should probably read: "most consistent" results
    Last edited by LaVolpe; Sep 15th, 2020 at 01:10 PM.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  7. #7

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: GDI Scaling, ImageLists, ListView

    Yes, it needs to be compiled. Well, unless you have an IDE manifest to do the same thing (CC6 & GDI Scaling).

    Haven't added Windows 10 as a SupportedOS in the manifest. The idea is that you could even choose System (Enhanced) with no manifest at all if you didn't need CC6 themes.

    DPI Awareness, again, shouldn't matter. The whole point is to avoid being DPI Aware at all, minimizing required effort to the bone.

    No, DIBs are not added to the ImageList. That way lies madness! You get only the upper-left portion of a DIB under GDI Scaling. DDBs all the way, baby. As far as I can tell there is no problem getting 24-bit DDBs into a Comctl32 ImageList via .ListImages.Add() calls even without the CC6 assembly. IrfanView counted 6184 unique colors in a snipped photo I cut out of a screenshot.

  8. #8

  9. #9

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: GDI Scaling, ImageLists, ListView

    That might be an answer, though I was hoping that after playing with this I could whittle down to less code.

    But tell me where using an API ImageList would help.

    I assume you are referring to ImageList_Replace(). If so, that works fine for the "pictures" but not so much for the Toolbar Buttons (which I am still fighting with, I'm losing mask transparency), which I'd have to create mask bitmaps for too. Plus, you lose the Key provided by the OCX.


    The idea was to see whether GDI Scaling could be applied to more programs with little code rewriting. So far the results are mixed at best, so I'm not sure adding more code makes sense.

    Aside from ImageLists (and thus controls depending on them) GDI Scaling works pretty well with little or no code change required.

  10. #10
    Hyperactive Member
    Join Date
    Dec 2008
    Location
    Argentina
    Posts
    274

    Re: GDI Scaling, ImageLists, ListView

    Hello, probably I have not understood anything of what you wanted to explain and my answer is in vain, but I will try to put my bite: "I think you have to divide the desired size by the dpi on the screen"

    Code:
        Set gpspScaleIcons = New GPSP
        With gpspScaleIcons
            .Width = ilLvwIcons.ImageWidth / ScreenDPI
            .Height = ilLvwIcons.ImageHeight / ScreenDPI
            .Quality = ModeHighQuality
            .hDC = hDC
        End With
        Me.Caption = GetWindowsDPI
        Set gpspScaleSmIcons = New GPSP
        Me.Caption = ilLvwSmIcons.ImageWidth
        With gpspScaleSmIcons
            .Width = ilLvwSmIcons.ImageWidth / ScreenDPI
            .Height = ilLvwSmIcons.ImageHeight / ScreenDPI
            .Quality = ModeHighQuality
            .hDC = hDC
        End With

    Code:
    Public Function ScreenDPI() As Single
        Dim hDC As Long: hDC = GetDC(0)
        ScreenDPI = GetDeviceCaps(hDC, 118) / (Screen.Width / Screen.TwipsPerPixelX)
        ReleaseDC 0, hDC
    End Function
    Of course you must validate if it is in the VB IDE
    leandroascierto.com Visual Basic 6 projects

  11. #11
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,480

    Re: GDI Scaling, ImageLists, ListView

    @LeanadoA. The project is not DPI aware, so the DPI is always 96

    @dilettante. For a quick test, try adding 32bit DIBs to the imagelist. Doesn't GDI-scaling work best with DIBs, or do I have it the other way around? Your stdPictures are already 32bpp DIBs since they wrap the bitmap returned from GDI+. On this page is about 10 lines of code to use a 32bpp API imagelist. It's a hack, but easy enough to try for testing. That purpose of that hack doesn't work well on my XP in VM, but on Vista+, it seems to work w/o problems. On my XP VM, transparency isn't being honored, though transparency isn't a player for your testing.

    If you don't want 32bpp, you can replace the parameter value (&H20) with 24 for 24 bit DIB.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  12. #12
    Hyperactive Member
    Join Date
    Dec 2008
    Location
    Argentina
    Posts
    274

    Re: GDI Scaling, ImageLists, ListView

    Quote Originally Posted by LaVolpe View Post
    @LeanadoA. The project is not DPI aware, so the DPI is always 96

    yes I understood that but GDI Scaling is with respect to the DPI if he enters the size 40x50, "GDI Scaling" will take that size to the one that uses the DPI, for example if it is with a DPI = 300 it will scale the image to 120x150, and then the imagelist will take it again at 40x50 there is the problem, the imagelist ruins the images when it shrinks them
    leandroascierto.com Visual Basic 6 projects

  13. #13

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: GDI Scaling, ImageLists, ListView

    GDI Scaling isn't implemented for DIBs, so they produce distorted results. DDBs are the suggested path.

    Altering the color format of an ImageList is what I've been looking at, but I'm not finding a "normal" way to do it using the OCX. Calling ImageList_Create() or using the COM alternative allows the use of ILC_COLORxxx flags, of course.

    API ImageLists (including the ones wrapped by the Comctl32.ocx, CC5 & CC6 of course) do not support mask transparency for bit depths greater than 8. That's giving me grief trying to fix my Toolbar Button images.


    However I have had success earlier stuffing PNG-originated bitmaps with an alpha channel into ImageLists, and these seem to work cleanly with GDI Scaling in a quick test. The downside is that I did this using WIA 2.0, and though WIA 2.0 can scale images the quality (InterpolationMode) seems to be low and the values to use can't be specified as far as I can determine.

    So I have two things to deal with. One, I want transparency for Button bitmaps. Two, I want decent photo scaling, at least as good as the Render() method produces (which seems to do StretchBlt() with HALFTONE mode). WIA works for the first, fails for the second. I'll have to do it manually from GDI+ Flat API calls after converting my Button bitmaps to PNG.


    But... your hack sounds promising. ILC_COLORDDB might make everything go away. This along with Render() calls for all images involved might be the only thing required. No more rebuiding ImageLists during the Paint handler. I may look into that next, EXCEPT... My images are not all square, and I suspect the Button bitmaps will need alpha transparency and up being PARGB format.

    Still, food for thought so we'll see what happens as I play more.

  14. #14
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,480

    Re: GDI Scaling, ImageLists, ListView

    Quote Originally Posted by LeandroA View Post
    yes I understood that but GDI Scaling is with respect to the DPI if he enters the size 40x50, "GDI Scaling" will take that size to the one that uses the DPI, for example if it is with a DPI = 300 it will scale the image to 120x150, and then the imagelist will take it again at 40x50 there is the problem, the imagelist ruins the images when it shrinks them
    Gotcha & sorry for butchering your name in my last reply

    So, you are suggesting to scale the image larger, within the stdPicture, but leave the ImageList ImageWidth/Height properties the same?
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  15. #15
    Hyperactive Member
    Join Date
    Dec 2008
    Location
    Argentina
    Posts
    274

    Re: GDI Scaling, ImageLists, ListView

    Quote Originally Posted by LaVolpe View Post
    Gotcha & sorry for butchering your name in my last reply

    So, you are suggesting to scale the image larger, within the stdPicture, but leave the ImageList ImageWidth/Height properties the same?
    it's actually smaller, not larger, Width / screenDPI and Height / ScreenDPI
    (I'm sorry if my translation is not understood)
    leandroascierto.com Visual Basic 6 projects

  16. #16
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,480

    Re: GDI Scaling, ImageLists, ListView

    Quote Originally Posted by dilettante View Post
    My images are not all square, and I suspect the Button bitmaps will need alpha transparency and up being PARGB format.
    Leandro had no issues with non-square images but I did. It might have been something I did during my testing. I never went back to try to replicate that problem
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  17. #17

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: GDI Scaling, ImageLists, ListView

    I got a chance to play with this a bit more.

    I modified a Class I have on hand for bitmap loading/scaling with GDI+ to return a StdPicture. I used this to populate the ListView ImageList controls (Comctl32.ocx). No Paint event handler at all.

    Seems to work great. Just:

    1. Added this Class to the original Project before I started fiddling.
    2. Replaced LoadPicture() and PaintPicture() calls in my cboDepartments_Click handler with instances of the Class. I load into one instance, then clone it into a second instance for scaling so I can keep the original bitmap and avoid loading it twice.
    3. Added a manifest requesting GDI Scaling.


    I haven't dealt with the buttons yet but I have great expectations. I just need to convert them from BMPs to PNGs with transparency, then store them as custom resources. After that just add a few more lines of code making use of an instance of this AlphaPic Class.


    We'll see, but this looks pretty good.

  18. #18

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: GDI Scaling, ImageLists, ListView

    Ok, whew.

    There is still another flaw but I doubt it is within my control. ListView selected items have their image "highlighted out" when dragged to another monitor than they opened on with a different DPI.

    Aside from that it looks pretty good and only requires the modest program changes I listed previously. Feels like it was all about DIBs failing to scale right. Yes, the Toolbar Button images get a little fuzzy but that's part of the price with GDI Scaling. Feels plenty good enough for DPI-remediating the average LOB application at a low cost of effort.


    Name:  sshot1.png
Views: 74
Size:  33.7 KB

    Form opens on 150% DPI monitor


    Name:  sshot2.png
Views: 74
Size:  12.5 KB

    Now dragged to 100% monitor


    I can drag them to and fro multiple times. No flaws aside from that one about selections. But even so I'll mark this resolved because that's a different GDI Scaling issue anyway.

    Oh, and yeah, when I resize the Form the TextBox tracks right along with the ListView. But perhaps I misunderstood the issue brought up in the recent "Magic DPI Aware UserControl" thread still going on?
    Attached Files Attached Files
    Last edited by dilettante; Sep 17th, 2020 at 02:53 PM. Reason: replaced attachment

  19. #19

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: GDI Scaling, ImageLists, ListView

    Looks like the program should disable "ArrangeNone" when "ViewTiles" is selected. But that's not DPI related anyway, just a plain old programming issue.

  20. #20

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: [RESOLVED] GDI Scaling, ImageLists, ListView

    Small tweak to avoid "black buttons" in IDE runs, in case that annoys anyone.

    In MainUI.frm:

    Code:
        ilTlbIcons.ListImages.Add , Key, AlphaPic.Picture(vbButtonFace)
    In AlphaPic.cls:

    Code:
    Private Declare Function OleTranslateColor Lib "oleaut32" ( _
        ByVal clr As OLE_COLOR, _
        ByVal hPal As Long, _
        ByRef retColorRef As Long) As Long
    
    
    Public Property Get Picture(Optional ByVal BackColor As OLE_COLOR) As stdole.StdPicture
        Dim hBitmap As Long
        Dim PICTDESC As PICTDESC
        Dim HRESULT As Long
        
        If Not GdipInitialized Then Exit Property
        
        If IsLoaded Then
            'Convert OLE_COLOR to fully transparent ARGB format:
            OleTranslateColor BackColor, WIN32_NULL, BackColor
            If BackColor <> 0 Then
                BackColor = (BackColor And &HFF&) * &H10000 _
                         Or (BackColor And &HFF00&) _
                         Or (BackColor And &HFF0000) \ &H10000
            End If
            
            If GdipCreateHBITMAPFromBitmap(GdipBitmap, hBitmap, BackColor) = Ok Then

  21. #21

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: [RESOLVED] GDI Scaling, ImageLists, ListView

    Ok, found a bug I had introduced in the original program by hoping ImageLists would retain ImageWidth and ImageHeight reliably after being cleared. Now I reassign the values after each clear.


    More importantly I modified AlphaPic to apply a "transparent color" when loading. Like the MaskColor used by an ImageList for images <= 8 bpp.

    This means when you want to remediate an old program for GDI Scaling you no longer have to change your BMPs into PNGs with transparency. You can just put the BMPs into Bitmap resources and use those instead of PNGs.


    Post #18 attachment replaced. Includes the post #20 changes as well for IDE runs.

  22. #22
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,480

    Re: [RESOLVED] GDI Scaling, ImageLists, ListView

    You probably know, but just in case. LoadResPicture(bitmap) returns DDB. Unlikely in modern systems using 32bit resolution, but that could change image colors. Don't know if that type of scenario would mess with choosing the right mask color in your code? Didn't examine your code before posting this. Just throwing this out there.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  23. #23

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: [RESOLVED] GDI Scaling, ImageLists, ListView

    Reminder:

    GDI Scaling does not promise or deliver pixel-perfect bitmap images. For that you need to do the work to be per-monitor DPI aware.

    But if you can use DDBs instead of DIBs, most LOB applications can be trivially remediated for per-monitor and High DPI scenarios.


    No need for Magic Head!

    Name:  Magic Head.jpg
Views: 45
Size:  11.3 KB

  24. #24

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: [RESOLVED] GDI Scaling, ImageLists, ListView

    Quote Originally Posted by LaVolpe View Post
    You probably know, but just in case. LoadResPicture(bitmap) returns DDB. Unlikely in modern systems using 32bit resolution, but that could change image colors. Don't know if that type of scenario would mess with choosing the right mask color in your code? Didn't examine your code before posting this. Just throwing this out there.
    No, I hadn't even considered that. So thanks for addressing it!

    The code above does that with 16-color bitmaps but there was no color distortion. Perhaps because of the palette they used?

    Name:  sshot.png
Views: 42
Size:  725 Bytes


    If that's a problem then just use the LoadResPicture()'s DDB. As long as it is 8 bpp or less the MaskColor should work fine.

    Or... store the raw bytes from the BMP files as custom resources and load those. AlphaPic accepts a file name, Byte Array, or a StdPicture now for loading. It will still load PNGs as well.

    The problems seem to come from images that were pre-stored into an ImageList at design time. Thus these gyrations. Assuming that was ever a problem in the first place. Toolbar button ImageLists might be fine without any fiddling. More testing to do I guess.

  25. #25

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: [RESOLVED] GDI Scaling, ImageLists, ListView

    Sure enough, the Toolbar Button bitmaps loaded from BMP files at design time are as good as it gets under GDI Scaling. Magnified automagically they do get a little fuzzy as expected, but I'm not seeing color distortion, MaskColor failures, or just an upper-left corner displayed.

    Might be different for other color palettes or bitdepths beyond 8 bpp, but MaskColor doesn't work there in an ImageList anyway. Then you have to go to transparent bitmaps if you want any transparency.


    So the remediation is even simpler, back to my list in post #17.

    Any better results probably require a form of per-monitor DPi Awareness and far more coding gymnastics. As it is now I could gut a lot of unused stuff from AlphaPic when using it for this purpose.
    Attached Files Attached Files
    Last edited by dilettante; Sep 17th, 2020 at 10:38 PM. Reason: replaced attachment

  26. #26

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: [RESOLVED] GDI Scaling, ImageLists, ListView

    Did a 200 DPI test and the buttons look even better. That's because GDI Scaling handles whole multiples of 100% differently from fractional multiples.

    By contrast though, the photo images look a little worse. No clipping or color distortion, just blurrier. Usable though. Once again, to do better probably means being DPI Aware and a lot more work.

    I might take another look at AlphaPic and see whether its attempt to compensate for GDI Scaling in GDI+ might be giving the poor results.

  27. #27

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: [RESOLVED] GDI Scaling, ImageLists, ListView

    Ok, ripped out all of the "attempts to compensate" from AlphaPic. Found a bug where I was causing Quality to default for image scaling in MainUI.frm.

    Retested. Much better result. More about ripping out stuff than adding new stuff or complicating the changes required to the original program. Just gets better and better.

    See post #25, I reposted the adjusted attachment.

  28. #28

    Thread Starter
    PowerPoster
    Join Date
    Feb 2006
    Posts
    21,443

    Re: [RESOLVED] GDI Scaling, ImageLists, ListView

    I'll say this again:

    This is not dealing with DPI Awareness. It is a way to cope with High DPI and per-monitor DPI without making any major changes to existing programs. It looks best when DPI is a whole multiple of 100%. It only works for late versions of Windows 10.

    It is not suitable for most photo-processing, painting, or game programs... and is far from the ultimate if you are writing commercial-grade software for resale.

    There are probably additional "rough edges" to compensate for that I haven't identified yet.


    The idea is something like:

    Your company just replaced a lot of monitors with very high resolution recent monitor products. High DPI is being used because everything is too small to read otherwise. Your boss says: "Those 125 VB6 progams you support? They look like crap. Deal with it. Now."

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width