📄 configwnd.c
字号:
EnableDlgItem (hDlg, IDC_BROWSE_ASK_SOUND, FALSE) ; EnableDlgItem (hDlg, IDC_BROWSE_VIRUS_SOUND, FALSE) ; Config_SetInteger(CFGINT_SOUND, 1) ; Config_SaveInteger(CFGINT_SOUND) ; Sounds_ReloadConfig () ; } return TRUE ; case MAKELONG(IDC_CUSTOM_SOUNDS,BN_CLICKED): { EnableDlgItem (hDlg, IDC_ALERT_SOUND, TRUE) ; EnableDlgItem (hDlg, IDC_ASK_SOUND, TRUE) ; EnableDlgItem (hDlg, IDC_VIRUS_SOUND, TRUE) ; EnableDlgItem (hDlg, IDC_BROWSE_ALERT_SOUND, TRUE) ; EnableDlgItem (hDlg, IDC_BROWSE_ASK_SOUND, TRUE) ; EnableDlgItem (hDlg, IDC_BROWSE_VIRUS_SOUND, TRUE) ; Config_SetInteger(CFGINT_SOUND, 2) ; Config_SaveInteger(CFGINT_SOUND) ; Sounds_ReloadConfig () ; } return TRUE ; case MAKELONG(IDC_EXPORT,BN_CLICKED): // ======== 'Export' button clicked ======== { TCHAR szFileName[64] ; int i ; BOOL bSuccess ; if( _ConfigWnd_Browse (hDlg, TRUE, szBuffer, MAX_PATH) ) { SpySrv_LockFilterSet () ; bSuccess = FilterFile_Write (szBuffer, SpySrv_GetFilterSet()) ; SpySrv_UnlockFilterSet () ; if( ! bSuccess ) { _tcslcpy (szFileName, PathFindFileName(szBuffer), 64) ; i = wsprintf (szBuffer, STR_DEF(_ERROR_WRITING_FILE_S, TEXT("Error writing file \"%s\"")), szFileName) ; wsprintf (szBuffer+i, TEXT("\r\n%s"), FilterFile_GetErrorString()) ; MessageBox (hDlg, szBuffer, NULL, MB_ICONERROR) ; } } } return TRUE ; // ======== 'Export' button clicked ======== case MAKELONG(IDC_IMPORT,BN_CLICKED): // ======== 'Import' button clicked ======== { HFILTERSET hFilterSet ; TCHAR szFileName[64] ; int i ; if( _ConfigWnd_Browse (hDlg, FALSE, szBuffer, MAX_PATH) ) { hFilterSet = FilterFile_Read (szBuffer) ; if( ! hFilterSet ) { _tcslcpy (szFileName, PathFindFileName(szBuffer), 64) ; i = wsprintf (szBuffer, STR_DEF(_ERROR_READING_FILE_S, TEXT("Error reading file \"%s\"")), szFileName) ; wsprintf (szBuffer+i, TEXT("\r\n%s"), FilterFile_GetErrorString()) ; MessageBox (hDlg, szBuffer, NULL, MB_ICONERROR) ; } else { i = MessageBox(hDlg, STR_DEF(_CONFIRM_ERASE_FILTERS, g_szConfirmEraseFilters), TEXT(APPLICATION_NAME), MB_ICONWARNING|MB_YESNO) ; if( i==IDYES ) { SpySrv_LockFilterSet () ; SpySrv_SetFilterSet (hFilterSet) ; SpySrv_SendFilterSetToDriver () ; SpySrv_UnlockFilterSet () ; } else FilterSet_Destroy (hFilterSet) ; } } } return TRUE ; // ======== 'Import' button clicked ======== case MAKELONG(IDC_RESET,BN_CLICKED): // ======== 'Reset' button clicked ======== { HFILTERSET hFilterSet ; int i ; hFilterSet = FilterSet_Create (64) ; if( hFilterSet ) { FilterSet_InitDefaultFilter (hFilterSet) ; i = MessageBox(hDlg, STR_DEF(_CONFIRM_ERASE_FILTERS, g_szConfirmEraseFilters), TEXT(APPLICATION_NAME), MB_ICONWARNING|MB_YESNO) ; if( i==IDYES ) { SpySrv_LockFilterSet () ; SpySrv_SetFilterSet (hFilterSet) ; SpySrv_SendFilterSetToDriver () ; SpySrv_UnlockFilterSet () ; } else FilterSet_Destroy (hFilterSet) ; } } return TRUE ; // ======== 'Reset' button clicked ======== case IDM_FOLDER_ADD: { TCHAR szFolder[MAX_PATH] ; ITEMIDLIST * pidl ; BROWSEINFO bi = { .hwndOwner = hDlg, } ; pidl = SHBrowseForFolder (&bi) ; if( pidl && SHGetPathFromIDList(pidl, szFolder) ) { LVITEM lvi = {0} ; HWND hwndList = GetDlgItem (hDlg, IDC_SCAN_FOLDERS) ; lvi.iItem = ListView_GetItemCount(hwndList) ; lvi.mask = LVIF_TEXT ; lvi.pszText = szFolder ; ListView_InsertItem (hwndList, &lvi) ; } PostMessage (hDlg, WM_FOLDERS_LIST_CHANGED, 0, 0) ; } return TRUE ; // IDM_FOLDER_ADD case IDM_FOLDER_REMOVE: { HWND hwndList = GetDlgItem (hDlg, IDC_SCAN_FOLDERS) ; while( 1 ) { int i = ListView_GetNextItem (hwndList, -1, LVNI_SELECTED) ; if( i<0 ) break ; ListView_DeleteItem (hwndList, i) ; } PostMessage (hDlg, WM_FOLDERS_LIST_CHANGED, 0, 0) ; } return TRUE ; // IDM_FOLDER_REMOVE case IDM_PATTERN_ADD: { LPTSTR szPattern = TEXT("<pattern>") ; LVITEM lvi = {0} ; HWND hwndList = GetDlgItem (hDlg, IDC_SCAN_PATTERNS) ; int iItem = ListView_GetItemCount(hwndList) ; lvi.iItem = iItem ; lvi.mask = LVIF_TEXT ; lvi.pszText = szPattern ; ListView_InsertItem (hwndList, &lvi) ; ListView_EditLabel (hwndList, iItem) ; } return TRUE ; // IDM_FOLDER_ADD case IDM_PATTERN_REMOVE: { HWND hwndList = GetDlgItem (hDlg, IDC_SCAN_PATTERNS) ; while( 1 ) { int i = ListView_GetNextItem (hwndList, -1, LVNI_SELECTED) ; if( i<0 ) break ; ListView_DeleteItem (hwndList, i) ; } PostMessage (hDlg, WM_PATTERN_LIST_CHANGED, 0, 0) ; } return TRUE ; // IDM_FOLDER_REMOVE } return FALSE ; // WM_COMMAND case WM_NOTIFY: { union { NMHDR * hdr ; } pnm ; pnm.hdr = (NMHDR*) lParam ; switch( pnm.hdr->idFrom ) { case IDC_SCAN_FOLDERS: { switch( pnm.hdr->code ) { case NM_RCLICK: { POINT pt ; if( ListView_GetSelectedCount(GetDlgItem(hDlg,IDC_SCAN_FOLDERS)) > 0 ) EnableMenuItem (g_hmenuFolders, IDM_FOLDER_REMOVE, MF_BYCOMMAND|MF_ENABLED) ; else EnableMenuItem (g_hmenuFolders, IDM_FOLDER_REMOVE, MF_BYCOMMAND|MF_GRAYED) ; // get mouse position GetCursorPos (&pt) ; // display menu TrackPopupMenu (g_hmenuFolders, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hDlg, NULL) ; } return TRUE ; // NM_RCLICK case LVN_ENDLABELEDIT: { SetWindowLong (hDlg, DWL_MSGRESULT, TRUE) ; PostMessage (hDlg, WM_FOLDERS_LIST_CHANGED, 0, 0) ; } return TRUE ; // LVN_ENDLABELEDIT } } return TRUE ; // IDC_SCAN_FOLDERS case IDC_SCAN_PATTERNS: { switch( pnm.hdr->code ) { case NM_RCLICK: { POINT pt ; if( ListView_GetSelectedCount(GetDlgItem(hDlg,IDC_SCAN_PATTERNS)) > 0 ) EnableMenuItem (g_hmenuPatterns, IDM_FOLDER_REMOVE, MF_BYCOMMAND|MF_ENABLED) ; else EnableMenuItem (g_hmenuPatterns, IDM_FOLDER_REMOVE, MF_BYCOMMAND|MF_GRAYED) ; // get mouse position GetCursorPos (&pt) ; // display menu TrackPopupMenu (g_hmenuPatterns, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hDlg, NULL) ; } return TRUE ; // NM_RCLICK case LVN_ENDLABELEDIT: { SetWindowLong (hDlg, DWL_MSGRESULT, TRUE) ; PostMessage (hDlg, WM_PATTERN_LIST_CHANGED, 0, 0) ; } return TRUE ; // LVN_ENDLABELEDIT } } return TRUE ; // IDC_SCAN_PATTERNS } } return FALSE ; // WM_NOTIFY case WM_FOLDERS_LIST_CHANGED: { HWND hwndList = GetDlgItem (hDlg, IDC_SCAN_FOLDERS) ; _ConfigWnd_ListToConfig (hwndList, CFGSAR_SCAN_FOLDERS) ; BkgndScan_ReloadConfig () ; } return TRUE ; case WM_PATTERN_LIST_CHANGED: { HWND hwndList = GetDlgItem (hDlg, IDC_SCAN_PATTERNS) ; LPCTSTR * pszFilters ; UINT nFilters ; _ConfigWnd_ListToConfig (hwndList, CFGSAR_SCAN_PATTERNS) ; pszFilters = Config_GetStringArray (CFGSAR_SCAN_PATTERNS, &nFilters) ; SpySrv_SetScanFilters (pszFilters, nFilters) ; BkgndScan_ReloadConfig () ; } return TRUE ; } return FALSE ;}/******************************************************************//* Internal function : Browse *//******************************************************************/BOOL _ConfigWnd_Browse (HWND hDlg, BOOL bExport, LPTSTR szPath, UINT nMax){ TCHAR szFilter[MAX_FILTER] ; INT iPos ; OPENFILENAME ofn = { .lStructSize = sizeof(OPENFILENAME), .hwndOwner = hDlg, .nMaxFile = nMax, .lpstrFile = szPath, .lpstrFilter = szFilter, .lpstrDefExt = TEXT("wpf"), } ; szPath[0] = 0 ; if( bExport ) ofn.Flags = OFN_PATHMUSTEXIST ; else ofn.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY ; iPos = 0 ; iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("%s (*.wpf)"), STR_DEF(_FILTER_FILES,TEXT("Winpooch filters"))) ; iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("*.wpf")) ; iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("%s (*.*)"), STR_DEF(_ALL_FILES,TEXT("All files"))) ; iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("*.*")) ; szFilter[iPos] = 0 ; if( bExport ) return GetSaveFileName (&ofn) ; return GetOpenFileName (&ofn) ;}/******************************************************************//* Internal function *//******************************************************************/BOOL _ConfigWnd_BrowseSound (HWND hDlg, LPTSTR szPath, UINT nMax){ TCHAR szFilter[MAX_FILTER] ; INT iPos ; OPENFILENAME ofn = { .lStructSize = sizeof(OPENFILENAME), .hwndOwner = hDlg, .nMaxFile = nMax, .lpstrFile = szPath, .lpstrFilter = szFilter, .lpstrDefExt = TEXT("wav"), .Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY, } ; szPath[0] = 0 ; iPos = 0 ; iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("%s (*.wav)"), STR_DEF(_WAVE_FILES,TEXT("Wave files"))) ; iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("*.wav")) ; iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("%s (*.*)"), STR_DEF(_ALL_FILES,TEXT("All files"))) ; iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("*.*")) ; szFilter[iPos] = 0 ; return GetOpenFileName (&ofn) ;}/******************************************************************//* Internal function *//******************************************************************/VOID _ConfigWnd_ConfigToList (HWND hwndList, UINT nArrayId) { UINT i, nLength ; LPCTSTR *pszArray ; LVITEM lvi = {0} ; pszArray = Config_GetStringArray (nArrayId, &nLength) ; ASSERT (hwndList!=NULL) ; TRACE_INFO (TEXT("nLength = %d\n"), nLength) ; ListView_DeleteAllItems (hwndList) ; for( i=0 ; i<nLength ; i++ ) { TRACE_INFO (TEXT("%d = %s\n"), i, pszArray[i]) ; lvi.iItem = i ; lvi.mask = LVIF_TEXT ; lvi.pszText = (LPTSTR)pszArray[i] ; ListView_InsertItem (hwndList, &lvi) ; }}/******************************************************************//* Internal function *//******************************************************************/VOID _ConfigWnd_ListToConfig (HWND hwndList, UINT nArrayId) { LPTSTR* pszArray ; UINT nLength ; UINT i ; nLength = ListView_GetItemCount(hwndList) ; pszArray = malloc (nLength*sizeof(LPCTSTR)) ; for( i=0 ; i<nLength ; i++ ) { pszArray[i] = malloc (MAX_PATH*sizeof(TCHAR)) ; ListView_GetItemText (hwndList, i, 0, pszArray[i], MAX_PATH) ; TRACE_INFO (TEXT("Item %d : %s\n"), i, pszArray[i]) ; } Config_SetStringArray (nArrayId, (LPCTSTR*)pszArray, nLength) ; Config_SaveStringArray (nArrayId) ; for( i=0 ; i<nLength ; i++ ) free (pszArray[i]) ; free (pszArray) ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -