Boost logo

Boost Users :

From: Ben Hutchings (ben.hutchings_at_[hidden])
Date: 2003-04-17 12:15:33


E. Scott Larsen wrote:
> Just FYI to this thread in general. It's been a while since I've
messed
> with WinMain and command lines, but if my memory serves me right (it
was
> at a different place, so I don't have the code here), there's some
> additional whacky issues here. WinMain recieves the first arguments
> differently depending on how it is run:
> *) from MSVC debugger
> *) from a commandline
> *) by clicking on an shortcut icon
> *) by clicking in an explorer window

I find this hard to believe, as WinMain is just given a pointer into the
command line returned by GetCommandLine(), incremented past the program
name and any following space.

> don't remember which is which, but one gives just the executable name,

> one gives the full path to the executable (seems like there's two
> variations on this, like one is quoted and one is not, don't remember
> the details), and it seems like there's one that doesn't give the
> executable at all.

I can imagine there's some variation in program name; it's normal for
programs to be started with short names rather than their full
filenames. The quoting is weird though; that should be removed before
you see it.

> Also, I _distinctly_ remember something very whacky when I used
unicode,
> I don't remember the details, but the commandline arguments were a
> significant pain for a program built with unicode support using the
> unicode windows entry function. That still tastes bad in my mouth.

According to the docs, this ought to work:

    wchar_t ** argv;
    int argc;
    argv = CommandLineToArgvW(GetCommandLineW(), &argc);

but I've never tried it; maybe it doesn't.

If you were using WinCE then I feel your pain and hope you've recovered.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net