mirror of
https://github.com/reactos/reactos.git
synced 2025-06-09 20:11:14 +00:00
added a PopupMenu with Add and Delete functions in screensaver.c
svn path=/trunk/; revision=21751
This commit is contained in:
parent
7ba6d64695
commit
f67e8214bb
4 changed files with 130 additions and 53 deletions
|
@ -55,6 +55,18 @@ BEGIN
|
||||||
90,112,8
|
90,112,8
|
||||||
END
|
END
|
||||||
|
|
||||||
|
IDR_POPUP_MENU MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
POPUP ""
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Konfigurieren", ID_MENU_CONFIG
|
||||||
|
MENUITEM "&Vorschau", ID_MENU_PREVIEW
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Hinzufügen", ID_MENU_ADD
|
||||||
|
MENUITEM "&Löschen\tDel", ID_MENU_DELETE
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
IDD_SETTINGS DIALOGEX DISCARDABLE 0, 0, 246, 188
|
IDD_SETTINGS DIALOGEX DISCARDABLE 0, 0, 246, 188
|
||||||
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
|
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||||
CAPTION "Einstellungen"
|
CAPTION "Einstellungen"
|
||||||
|
|
|
@ -76,6 +76,18 @@ BEGIN
|
||||||
PUSHBUTTON "Ad&vanced...",IDC_SETTINGS_ADVANCED,306,165,56,14
|
PUSHBUTTON "Ad&vanced...",IDC_SETTINGS_ADVANCED,306,165,56,14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
IDR_POPUP_MENU MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
POPUP ""
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Configure", ID_MENU_CONFIG
|
||||||
|
MENUITEM "&Preview", ID_MENU_PREVIEW
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Add", ID_MENU_ADD
|
||||||
|
MENUITEM "&Delete\tDel", ID_MENU_DELETE
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_CPLNAME "Display"
|
IDS_CPLNAME "Display"
|
||||||
|
|
|
@ -62,6 +62,13 @@
|
||||||
#define IDC_SETTINGS_RESOLUTION_TEXT 204
|
#define IDC_SETTINGS_RESOLUTION_TEXT 204
|
||||||
#define IDC_SETTINGS_ADVANCED 205
|
#define IDC_SETTINGS_ADVANCED 205
|
||||||
|
|
||||||
|
#define IDR_POPUP_MENU 2010
|
||||||
|
#define ID_MENU_CONFIG 2011
|
||||||
|
#define ID_MENU_PREVIEW 2012
|
||||||
|
#define ID_MENU_ADD 2013
|
||||||
|
#define ID_MENU_DELETE 2014
|
||||||
|
|
||||||
|
|
||||||
/* Settings Page */
|
/* Settings Page */
|
||||||
|
|
||||||
#define IDS_PIXEL 2301
|
#define IDS_PIXEL 2301
|
||||||
|
|
|
@ -27,6 +27,7 @@ ScreenSaverItem g_ScreenSaverItems[MAX_SCREENSAVERS];
|
||||||
HWND g_hScreenBackgroundPage = NULL;
|
HWND g_hScreenBackgroundPage = NULL;
|
||||||
HWND g_hScreengroundList = NULL;
|
HWND g_hScreengroundList = NULL;
|
||||||
HWND ControlScreenSaverIsSecure = NULL;
|
HWND ControlScreenSaverIsSecure = NULL;
|
||||||
|
HMENU g_hPopupMenu = NULL;
|
||||||
|
|
||||||
void ListViewItemAreChanged(int itemIndex)
|
void ListViewItemAreChanged(int itemIndex)
|
||||||
{
|
{
|
||||||
|
@ -38,6 +39,57 @@ void ListViewItemAreChanged(int itemIndex)
|
||||||
PropSheet_Changed(GetParent(g_hScreenBackgroundPage), g_hScreenBackgroundPage);
|
PropSheet_Changed(GetParent(g_hScreenBackgroundPage), g_hScreenBackgroundPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ScreensaverConfig ()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
/p:<hwnd> Run in preview
|
||||||
|
/s Run normal
|
||||||
|
/c:<hwnd> Run configuration, hwnd is handle of calling window
|
||||||
|
/a Run change password
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
WCHAR szCmdline[2048];
|
||||||
|
STARTUPINFO si;
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
swprintf(szCmdline, L"%s /c",g_ScreenSaverItems[ImageListSelection].szFilename);
|
||||||
|
|
||||||
|
ZeroMemory( &si, sizeof(si) );
|
||||||
|
si.cb = sizeof(si);
|
||||||
|
ZeroMemory( &pi, sizeof(pi) );
|
||||||
|
if(CreateProcess( NULL, szCmdline, NULL, NULL, FALSE, 0, NULL,NULL,&si, &pi ))
|
||||||
|
{
|
||||||
|
CloseHandle( pi.hProcess );
|
||||||
|
CloseHandle( pi.hThread );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ScreensaverPreview ()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
/p:<hwnd> Run in preview
|
||||||
|
/s Run normal
|
||||||
|
/c:<hwnd> Run configuration, hwnd is handle of calling window
|
||||||
|
/a Run change password
|
||||||
|
*/
|
||||||
|
|
||||||
|
WCHAR szCmdline[2048];
|
||||||
|
STARTUPINFO si;
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
swprintf(szCmdline, L"%s /p",g_ScreenSaverItems[ImageListSelection].szFilename);
|
||||||
|
|
||||||
|
ZeroMemory( &si, sizeof(si) );
|
||||||
|
si.cb = sizeof(si);
|
||||||
|
ZeroMemory( &pi, sizeof(pi) );
|
||||||
|
if(CreateProcess( NULL, szCmdline, NULL, NULL, FALSE, 0, NULL,NULL,&si, &pi ))
|
||||||
|
{
|
||||||
|
CloseHandle( pi.hProcess );
|
||||||
|
CloseHandle( pi.hThread );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
INT_PTR
|
INT_PTR
|
||||||
CALLBACK
|
CALLBACK
|
||||||
ScreenSaverPageProc(HWND hwndDlg,
|
ScreenSaverPageProc(HWND hwndDlg,
|
||||||
|
@ -48,13 +100,23 @@ ScreenSaverPageProc(HWND hwndDlg,
|
||||||
g_hScreenBackgroundPage = hwndDlg;
|
g_hScreenBackgroundPage = hwndDlg;
|
||||||
|
|
||||||
switch(uMsg) {
|
switch(uMsg) {
|
||||||
|
case WM_DESTROY:
|
||||||
|
{
|
||||||
|
DestroyMenu(g_hPopupMenu);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
{
|
{
|
||||||
g_hScreengroundList = GetDlgItem(g_hScreenBackgroundPage, IDC_SCREENS_CHOICES);
|
g_hScreengroundList = GetDlgItem(g_hScreenBackgroundPage, IDC_SCREENS_CHOICES);
|
||||||
SendMessage(GetDlgItem(g_hScreenBackgroundPage, IDC_SCREENS_TIME), UDM_SETRANGE, 0, MAKELONG ((short) 240, (short) 0));
|
SendMessage(GetDlgItem(g_hScreenBackgroundPage, IDC_SCREENS_TIME), UDM_SETRANGE, 0, MAKELONG ((short) 240, (short) 0));
|
||||||
AddListViewItems2();
|
AddListViewItems2();
|
||||||
|
|
||||||
|
g_hPopupMenu = LoadMenu(hApplet, MAKEINTRESOURCE(IDR_POPUP_MENU));
|
||||||
|
g_hPopupMenu = GetSubMenu(g_hPopupMenu, 0);
|
||||||
|
|
||||||
CheckRegScreenSaverIsSecure();
|
CheckRegScreenSaverIsSecure();
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
{
|
{
|
||||||
DWORD controlId = LOWORD(wParam);
|
DWORD controlId = LOWORD(wParam);
|
||||||
|
@ -69,65 +131,40 @@ ScreenSaverPageProc(HWND hwndDlg,
|
||||||
case IDC_SCREENS_TESTSC: // Screensaver Preview
|
case IDC_SCREENS_TESTSC: // Screensaver Preview
|
||||||
{
|
{
|
||||||
if(command == BN_CLICKED)
|
if(command == BN_CLICKED)
|
||||||
{
|
ScreensaverPreview();
|
||||||
/*
|
break;
|
||||||
/p:<hwnd> Run in preview
|
}
|
||||||
/s Run normal
|
case ID_MENU_PREVIEW:
|
||||||
/c:<hwnd> Run configuration, hwnd is handle of calling window
|
|
||||||
/a Run change password
|
|
||||||
*/
|
|
||||||
|
|
||||||
WCHAR szCmdline[2048];
|
|
||||||
STARTUPINFO si;
|
|
||||||
PROCESS_INFORMATION pi;
|
|
||||||
swprintf(szCmdline, L"%s /p",g_ScreenSaverItems[ImageListSelection].szFilename);
|
|
||||||
|
|
||||||
ZeroMemory( &si, sizeof(si) );
|
|
||||||
si.cb = sizeof(si);
|
|
||||||
ZeroMemory( &pi, sizeof(pi) );
|
|
||||||
if(CreateProcess( NULL, szCmdline, NULL, NULL, FALSE, 0, NULL,NULL,&si, &pi ))
|
|
||||||
{
|
|
||||||
CloseHandle( pi.hProcess );
|
|
||||||
CloseHandle( pi.hThread );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} break;
|
|
||||||
/* case IDC_SCREENS_DELETE: // Delete Screensaver
|
|
||||||
{
|
{
|
||||||
|
ScreensaverPreview();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ID_MENU_CONFIG:
|
||||||
|
{
|
||||||
|
ScreensaverConfig();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ID_MENU_DELETE: // Delete Screensaver
|
||||||
|
{
|
||||||
|
LPSHFILEOPSTRUCT fos;
|
||||||
|
|
||||||
if(command == BN_CLICKED) {
|
if(command == BN_CLICKED) {
|
||||||
if (ImageListSelection == 0) // Can NOT delete None sry:-)
|
if (ImageListSelection == 0) // Can NOT delete anything :-)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
DeleteFileW(g_ScreenSaverItems[ImageListSelection].szFilename);
|
|
||||||
|
fos->hwnd = hwndDlg;
|
||||||
|
fos->wFunc = FO_DELETE;
|
||||||
|
fos->fFlags = 0;
|
||||||
|
fos->pFrom = g_ScreenSaverItems[ImageListSelection].szFilename;
|
||||||
|
SHFileOperationW(fos);
|
||||||
}
|
}
|
||||||
} break; */
|
} break;
|
||||||
case IDC_SCREENS_SETTINGS: // Screensaver Settings
|
case IDC_SCREENS_SETTINGS: // Screensaver Settings
|
||||||
{
|
{
|
||||||
if(command == BN_CLICKED)
|
if(command == BN_CLICKED)
|
||||||
{
|
ScreensaverConfig();
|
||||||
/*
|
break;
|
||||||
/p:<hwnd> Run in preview
|
}
|
||||||
/s Run normal
|
|
||||||
/c:<hwnd> Run configuration, hwnd is handle of calling window
|
|
||||||
/a Run change password
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
WCHAR szCmdline[2048];
|
|
||||||
STARTUPINFO si;
|
|
||||||
PROCESS_INFORMATION pi;
|
|
||||||
swprintf(szCmdline, L"%s /c",g_ScreenSaverItems[ImageListSelection].szFilename);
|
|
||||||
|
|
||||||
ZeroMemory( &si, sizeof(si) );
|
|
||||||
si.cb = sizeof(si);
|
|
||||||
ZeroMemory( &pi, sizeof(pi) );
|
|
||||||
if(CreateProcess( NULL, szCmdline, NULL, NULL, FALSE, 0, NULL,NULL,&si, &pi ))
|
|
||||||
{
|
|
||||||
CloseHandle( pi.hProcess );
|
|
||||||
CloseHandle( pi.hThread );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
case IDC_SCREENS_USEPASSCHK: // Screensaver Is Secure
|
case IDC_SCREENS_USEPASSCHK: // Screensaver Is Secure
|
||||||
{
|
{
|
||||||
if(command == BN_CLICKED)
|
if(command == BN_CLICKED)
|
||||||
|
@ -143,12 +180,21 @@ ScreenSaverPageProc(HWND hwndDlg,
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
{
|
{
|
||||||
LPNMHDR lpnm = (LPNMHDR)lParam;
|
LPNMHDR lpnm = (LPNMHDR)lParam;
|
||||||
|
LPNMITEMACTIVATE nmia = (LPNMITEMACTIVATE) lParam;
|
||||||
|
RECT rc;
|
||||||
|
|
||||||
switch(lpnm->code) {
|
switch(lpnm->code) {
|
||||||
case PSN_APPLY:
|
case PSN_APPLY:
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} break;
|
} break;
|
||||||
|
case NM_RCLICK:
|
||||||
|
{
|
||||||
|
GetWindowRect(g_hScreengroundList, &rc);
|
||||||
|
TrackPopupMenuEx(g_hPopupMenu, TPM_RIGHTBUTTON,
|
||||||
|
rc.left + nmia->ptAction.x, rc.top + nmia->ptAction.y, hwndDlg, NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case LVN_ITEMCHANGED:
|
case LVN_ITEMCHANGED:
|
||||||
{
|
{
|
||||||
LPNMLISTVIEW nm = (LPNMLISTVIEW)lParam;
|
LPNMLISTVIEW nm = (LPNMLISTVIEW)lParam;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue