mirror of
https://github.com/reactos/reactos.git
synced 2024-11-27 05:23:33 +08:00
[MSUTB][SDK] Add Language Bar dialogs (#6422)
Supporting Language Bar... JIRA issue: CORE-19363 - Add IDD_CLOSELANGBAR and IDD_MINIMIZELANGBAR resource dialogs. - Implement CUTBLangBarDlg class. - Implement CUTBCloseLangBarDlg and CUTBMinimizeLangBarDlg classes.
This commit is contained in:
parent
1001b59a06
commit
934cd46df5
@ -19,3 +19,24 @@ BEGIN
|
||||
IDS_MENUWND "Menu Window"
|
||||
IDS_LEFTCLICK "Left Click"
|
||||
END
|
||||
|
||||
IDD_CLOSELANGBAR DIALOGEX 0, 0, 200, 105
|
||||
CAPTION "Language Bar"
|
||||
STYLE WS_POPUPWINDOW | WS_CAPTION | DS_MODALFRAME
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
LTEXT "You have closed Language Bar.\r\n\r\nTo use Language Bar later, check ""Show Language Bar on the desktop"" in Language Bar Settings dialog, which you can find within Regional and Language Options control panel.", -1, 5, 5, 190, 60
|
||||
AUTOCHECKBOX "&Don't show me this message again", IDC_CLOSELANGBAR_CHECK, 5, 70, 145, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 80, 85, 55, 15
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 140, 85, 55, 15
|
||||
}
|
||||
|
||||
IDD_MINIMIZELANGBAR DIALOGEX 0, 0, 205, 84
|
||||
CAPTION "Language Bar"
|
||||
STYLE WS_POPUPWINDOW | WS_CAPTION | DS_MODALFRAME
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
LTEXT "You have minimized Language Bar. To restore it, just click Language Bar icon (near the clock) and choose ""Restore Language Bar"" from the pop-up menu.", -1, 5, 5, 190, 50
|
||||
AUTOCHECKBOX "Don't show me this message again", IDC_MINIMIZELANGBAR_CHECK, 5, 65, 125, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 140, 65, 60, 15
|
||||
}
|
||||
|
@ -37,6 +37,68 @@ class CUTBMenuItem;
|
||||
|
||||
/***********************************************************************/
|
||||
|
||||
class CUTBLangBarDlg
|
||||
{
|
||||
protected:
|
||||
LPTSTR m_pszDialogName;
|
||||
LONG m_cRefs;
|
||||
|
||||
public:
|
||||
CUTBLangBarDlg() { }
|
||||
virtual ~CUTBLangBarDlg() { }
|
||||
|
||||
static CUTBLangBarDlg *GetThis(HWND hDlg);
|
||||
static void SetThis(HWND hDlg, CUTBLangBarDlg *pThis);
|
||||
static DWORD WINAPI s_ThreadProc(LPVOID pParam);
|
||||
static INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
BOOL StartThread();
|
||||
LONG _Release();
|
||||
|
||||
STDMETHOD_(BOOL, DoModal)(HWND hDlg) = 0;
|
||||
STDMETHOD_(BOOL, OnCommand)(HWND hDlg, WPARAM wParam, LPARAM lParam) = 0;
|
||||
STDMETHOD_(BOOL, IsDlgShown)() = 0;
|
||||
STDMETHOD_(void, SetDlgShown)(BOOL bShown) = 0;
|
||||
STDMETHOD_(BOOL, ThreadProc)();
|
||||
};
|
||||
|
||||
/***********************************************************************/
|
||||
|
||||
class CUTBCloseLangBarDlg : public CUTBLangBarDlg
|
||||
{
|
||||
public:
|
||||
CUTBCloseLangBarDlg();
|
||||
|
||||
static BOOL s_bIsDlgShown;
|
||||
|
||||
STDMETHOD_(BOOL, DoModal)(HWND hDlg) override;
|
||||
STDMETHOD_(BOOL, OnCommand)(HWND hDlg, WPARAM wParam, LPARAM lParam) override;
|
||||
STDMETHOD_(BOOL, IsDlgShown)() override;
|
||||
STDMETHOD_(void, SetDlgShown)(BOOL bShown) override;
|
||||
};
|
||||
|
||||
BOOL CUTBCloseLangBarDlg::s_bIsDlgShown = FALSE;
|
||||
|
||||
/***********************************************************************/
|
||||
|
||||
class CUTBMinimizeLangBarDlg : public CUTBLangBarDlg
|
||||
{
|
||||
public:
|
||||
CUTBMinimizeLangBarDlg();
|
||||
|
||||
static BOOL s_bIsDlgShown;
|
||||
|
||||
STDMETHOD_(BOOL, DoModal)(HWND hDlg) override;
|
||||
STDMETHOD_(BOOL, OnCommand)(HWND hDlg, WPARAM wParam, LPARAM lParam) override;
|
||||
STDMETHOD_(BOOL, IsDlgShown)() override;
|
||||
STDMETHOD_(void, SetDlgShown)(BOOL bShown) override;
|
||||
STDMETHOD_(BOOL, ThreadProc)() override;
|
||||
};
|
||||
|
||||
BOOL CUTBMinimizeLangBarDlg::s_bIsDlgShown = FALSE;
|
||||
|
||||
/***********************************************************************/
|
||||
|
||||
class CCicLibMenu : public ITfMenu
|
||||
{
|
||||
protected:
|
||||
@ -344,6 +406,221 @@ protected:
|
||||
STDMETHOD_(LRESULT, OnDelayMsg)(LPARAM lParam) { return 0; };
|
||||
};
|
||||
|
||||
/***********************************************************************
|
||||
* CUTBLangBarDlg
|
||||
*/
|
||||
|
||||
CUTBLangBarDlg *CUTBLangBarDlg::GetThis(HWND hDlg)
|
||||
{
|
||||
return (CUTBLangBarDlg*)::GetWindowLongPtr(hDlg, DWLP_USER);
|
||||
}
|
||||
|
||||
void CUTBLangBarDlg::SetThis(HWND hDlg, CUTBLangBarDlg *pThis)
|
||||
{
|
||||
::SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)pThis);
|
||||
}
|
||||
|
||||
DWORD WINAPI CUTBLangBarDlg::s_ThreadProc(LPVOID pParam)
|
||||
{
|
||||
return ((CUTBLangBarDlg *)pParam)->ThreadProc();
|
||||
}
|
||||
|
||||
BOOL CUTBLangBarDlg::StartThread()
|
||||
{
|
||||
if (IsDlgShown())
|
||||
return FALSE;
|
||||
|
||||
SetDlgShown(TRUE);
|
||||
|
||||
DWORD dwThreadId;
|
||||
HANDLE hThread = ::CreateThread(NULL, 0, s_ThreadProc, this, 0, &dwThreadId);
|
||||
if (!hThread)
|
||||
{
|
||||
SetDlgShown(FALSE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
++m_cRefs;
|
||||
::CloseHandle(hThread);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
LONG CUTBLangBarDlg::_Release()
|
||||
{
|
||||
if (--m_cRefs == 0)
|
||||
{
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
return m_cRefs;
|
||||
}
|
||||
|
||||
STDMETHODIMP_(BOOL) CUTBLangBarDlg::ThreadProc()
|
||||
{
|
||||
extern HINSTANCE g_hInst;
|
||||
::DialogBoxParam(g_hInst, m_pszDialogName, NULL, DlgProc, (LPARAM)this);
|
||||
SetDlgShown(FALSE);
|
||||
_Release();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK
|
||||
CUTBLangBarDlg::DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if (uMsg == WM_INITDIALOG)
|
||||
{
|
||||
SetThis(hDlg, (CUTBLangBarDlg *)lParam);
|
||||
::ShowWindow(hDlg, SW_RESTORE);
|
||||
::UpdateWindow(hDlg);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (uMsg == WM_COMMAND)
|
||||
{
|
||||
CUTBLangBarDlg *pThis = CUTBLangBarDlg::GetThis(hDlg);
|
||||
pThis->OnCommand(hDlg, wParam, lParam);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* CUTBCloseLangBarDlg
|
||||
*/
|
||||
|
||||
CUTBCloseLangBarDlg::CUTBCloseLangBarDlg()
|
||||
{
|
||||
m_cRefs = 1;
|
||||
m_pszDialogName = MAKEINTRESOURCE(IDD_CLOSELANGBAR);
|
||||
}
|
||||
|
||||
STDMETHODIMP_(BOOL) CUTBCloseLangBarDlg::DoModal(HWND hDlg)
|
||||
{
|
||||
CicRegKey regKey;
|
||||
LSTATUS error;
|
||||
DWORD dwValue = FALSE;
|
||||
error = regKey.Open(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\CTF\\MSUTB\\"));
|
||||
if (error == ERROR_SUCCESS)
|
||||
regKey.QueryDword(TEXT("DontShowCloseLangBarDlg"), &dwValue);
|
||||
|
||||
if (dwValue)
|
||||
return FALSE;
|
||||
|
||||
StartThread();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/// @unimplemented
|
||||
void DoCloseLangbar(void)
|
||||
{
|
||||
//FIXME
|
||||
}
|
||||
|
||||
STDMETHODIMP_(BOOL) CUTBCloseLangBarDlg::OnCommand(HWND hDlg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDOK:
|
||||
DoCloseLangbar();
|
||||
if (::IsDlgButtonChecked(hDlg, IDC_CLOSELANGBAR_CHECK))
|
||||
{
|
||||
CicRegKey regKey;
|
||||
LSTATUS error;
|
||||
error = regKey.Create(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\CTF\\MSUTB\\"));
|
||||
if (error == ERROR_SUCCESS)
|
||||
regKey.SetDword(TEXT("DontShowCloseLangBarDlg"), TRUE);
|
||||
}
|
||||
::EndDialog(hDlg, TRUE);
|
||||
break;
|
||||
|
||||
case IDCANCEL:
|
||||
::EndDialog(hDlg, FALSE);
|
||||
break;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
STDMETHODIMP_(BOOL) CUTBCloseLangBarDlg::IsDlgShown()
|
||||
{
|
||||
return s_bIsDlgShown;
|
||||
}
|
||||
|
||||
STDMETHODIMP_(void) CUTBCloseLangBarDlg::SetDlgShown(BOOL bShown)
|
||||
{
|
||||
s_bIsDlgShown = bShown;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* CUTBMinimizeLangBarDlg
|
||||
*/
|
||||
|
||||
CUTBMinimizeLangBarDlg::CUTBMinimizeLangBarDlg()
|
||||
{
|
||||
m_cRefs = 1;
|
||||
m_pszDialogName = MAKEINTRESOURCE(IDD_MINIMIZELANGBAR);
|
||||
}
|
||||
|
||||
STDMETHODIMP_(BOOL) CUTBMinimizeLangBarDlg::DoModal(HWND hDlg)
|
||||
{
|
||||
CicRegKey regKey;
|
||||
LSTATUS error;
|
||||
|
||||
DWORD dwValue = FALSE;
|
||||
error = regKey.Open(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\CTF\\MSUTB\\"));
|
||||
if (error == ERROR_SUCCESS)
|
||||
regKey.QueryDword(TEXT("DontShowMinimizeLangBarDlg"), &dwValue);
|
||||
|
||||
if (dwValue)
|
||||
return FALSE;
|
||||
|
||||
StartThread();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
STDMETHODIMP_(BOOL) CUTBMinimizeLangBarDlg::OnCommand(HWND hDlg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDOK:
|
||||
if (::IsDlgButtonChecked(hDlg, IDC_MINIMIZELANGBAR_CHECK))
|
||||
{
|
||||
LSTATUS error;
|
||||
CicRegKey regKey;
|
||||
error = regKey.Create(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\CTF\\MSUTB\\"));
|
||||
if (error == ERROR_SUCCESS)
|
||||
regKey.SetDword(TEXT("DontShowMinimizeLangBarDlg"), TRUE);
|
||||
}
|
||||
::EndDialog(hDlg, TRUE);
|
||||
break;
|
||||
case IDCANCEL:
|
||||
::EndDialog(hDlg, FALSE);
|
||||
break;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
STDMETHODIMP_(BOOL) CUTBMinimizeLangBarDlg::IsDlgShown()
|
||||
{
|
||||
return s_bIsDlgShown;
|
||||
}
|
||||
|
||||
STDMETHODIMP_(void) CUTBMinimizeLangBarDlg::SetDlgShown(BOOL bShown)
|
||||
{
|
||||
s_bIsDlgShown = bShown;
|
||||
}
|
||||
|
||||
STDMETHODIMP_(BOOL) CUTBMinimizeLangBarDlg::ThreadProc()
|
||||
{
|
||||
::Sleep(700);
|
||||
return CUTBLangBarDlg::ThreadProc();
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* CCicLibMenu
|
||||
*/
|
||||
|
@ -27,6 +27,7 @@
|
||||
#undef STATUS_NO_MEMORY
|
||||
|
||||
#include "resource.h"
|
||||
#include <cicero/cicreg.h>
|
||||
#include <cicero/cicuif.h>
|
||||
|
||||
#include <wine/debug.h>
|
||||
|
@ -9,3 +9,9 @@
|
||||
#define IDS_NO 106
|
||||
#define IDS_MENUWND 322
|
||||
#define IDS_LEFTCLICK 323
|
||||
|
||||
#define IDD_CLOSELANGBAR 1001
|
||||
#define IDD_MINIMIZELANGBAR 1004
|
||||
|
||||
#define IDC_CLOSELANGBAR_CHECK 1002
|
||||
#define IDC_MINIMIZELANGBAR_CHECK 1002
|
||||
|
@ -5180,7 +5180,7 @@ CUIFBalloonWindow::AddButton(UINT nCommandId)
|
||||
#ifdef IDS_OK
|
||||
extern HINSTANCE g_hInst;
|
||||
WCHAR szText[64];
|
||||
::LoadStringW(g_hInst, IDS_OK + nCommandId, szText, _countof(szText));
|
||||
::LoadStringW(g_hInst, IDS_OK + (nCommandId - IDOK), szText, _countof(szText));
|
||||
pszText = szText;
|
||||
#else
|
||||
switch (nCommandId)
|
||||
|
Loading…
Reference in New Issue
Block a user