|
Use ShellExecute() instead.r to open or explore. The function can open an executable file or a document file. The function can print a document file.
lpParameters
If the lpFile parameter specifies an executable file, lpParameters is an address to a null-terminated string that specifies the parameters to be passed to the application.The format of this string is determined by the verb that is to be invoked. If lpFile specifies a document file, lpParameters should be NULL.
lpDirectory
Address of a null-terminated string that specifies the default directory.
nShowCmd
Flags that specify how an application is to be displayed when it is opened. If lpFile specifies a document file, the flag is simply passed to the associated application. It is up to the application to decide how to handle it.
SW_HIDE | Hides the window and activates another window. | SW_MAXIMIZE | Maximizes the specified window. | SW_MINIMIZE | Minimizes the specified window and activates the next top-level window in the z-order. | SW_RESTORE | Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window. | SW_SHOW | Activates the window and displays it in its current size and position. | SW_SHOWDEFAULT | Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. An application should call ShowWindow with this flag to set the initial show state of its main window. | SW_SHOWMAXIMIZED | Activates the window and displays it as a maximized window. | SW_SHOWMINIMIZED | Activates the window and displays it as a minimized window. | SW_SHOWMINNOACTIVE | Displays the window as a minimized window. The active window remains active. | SW_SHOWNA | Displays the window in its current state. The active window remains active. | SW_SHOWNOACTIVATE | Displays a window in its most recent size and position. The active window remains active. | SW_SHOWNORMAL | Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time. |
Return Values
Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise. The following table lists the error values. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Microsoft® Windows® applications. It is not a true HINSTANCE,
however. The only thing that can be done with the returned HINSTANCE is
to cast it to an integer and compare it with the value 32 or one of the
error codes below.
0 | The operating system is out of memory or resources. | ERROR_FILE_NOT_FOUND | The specified file was not found. | ERROR_PATH_NOT_FOUND | The specified path was not found. | ERROR_BAD_FORMAT | The .exe file is invalid (non-Win32® .exe or error in .exe image). | SE_ERR_ACCESSDENIED | The operating system denied access to the specified file. | SE_ERR_ASSOCINCOMPLETE | The file name association is incomplete or invalid. | SE_ERR_DDEBUSY | The DDE transaction could not be completed because other DDE transactions were being processed. | SE_ERR_DDEFAIL | The DDE transaction failed. | SE_ERR_DDETIMEOUT | The DDE transaction could not be completed because the request timed out. | SE_ERR_DLLNOTFOUND | The specified dynamic-link library was not found. | SE_ERR_FNF | The specified file was not found. | SE_ERR_NOASSOC | There is no application associated with the given file name extension. This error will also be returned if you attempt to print a file that is not printable. | SE_ERR_OOM | There was not enough memory to complete the operation. | SE_ERR_PNF | The specified path was not found. | SE_ERR_SHARE | A sharing violation occurred. |
Remarks
This method allows you to execute any commands in a folder's context menu or stored in the registry.
To open a folder, use either of the following calls:
ShellExecute(handle, NULL, path_to_folder, NULL, NULL, SW_SHOWNORMAL);
or
ShellExecute(handle, "open", path_to_folder, NULL, NULL, SW_SHOWNORMAL);
To explore a folder, use:
ShellExecute(handle, "explore", path_to_folder, NULL, NULL, SW_SHOWNORMAL);
To launch the shell's Find utility for a directory, use:
ShellExecute(handle, "find", path_to_folder, NULL, NULL, 0);
If lpOperation is NULL, the function opens the file specified by lpFile. If lpOperation is "open" or "explore", the function will attempt to open or explore the folder.
With multiple monitors, if you specify the window handle and set lpOperation to "Properties", any windows created by ShellExecute may not appear in the correct position.
To obtain information about the application that is launched as a result of calling ShellExecute, use ShellExecuteEx.
See Also
IShellExecuteHook
Windows NT/2000: Requires Windows NT 3.1 or later.
Windows 95/98: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in shellapi.h.
Import Library: shell32.lib.
|
|
|
|
|
Instead of copying MSDN article, just post a link next time.
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Ok I see. But I need a function that returns the path of the file.
Like 'd:\games\quake 3\quake3.exe' will return 'd:\games\quake 3\'
Any function that does this?
thanks.
|
|
|
|
|
Visual Basic is great for things like that
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Just parse the string from right to left, and keep adding a char to a buffer until it encounters a '\'.
|
|
|
|
|
Look up: _makepath, _fullpath, and _splitpath in MSDN I've used these before.
|
|
|
|
|
Hi,
how it's possible to modify in MFC the pop-up menu that appears when i click on the icon of a window? I've searched something in MSDN but nothing ![Cry | :((](https://codeproject.global.ssl.fastly.net/script/Forums/Images/smiley_cry.gif)
|
|
|
|
|
Anonymous wrote:
when i click on the icon of a window
Do you mean the system menu? Check out CWnd::GetSystemMenu, CMenu::AppendMenu, CMenu::InsertMenu & CMenu:: ModifyMenu
Dylan Kenneally
London, UK
|
|
|
|
|
For a fast tutorial, create a new dialog app (with MFC) project, and check out how the About Box is handled in OnInitDialog() and OnSysCommand()
~RaGE();
|
|
|
|
|
Is there any Function in MFC through which i can get the bios time.;)
Samir Sood
|
|
|
|
|
SamirSood wrote:
Is there any Function in MFC through which i can get the bios time.
You mean BIOS release date?
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
What i exactly mean is that I want to get the current system time based on the BIOS time. Because if I change the system time through the Adjust time/date then the APIS such as GetCurrentTime will return the changed System time.
What I want is that I want the correct time based on the time stored in BIOS or somewhere else which is intransient to the change in system time by the User.
Thanks in Advance.
Samir Sood
|
|
|
|
|
So you're suggesting that changing time in Windows doesn't change BIOS time?
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
changing the clock in windows does change the bios time..
i think what he may be asking is if it is 9:35.. and 5 minutes later someone sets the clock to 9:36, how can he tell 5 minutes went by instead of 1..
is that what your asking? if so i would think you would have to monitor the time at a constant rate.. like have a thread that checks the clock every 30 seconds.. this 30 secods would be based of the speed of the system clock..
-dz
|
|
|
|
|
Yes It does change the BIOS time . But is there anything in the BIOS which stores how many clock ticks have passed since it was manufactured then relatively we can get the current time is that so ?
Please reply t it
Samir Sood
|
|
|
|
|
May GetTickCount() solve the problem ? Do you only need a base time ?
~RaGE();
|
|
|
|
|
SamirSood wrote:
But is there anything in the BIOS which stores how many clock ticks have passed since it was manufactured
No there is not.
John
|
|
|
|
|
SamirSood wrote:
Is there any Function in MFC through which i can get the bios time.
No.
So, how is Win16-land nowadays?
|
|
|
|
|
Guys,I have got few problems with classes.Could you help in most of these?
I have a few custom classes ,some deriving from MFC and others just generic classes.I want to convert them all into dll.I know how to declare and use functions from dll but donot know to create them with classes.
How to create them?
Also,how can I make my custom classes show in the class wizard?
Thirdly,some of these classes are embedded in others and there is a final class that is derived from one of the classes.In terms of memory and other things,is MFC container reliable or is STL container reliable to hold the final class.
Lastly,does mixing STL and MFC cause any exceptions?Is it good to mix them?
That's it!!!Waiting.
|
|
|
|
|
To export classes from .dll, you need to mark them as __declspec(dllexport). To import, you'll need __declspec(dllimport). Since the specifiers go to .h files, you'll need a way to mark them as exported when compiling .dll, and imported when using .dll in other project. This can be easily done with preprocessor:
#if BUILDING_MY_DLL
#define EXPORTED __declspec(dllexport)
#else
#define EXPORTED __declspec(dllimport)
#endif
class EXPORTED MyClass
{
};
I'm usually inserting #if/#endif stuff in special .h file included before any exported class declaration.
BUILDING_MY_DLL should be defined in Project Settings, C++ category, Preprocessor section. Of course, it cannot be defined when you're just using .dll in other project.
Brendan O`Connor wrote:
Lastly,does mixing STL and MFC cause any exceptions?Is it good to mix them?
You can mix them. Is it good? It depends who you'll ask. If it works for you, go with it.
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Brendan O`Connor wrote:
Lastly,does mixing STL and MFC cause any exceptions?Is it good to mix them?
Since the other questions have been answered, I will add a little tidbit to your last question. Since you are talking about exposing/exporting classes from DLLs, you should be aware that exposing/exporting STL collections across DLL boundaries may cause you problems, due to the way that (some) STL classes use static members.
These STL classes that will have problems (as well as some workarounds) are detailed in the MSDN Knowledge Base.
Note that under some situations, the collections will seem to work fine for a while, and then may just start to fail for no obvious reason. Because of that simple fact, never assume that "it works" is a reason to beleve that "it works well", or "it's correct".
(IOW, never "go with" something just because "it works", unless you can explain why it works.)
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
(Try Check Favorites Sometime!)
|
|
|
|
|
James R. Twine wrote:
IOW, never "go with" something just because "it works", unless you can explain why it works
How many users of MFC and STL can explain how they work?
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Tomasz Sowinski wrote:
How many users of MFC and STL can explain how they work?
I believe you should read my comments again; I wrote: "unless you can explain why it works". Why something works is much different than How something works. For example, I can briefly explain why a plane is a better choice for getting to Japan than a car is, without having to get into properties of lift or how an piston-based ICE works.
And, all of the genuinely competent developers that I know can explain how MFC's CWnd -based classes work, how the handle lookups are done, the situations when CWnd::GetDlgItem(...) will return a pointer to a "real" object, and when it will just return a pointer to a temporary CTempWnd object instead, why some care needs to be taken when using these classes across threads, etc, which covers the how quite nicely.
I would have to guess that most of the people answering questions here could do the same as well, or at least know their limitations, otherwise they risk giving out incorrect information to others... It would be very depressing to find out that this was not true.
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
(Try Check Favorites Sometime!)
|
|
|
|
|
Did you have any further issues?
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
(Try Check Favorites Sometime!)
|
|
|
|
|
No - you've made your point clear.
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|