|
look @ GetCurrentDirectory for the current directory of the executable
or
GetModuleFilename for the path + filename where the exe resides
|
|
|
|
|
Hi!
To get full exe path use GetCommandLine
Everything should be made as simple as possible, but not simpler [Albert Einstein]
|
|
|
|
|
Is it sure, that it will work? In docs stays that the OS _may_ prepend a fully qualified path, if wasn't specified as a CreateProcess parameter. For that reason I'm afraid to use it and prefer the GetModuleFilename .
|
|
|
|
|
try this, its working for me
Full Path and Filename:
=======================
CString strArgument;
strArgument = __argv[0];
Set the default path:
====================
CString strArgument;
strArgument = __argv[0];
int i;
for(i=strArgument.GetLength()-1; i>0; i--)
{
if(strArgument.GetAt(i) == '\\') {
strArgument.SetAt(i+1, 0x00);
break;
}
}
SetCurrentDirectory(strArgument);
|
|
|
|
|
yeah, that I can simply imagine, but the question is, if there's always a full path supplied - e.g. if you run program placed in a path, does he receive the full path, if someone runs it as CreateProcess , if it will also have such a path...
For that reason I think the GetModuleFileName is a better choice
|
|
|
|
|
You will get always the full path, just try it !
|
|
|
|
|
HI!
I have two expert questions:
1. Is it possible to add new (own) End Styles of arrows in the Format AutoShape window (Colors and Lines) drop down box?
2. How is it possible to access the object structure in PowerPoint. I mean by this accessing the objects that are created on the given slide. I would like to identify the selected object, maybe check its category (arrow, text, etc), take and pass it to my program. Then put the changed object back into the slide instead of the selected object. Off course I will ensure the right format. But what format is it?
I am all ears!
gicio
|
|
|
|
|
Hi all,
I am developing an add in for dev studio.
i have a method, which i need to check if any workspace is open
i use the following code:
IGenericProject* pProject = NULL;
HRESULT hr = m_pApplication->get_ActiveProject((IDispatch**)&pProject);
if (FAILED(hr))
{
ATLASSERT(FALSE);
return hr;
}
if (NULL == pProject)
{
::MessageBox(NULL,
_T("Please open a workspace!"),
_T("My Application"),
MB_OK | MB_ICONINFORMATION);
return S_OK;
}
the trouble is i am falling on the ATLASSERT(FALSE) with reason of HRESULT
-2147418113 which means (using error lookup) "Catastrophic failure"
can any1 help here?
thanks in advanced
Yaron Nir
Ask not what your application can do for you,
Ask what you can do for your application
|
|
|
|
|
That's E_UNEXPECTED, which may well mean "I wasn't expecting you to ask for the active project".
Do you see this error only when there is no workspace open, or all the time?
If the first, then simply remove the "if (FAILED(hr)" block.
Incidentally, I hope that after your "if (NULL == pProject)" block, you're doing
pProject->Release() to keep the reference counts straight.
Steve S
[This signature space available for rent]
|
|
|
|
|
thanks for the reply...
I've checked and it only happens if no project was loaded...so all i have to do is to remove the ATLASSERT and finito....
about the Release() - of course
thanks again
Yaron
Ask not what your application can do for you,
Ask what you can do for your application
|
|
|
|
|
I hope this is a dumb question. I want a CEdit control that looks after itself. In other words I don't want the parent Wnd to have to handle keyboard, mouse etc. processing.
A CEdit has to have a parent wnd, so I can't just set this to NULL or the Desktop.
I've got a CEdit derived class and I've tried overiding PreTranslateMessage() and return TRUE/FALSE for WM_LBUTTONDOWN etc. but they still go to the parent window. I haven't tried msg reflection - maybe that's the answer. I know this should be simple and its driving me nuts.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Neville Franks wrote:
I haven't tried msg reflection - maybe that's the answer
Yes, it should.
I have a CEdit-derived control which fixes the large hole MS left with its control:
To have a control that accepts "-1.2" but not "1.2.3.4" or even "Blah".
Simply a control for entering numbers!
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
jhwurmbach wrote:
Yes, it should.
Thanks. I can't see how to reflect WM_LBUTTONDOWN, WM_KEYDOWN et.all. It looks like you can only reflect WM_COMMAND and WM_NOTIFY msgs, plus a few others.
Maybe I should use the Win API directly and not MFC CEdit.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
You shouldn't be seeing those messages in the parent window, I'd have thought they would appear to CEdit (or derived) but not the parent, since they'll be converted to EN_CHANGE etc. by the control.
Steve S
[This signature space available for rent]
|
|
|
|
|
EN_CHANGE is a notification which reflection will handle. My problem is with Mouse and Kbd commands such WM_LBUTTONDOWN, WM_KEYDOWN which are going to my derived CEdit and its parent window. I don't want the latter.
Maybe I need to Subclass the edit control.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Erm, so are you saying that if you left-click in an edit window, a WM_LBUTTONDOWN arrives at your main window? I wouldn't expect that behaviour...
Steve S
|
|
|
|
|
Steve S wrote:
Erm, so are you saying that if you left-click in an edit window, a WM_LBUTTONDOWN arrives at your main window?
Yep.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Bizarre. I wouldn't expect that this would happen, since the WM_LBUTTONDOWN is sent to the edit control. The default processing will be for it to start handling a potential selection, I'd have thought, and it would then eat the message.
Have you tried using SPY++ on the edit window and/or the parent window to verify that it's not an odd interaction due to PreTranslate or anything strange?
(Apologies for what might seem like trying to teach egg-sucking to an aged matriarchal relative)
Steve S
|
|
|
|
|
Tried Spy++ and the parent is getting WM_LBUTTONDOWN etc. I also noticed a WM_PARENTNOTIFY sent to the parent, which may shed some light on this.
From the Docs:
"All child windows, except those that have the WS_EX_NOPARENTNOTIFY extended window style, send this message to their parent windows. By default, child windows in a dialog box have the WS_EX_NOPARENTNOTIFY style, unless the CreateWindowEx function is called to create the child window without this style."
My (derived) edit control is created dynamically, and isn't a child of a dialog. I'll try setting WS_EX_NOPARENTNOTIFY and see what happens.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Neville Franks wrote:
My (derived) edit control is created dynamically, and isn't a child of a dialog. I'll try setting WS_EX_NOPARENTNOTIFY and see what happens.
Made no difference!!
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Neville Franks wrote:
Tried Spy++ and the parent is getting WM_LBUTTONDOWN etc. I also noticed a WM_PARENTNOTIFY sent to the parent, which may shed some light on this.
The parent is getting WM_LBUTTONDOWN ? Do you have the WS_EX_TRANSPARENT style set? That is the only case I can think of where the parent will get mouse messages from a control, unless the parent has captured the mouse.
As for WS_EX_NOPARENTNOTIFY , I noticed in your other message you said it didn't work. Did you use ModifyStyleEx() to set it, or pass it to CreateEx() ? I'm not sure if that particular style can be set dynamically.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Ryan Binns wrote:
Do you have the WS_EX_TRANSPARENT style set?
Nope. The mouse is captured in the parent on WM_LBUTTONDOWN and released in WM_LBUTTONUP, which is when I Show the previously created CEdit window.
Ryan Binns wrote:
Did you use ModifyStyleEx() to set it, or pass it to CreateEx()?
ModifyStyleEx( 0, WS_EX_NOPARENTNOTIFY, 0 );
I don't think this the problem though as it doesn't affect WK_KEYxxx msgs, which are also being sent to the parent.
I think the problem is that the parent isn't a Dialog and doesn't have the usual dialog message handling. I think I'll ditch CEdit and use the good old fashioned Win API to create an EDIT window.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Just tried CreateEx( WS_EX_NOPARENTNOTIFY, ... ) and it made no difference.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Neville Franks wrote:
I can't see how to reflect WM_LBUTTONDOWN, WM_KEYDOWN et.all.
Why do you need to?
ON_CONTROL_REFLECT_EX(EN_CHANGE, OnChange) should allow you to handle every case the CEdit needs to change. (Im not sure from the top of my head what about paste)
You can return TRUE to disallow the parent to handle EN_CHANGE.
As a sidenote, it escapes my why this is called 'reflection', as it obviously happens *before* the parent gets to see the message.
If you need a analogue from the realm of optics, I would say that you can set the control to be 'opaque' for the message.
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
How about creating a CEdEdit class which is nothing but a CWnd that hosts a CEdit ?
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|