Re: How to make CFileDialog, MessageBox etc ..Layered ?
On Oct 7, 11:27 pm, Mikel <mikel.l...@gmail.com> wrote:
On Oct 8, 7:33 am, Matrixinline <anup.kata...@gmail.com> wrote:
Hi All,
Can you please tell me how to make CFileDialog, MessageBox, Tooltips
layered.
I tried to extend the CFileDialog and in the OnInitDialogMethod I have
written following line but it did not changed anything for it.
BOOL bTrue = ModifyStyleEx(0, WS_EX_LAYERED);
SetLayeredWindowAttributes(0,20,LWA_ALPHA);
Please let me know how to make the dialog layered.
Thanks
Anup
Well, I've never done this, but inhttp://msdn.microsoft.com/en-us/library=
/ms997507.aspx
you can read:
"For any layering to take place, the WS_EX_LAYERED bit needs to be
set, either at window creation time or by calling SetWindowLong with
GWL_EXSTYLE"
And gives an example:
// Set WS_EX_LAYERED on this window
SetWindowLong(hwnd, GWL_EXSTYLE,
GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
// Make this window 70% alpha
SetLayeredWindowAttributes(hwnd, 0, (255 * 70) / 100, LWA_ALPHA);
So it seems that you have to use SetWindowLong, not ModifyStyleEx, or
create it as layered. But as I said at the start, I've never done this.
No even it did not helped me.
Please let me know if I am doing wrong
Here is the code
class CMySaveAsDialog : public CFileDialog
{
public:
CMySaveAsDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL,
DWORD dwSize = 0
):CFileDialog(bOpenFileDialog,
lpszDefExt,
lpszFileName ,
dwFlags ,
lpszFilter ,
pParentWnd ,
dwSize )
{};
virtual BOOL OnInitDialog()
{
CFileDialog::OnInitDialog();
BOOL bTrue = ModifyStyleEx(WS_EX_TRANSPARENT, WS_EX_LAYERED);
SetLayeredWindowAttributes(0,20,LWA_ALPHA);
SetWindowLong(this->m_hWnd, GWL_EXSTYLE, GetWindowLong(this->m_hWnd,
GWL_EXSTYLE) | WS_EX_LAYERED);
// Make this window 70% alpha
SetLayeredWindowAttributes( 0, 10, LWA_ALPHA);
RedrawWindow( NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_FRAME |
RDW_ALLCHILDREN);
return TRUE;
};
};