mirror of
https://github.com/reactos/reactos.git
synced 2024-10-20 08:01:05 +00:00
- Show the current cursor scheme upon page initialization.
- Update the cursor list and the cursor preview when a new cursor scheme is selected. - Update the cursor preview when another cursor is selected. svn path=/trunk/; revision=26399
This commit is contained in:
parent
8288717157
commit
68e9e8da8f
|
@ -515,6 +515,10 @@ EnumerateCursorSchemes(HWND hwndDlg)
|
||||||
HWND hDlgCtrl;
|
HWND hDlgCtrl;
|
||||||
LRESULT lResult;
|
LRESULT lResult;
|
||||||
BOOL ProcessedHKLM = FALSE;
|
BOOL ProcessedHKLM = FALSE;
|
||||||
|
TCHAR szCurrentScheme[MAX_PATH];
|
||||||
|
DWORD dwCurrentScheme;
|
||||||
|
INT nSchemeIndex;
|
||||||
|
INT i, nCount;
|
||||||
|
|
||||||
if (RegOpenCurrentUser(KEY_READ, &hCuKey) != ERROR_SUCCESS)
|
if (RegOpenCurrentUser(KEY_READ, &hCuKey) != ERROR_SUCCESS)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -572,23 +576,55 @@ EnumerateCursorSchemes(HWND hwndDlg)
|
||||||
RegCloseKey(hCuCursorKey);
|
RegCloseKey(hCuCursorKey);
|
||||||
RegCloseKey(hCuKey);
|
RegCloseKey(hCuKey);
|
||||||
|
|
||||||
|
/* Add the "(none)" entry */
|
||||||
LoadString(hApplet, IDS_NONE, szSystemScheme, MAX_PATH);
|
LoadString(hApplet, IDS_NONE, szSystemScheme, MAX_PATH);
|
||||||
lResult = SendMessage(hDlgCtrl, CB_ADDSTRING, (WPARAM)0, (LPARAM)szSystemScheme);
|
lResult = SendMessage(hDlgCtrl, CB_ADDSTRING, (WPARAM)0, (LPARAM)szSystemScheme);
|
||||||
SendMessage(hDlgCtrl, CB_SETITEMDATA, (WPARAM)lResult, (LPARAM)NULL);
|
SendMessage(hDlgCtrl, CB_SETITEMDATA, (WPARAM)lResult, (LPARAM)NULL);
|
||||||
SendMessage(hDlgCtrl, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);
|
|
||||||
|
|
||||||
|
/* Get the name of the current cursor scheme */
|
||||||
|
szCurrentScheme[0] = 0;
|
||||||
|
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Control Panel\\Cursors"), 0, KEY_READ, &hCuCursorKey) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
dwCurrentScheme = sizeof(szCurrentScheme) / sizeof(TCHAR);
|
||||||
|
if (RegQueryValueEx(hCuCursorKey, NULL, NULL, NULL, (LPBYTE)szCurrentScheme, &dwCurrentScheme))
|
||||||
|
szCurrentScheme[0] = 0;
|
||||||
|
RegCloseKey(hCuCursorKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
nSchemeIndex = -1;
|
||||||
|
nCount = (INT)SendMessage(hDlgCtrl, CB_GETCOUNT, 0, 0);
|
||||||
|
for (i = 0; i < nCount; i++)
|
||||||
|
{
|
||||||
|
SendMessage(hDlgCtrl, CB_GETLBTEXT, i, (LPARAM)szValueName);
|
||||||
|
|
||||||
|
if (_tcsnicmp(szValueName, szCurrentScheme, _tcslen(szCurrentScheme)) == 0)
|
||||||
|
{
|
||||||
|
nSchemeIndex = (INT)i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nSchemeIndex != -1)
|
||||||
|
SendMessage(hDlgCtrl, CB_SETCURSEL, (WPARAM)nSchemeIndex, (LPARAM)0);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SendMessage(hDlgCtrl, CB_SETCURSEL, (WPARAM)lResult, (LPARAM)0);
|
||||||
|
hDlgCtrl = GetDlgItem(hwndDlg, IDC_BUTTON_DELETE_SCHEME);
|
||||||
|
EnableWindow(hDlgCtrl, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
RefreshCursorList(HWND hwndDlg)
|
RefreshCursorList(HWND hwndDlg, BOOL bInit)
|
||||||
{
|
{
|
||||||
// TCHAR szCursorName[MAX_PATH];
|
// TCHAR szCursorName[MAX_PATH];
|
||||||
// HWND hDlgCtrl;
|
// HWND hDlgCtrl;
|
||||||
// LV_ITEM listItem;
|
// LV_ITEM listItem;
|
||||||
// LV_COLUMN column;
|
// LV_COLUMN column;
|
||||||
INT index = 0, i;
|
INT index = 0, i, nSel;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_LISTVIEW_CURSOR);
|
hDlgCtrl = GetDlgItem(hwndDlg, IDC_LISTVIEW_CURSOR);
|
||||||
|
@ -667,12 +703,21 @@ RefreshCursorList(HWND hwndDlg)
|
||||||
(void)ListView_InsertItem(hDlgCtrl, &listItem);
|
(void)ListView_InsertItem(hDlgCtrl, &listItem);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (bInit)
|
||||||
|
nSel = 0;
|
||||||
|
else
|
||||||
|
nSel = SendDlgItemMessage(hwndDlg, IDC_LISTBOX_CURSOR, LB_GETCURSEL, 0, 0);
|
||||||
|
|
||||||
SendDlgItemMessage(hwndDlg, IDC_LISTBOX_CURSOR, LB_RESETCONTENT, 0, 0);
|
SendDlgItemMessage(hwndDlg, IDC_LISTBOX_CURSOR, LB_RESETCONTENT, 0, 0);
|
||||||
for (index = IDS_ARROW, i = 0; index <= IDS_HAND; index++, i++)
|
for (index = IDS_ARROW, i = 0; index <= IDS_HAND; index++, i++)
|
||||||
{
|
{
|
||||||
LoadString(hApplet, index, g_CursorData[i].szCursorName, MAX_PATH);
|
LoadString(hApplet, index, g_CursorData[i].szCursorName, MAX_PATH);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_LISTBOX_CURSOR, LB_ADDSTRING, 0, (LPARAM)i);
|
SendDlgItemMessage(hwndDlg, IDC_LISTBOX_CURSOR, LB_ADDSTRING, 0, (LPARAM)i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_LISTBOX_CURSOR, LB_SETCURSEL, nSel, 0);
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_IMAGE_CURRENT_CURSOR, STM_SETIMAGE, IMAGE_CURSOR,
|
||||||
|
(LPARAM)g_CursorData[nSel].hCursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -854,18 +899,48 @@ LoadCurrentCursorScheme(LPTSTR lpName, BOOL bSystem)
|
||||||
DestroyCursor(g_CursorData[i].hCursor);
|
DestroyCursor(g_CursorData[i].hCursor);
|
||||||
g_CursorData[i].hCursor = 0;
|
g_CursorData[i].hCursor = 0;
|
||||||
}
|
}
|
||||||
|
g_CursorData[i].szCursorPath[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lpName == NULL)
|
if (lpName == NULL)
|
||||||
{
|
{
|
||||||
for (index = IDS_ARROW, i = 0; index <= IDS_HAND; index++, i++)
|
// for (index = IDS_ARROW, i = 0; index <= IDS_HAND; index++, i++)
|
||||||
{
|
// {
|
||||||
g_CursorData[i].hCursor = LoadCursor(NULL, g_CursorData[i].uDefaultCursorId);
|
// g_CursorData[i].hCursor = LoadCursor(NULL, g_CursorData[i].uDefaultCursorId);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
LPTSTR pStart = lpName;
|
||||||
|
LPTSTR pEnd = pStart;
|
||||||
|
INT nLength;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (pEnd)
|
||||||
|
{
|
||||||
|
pEnd = _tcschr(pStart, _T(','));
|
||||||
|
if (pEnd)
|
||||||
|
nLength = ((INT_PTR)pEnd - (INT_PTR)pStart) / sizeof(TCHAR);
|
||||||
|
else
|
||||||
|
nLength = _tcslen(pStart);
|
||||||
|
|
||||||
|
_tcsncpy(g_CursorData[i].szCursorPath, pStart, nLength);
|
||||||
|
g_CursorData[i].szCursorPath[nLength] = 0;
|
||||||
|
|
||||||
|
pStart = pStart + (nLength + 1);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for (index = IDS_ARROW, i = 0; index <= IDS_HAND; index++, i++)
|
||||||
|
{
|
||||||
|
if (g_CursorData[i].szCursorPath[0] == 0)
|
||||||
|
g_CursorData[i].hCursor = LoadCursor(NULL, g_CursorData[i].uDefaultCursorId);
|
||||||
|
else
|
||||||
|
g_CursorData[i].hCursor = (HCURSOR)LoadImage(NULL, g_CursorData[i].szCursorPath,
|
||||||
|
IMAGE_CURSOR, 0, 0,
|
||||||
|
LR_LOADFROMFILE | LR_DEFAULTSIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -950,8 +1025,8 @@ PointerProc(IN HWND hwndDlg,
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pPointerData);
|
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pPointerData);
|
||||||
|
|
||||||
EnumerateCursorSchemes(hwndDlg);
|
EnumerateCursorSchemes(hwndDlg);
|
||||||
RefreshCursorList(hwndDlg);
|
LoadCurrentCursorScheme(NULL, FALSE);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_LISTBOX_CURSOR, LB_SETCURSEL, 0, 0);
|
RefreshCursorList(hwndDlg, TRUE);
|
||||||
|
|
||||||
/* Get drop shadow setting */
|
/* Get drop shadow setting */
|
||||||
if (!SystemParametersInfo(SPI_GETDROPSHADOW, 0, &pPointerData->bDropShadow, 0))
|
if (!SystemParametersInfo(SPI_GETDROPSHADOW, 0, &pPointerData->bDropShadow, 0))
|
||||||
|
@ -1005,31 +1080,29 @@ PointerProc(IN HWND hwndDlg,
|
||||||
switch (LOWORD(wParam))
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
case IDC_COMBO_CURSOR_SCHEME:
|
case IDC_COMBO_CURSOR_SCHEME:
|
||||||
switch(HIWORD(wParam))
|
if (HIWORD(wParam) == CBN_SELENDOK)
|
||||||
{
|
{
|
||||||
case CBN_SELENDOK:
|
BOOL bEnable;
|
||||||
{
|
LPTSTR lpName;
|
||||||
BOOL bEnable;
|
|
||||||
LPTSTR lpName;
|
|
||||||
|
|
||||||
wParam = SendMessage((HWND)lParam, CB_GETCURSEL, 0, 0);
|
wParam = SendMessage((HWND)lParam, CB_GETCURSEL, 0, 0);
|
||||||
if(wParam == CB_ERR)
|
if(wParam == CB_ERR)
|
||||||
break;
|
|
||||||
SendMessage((HWND)lParam, CB_GETLBTEXT, wParam, (LPARAM)buffer);
|
|
||||||
LoadString(hApplet, IDS_SYSTEM_SCHEME, szSystemScheme, MAX_PATH);
|
|
||||||
if(_tcsstr(buffer, szSystemScheme) || wParam == 0) //avoid the default scheme can be deleted
|
|
||||||
bEnable = FALSE;
|
|
||||||
else
|
|
||||||
bEnable = TRUE;
|
|
||||||
|
|
||||||
/* delete button */
|
|
||||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_BUTTON_DELETE_SCHEME);
|
|
||||||
EnableWindow(hDlgCtrl, bEnable);
|
|
||||||
|
|
||||||
lpName = (LPTSTR)SendMessage((HWND)lParam, CB_GETITEMDATA, wParam, 0);
|
|
||||||
LoadCurrentCursorScheme(lpName, !bEnable);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
SendMessage((HWND)lParam, CB_GETLBTEXT, wParam, (LPARAM)buffer);
|
||||||
|
LoadString(hApplet, IDS_SYSTEM_SCHEME, szSystemScheme, MAX_PATH);
|
||||||
|
if(_tcsstr(buffer, szSystemScheme) || wParam == 0) //avoid the default scheme can be deleted
|
||||||
|
bEnable = FALSE;
|
||||||
|
else
|
||||||
|
bEnable = TRUE;
|
||||||
|
|
||||||
|
/* delete button */
|
||||||
|
hDlgCtrl = GetDlgItem(hwndDlg, IDC_BUTTON_DELETE_SCHEME);
|
||||||
|
EnableWindow(hDlgCtrl, bEnable);
|
||||||
|
|
||||||
|
lpName = (LPTSTR)SendMessage((HWND)lParam, CB_GETITEMDATA, wParam, 0);
|
||||||
|
LoadCurrentCursorScheme(lpName, !bEnable);
|
||||||
|
RefreshCursorList(hwndDlg, FALSE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue