Re: CFileDialog, disable "What's This?" menu
-
Hello, Does anyone know of a way to disable the "What's This?" menu (appears after right-clicking on certain items)? I would like to disable it on my "Save As" dialog. I've created a class for the dialog and it is inherited from the CFileDialog class. I have looked at many places on the internet, but I'm unable to find what I need. Any ideas on this would be appreciated.
Regards, Mike
-
Hello, Does anyone know of a way to disable the "What's This?" menu (appears after right-clicking on certain items)? I would like to disable it on my "Save As" dialog. I've created a class for the dialog and it is inherited from the CFileDialog class. I have looked at many places on the internet, but I'm unable to find what I need. Any ideas on this would be appreciated.
Regards, Mike
Sounds like you need to remove the
WS_EX_CONTEXTHELP
style."Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
Sounds like you need to remove the
WS_EX_CONTEXTHELP
style."Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
In the OnInitDialog function of my class derived from CFileDialog, I have the following:
GetParent ()->ModifyStyleEx(WS_EX_CONTEXTHELP, 0);
The only difference I noticed was that the question mark button, which is normally located to the left of the close button (the X), disappeared. The What's This? is still showing.
Regards, Mike
-
In the OnInitDialog function of my class derived from CFileDialog, I have the following:
GetParent ()->ModifyStyleEx(WS_EX_CONTEXTHELP, 0);
The only difference I noticed was that the question mark button, which is normally located to the left of the close button (the X), disappeared. The What's This? is still showing.
Regards, Mike
I guess I misunderstood what you were after. I do not know of a way of removing that little context menu. I guess you could try hooking the Save As dialog and then intercepting the right-click message.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
I guess I misunderstood what you were after. I do not know of a way of removing that little context menu. I guess you could try hooking the Save As dialog and then intercepting the right-click message.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
// ---------------------------------------------------------------------------------------------- // myfiledialog.h // ---------------------------------------------------------------------------------------------- #pragma once #include "afxdlgs.h" class CMyFileDialog : public CFileDialog { public: CMyFileDialog(void); ~CMyFileDialog(void); virtual BOOL OnInitDialog(); }; // ---------------------------------------------------------------------------------------------- // end myfiledialog.h // ---------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------- // myfiledialog.cpp // ---------------------------------------------------------------------------------------------- #include "stdafx.h" #include "myfiledialog.h" #include "resource.h" CMyFileDialog::CMyFileDialog() : CFileDialog(FALSE,0,0,OFN_EXPLORER|OFN_PATHMUSTEXIST| OFN_HIDEREADONLY|OFN_LONGNAMES|OFN_OVERWRITEPROMPT| OFN_CREATEPROMPT) { } CMyFileDialog::~CMyFileDialog() { } BOOL CMyFileDialog::OnInitDialog() { CFileDialog::OnInitDialog(); GetParent ()->ModifyStyleEx(WS_EX_CONTEXTHELP, 0); return TRUE; // return TRUE unless you set the focus to a control } // ---------------------------------------------------------------------------------------------- // end myfiledialog.cpp // ---------------------------------------------------------------------------------------------- I hope this helps.
Regards, Mike
-
// ---------------------------------------------------------------------------------------------- // myfiledialog.h // ---------------------------------------------------------------------------------------------- #pragma once #include "afxdlgs.h" class CMyFileDialog : public CFileDialog { public: CMyFileDialog(void); ~CMyFileDialog(void); virtual BOOL OnInitDialog(); }; // ---------------------------------------------------------------------------------------------- // end myfiledialog.h // ---------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------- // myfiledialog.cpp // ---------------------------------------------------------------------------------------------- #include "stdafx.h" #include "myfiledialog.h" #include "resource.h" CMyFileDialog::CMyFileDialog() : CFileDialog(FALSE,0,0,OFN_EXPLORER|OFN_PATHMUSTEXIST| OFN_HIDEREADONLY|OFN_LONGNAMES|OFN_OVERWRITEPROMPT| OFN_CREATEPROMPT) { } CMyFileDialog::~CMyFileDialog() { } BOOL CMyFileDialog::OnInitDialog() { CFileDialog::OnInitDialog(); GetParent ()->ModifyStyleEx(WS_EX_CONTEXTHELP, 0); return TRUE; // return TRUE unless you set the focus to a control } // ---------------------------------------------------------------------------------------------- // end myfiledialog.cpp // ---------------------------------------------------------------------------------------------- I hope this helps.
Regards, Mike
Just out of curiosity, why derive a class from
CFileDialog
rather than just create an instance of it?UINT_PTR CALLBACK OFNHookProc( HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam )
{
return 0 or 1;
}CFileDialog fd(FALSE, 0, 0,
OFN_ENABLEHOOK | OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_OVERWRITEPROMPT | OFN_CREATEPROMPT);
fd.m_ofn.lpfnHook = OFNHookProc;
fd.DoModal();"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
Just out of curiosity, why derive a class from
CFileDialog
rather than just create an instance of it?UINT_PTR CALLBACK OFNHookProc( HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam )
{
return 0 or 1;
}CFileDialog fd(FALSE, 0, 0,
OFN_ENABLEHOOK | OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_OVERWRITEPROMPT | OFN_CREATEPROMPT);
fd.m_ofn.lpfnHook = OFNHookProc;
fd.DoModal();"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
The application I'm working with uses a CFileDialog format, except for 2 buttons that have been added to the dialog. This is the reason for deriving from CFileDialog. Anyway, after trying your code, I'm still seeing the "What's This?" menu. When I debug your code, and set a breakpoint in OFNHookProc, the breakpoint is reached several times, but is never reached when I click on a button using the secondary mouse button. When I click on a button using the secondary mouse button, the "What's This?" menu appears. I tried both return values (0 and 1 from function OFNHookProc) with no success.
Regards, Mike
-
The application I'm working with uses a CFileDialog format, except for 2 buttons that have been added to the dialog. This is the reason for deriving from CFileDialog. Anyway, after trying your code, I'm still seeing the "What's This?" menu. When I debug your code, and set a breakpoint in OFNHookProc, the breakpoint is reached several times, but is never reached when I click on a button using the secondary mouse button. When I click on a button using the secondary mouse button, the "What's This?" menu appears. I tried both return values (0 and 1 from function OFNHookProc) with no success.
Regards, Mike
Michael Adamus wrote:
Anyway, after trying your code, I'm still seeing the "What's This?" menu.
I simply provided you a starting point. You'll need to do some research in order to fill in the blanks. There are no guarantees that this will work, but at least you'll have found one more way that doesn't. You can use Spy++ to see the relationships of that dialog. The hook procedure is actually for the child dialog of the main dialog. You can even customize the child dialog by providing your own template.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
Michael Adamus wrote:
Anyway, after trying your code, I'm still seeing the "What's This?" menu.
I simply provided you a starting point. You'll need to do some research in order to fill in the blanks. There are no guarantees that this will work, but at least you'll have found one more way that doesn't. You can use Spy++ to see the relationships of that dialog. The hook procedure is actually for the child dialog of the main dialog. You can even customize the child dialog by providing your own template.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons