Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
81
Src/Plugins/General/gen_ml/skinnedmenu.cpp
Normal file
81
Src/Plugins/General/gen_ml/skinnedmenu.cpp
Normal file
|
@ -0,0 +1,81 @@
|
|||
#include "main.h"
|
||||
#include "./skinnedmenu.h"
|
||||
#include "./skinnedmenuwnd.h"
|
||||
|
||||
|
||||
SkinnedMenu::SkinnedMenu()
|
||||
{
|
||||
hwndOwner = NULL;
|
||||
skinStyle = SMS_NORMAL;
|
||||
hmlil = NULL;
|
||||
width = 0;
|
||||
|
||||
if (FAILED(SkinnedMenuThreadInfo::GetInstance(TRUE, &threadInfo)))
|
||||
threadInfo = NULL;
|
||||
}
|
||||
|
||||
SkinnedMenu::~SkinnedMenu(void)
|
||||
{
|
||||
if (NULL != threadInfo)
|
||||
{
|
||||
threadInfo->RemoveAttachHook(this);
|
||||
threadInfo->Release();
|
||||
}
|
||||
}
|
||||
|
||||
HWND SkinnedMenu::WindowFromHandle(HMENU menu)
|
||||
{
|
||||
HWND hwnd;
|
||||
SkinnedMenuThreadInfo *threadInfo;
|
||||
|
||||
if (S_OK != SkinnedMenuThreadInfo::GetInstance(FALSE, &threadInfo))
|
||||
return NULL;
|
||||
|
||||
hwnd = threadInfo->FindMenuWindow(menu);
|
||||
|
||||
threadInfo->Release();
|
||||
|
||||
return hwnd;
|
||||
}
|
||||
|
||||
BOOL SkinnedMenu::InitializeHook(HWND hwndOwner, UINT skinStyle, HMLIMGLST hmlil, INT width, MENUCUSTOMIZEPROC _customProc, ULONG_PTR customParam)
|
||||
{
|
||||
if (NULL == threadInfo)
|
||||
return FALSE;
|
||||
|
||||
if (FALSE != threadInfo->IsAttachHookActive())
|
||||
return FALSE;
|
||||
|
||||
this->hwndOwner = hwndOwner;
|
||||
this->hmlil = hmlil;
|
||||
this->width = width;
|
||||
this->skinStyle = skinStyle;
|
||||
this->customProc = _customProc;
|
||||
this->customParam = customParam;
|
||||
|
||||
return threadInfo->SetAttachHook(this);
|
||||
}
|
||||
|
||||
BOOL SkinnedMenu::TrackMenuPopupEx(HMENU hmenu, UINT fuFlags, INT x, INT y, HWND hwnd, LPTPMPARAMS lptpm, UINT skinStyle,
|
||||
HMLIMGLST hmlil, INT width, MENUCUSTOMIZEPROC customProc, ULONG_PTR customParam)
|
||||
{
|
||||
if (NULL == hwnd ||
|
||||
!InitializeHook(hwnd, skinStyle, hmlil, width, customProc, customParam))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TrackPopupMenuEx(hmenu, fuFlags, x, y, hwnd, lptpm);
|
||||
}
|
||||
|
||||
BOOL SkinnedMenu::AttachToHwnd(HWND hwndMenu)
|
||||
{
|
||||
SkinnedMenuWnd *psw = new SkinnedMenuWnd(skinStyle, hmlil, width, customProc, customParam);
|
||||
if (!psw || !psw->Attach(hwndMenu, hwndOwner))
|
||||
{
|
||||
delete(psw);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue