⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remnet.c

📁 See Hanoi.cpp for the implementation of this cla
💻 C
📖 第 1 页 / 共 4 页
字号:
							  plvdi->item.pszText));
		break;
	case LVN_COLUMNCLICK:
				break;

	case LVN_BEGINLABELEDIT:
		DEBUGMSG (ZONE_MISC, (TEXT("BeginEdit\r\n")));

		if (plvdi->item.iItem == 0) {
			DEBUGMSG (ZONE_MISC, (TEXT("Can't edit the 'Make New' icon\r\n")));
			return TRUE; // Can't edit the Make New icon
		}
		v_fInRename = TRUE;
		PositionSIP(SIP_UP);
		ListView_EnsureVisible(v_hListWnd, plvdi->item.iItem, FALSE);
		if (hwndEdit = ListView_GetEditControl(v_hListWnd)) {
			SendMessage(hwndEdit, EM_LIMITTEXT,
						RAS_MaxEntryName, 0);
		}
		return FALSE; // Return FALSE to let the user edit

	case LVN_ENDLABELEDIT:
		v_fInRename = FALSE;
		PositionSIP(SIP_DOWN);
		if (plvdi->item.pszText == NULL) {
			DEBUGMSG (ZONE_MISC|ZONE_ERROR,
					  (TEXT("ENDLABELEIDT: Text is NULL\r\n")));
			break;
		}

		// if it's the same as before then it's a no-op.
		if (!_tcsicmp (plvdi->item.pszText, ((PITEMINFO)plvdi->item.lParam)->EntryName)) {
		}

		if (dwTemp = RasValidateEntryName(NULL, plvdi->item.pszText)) {
			if (dwTemp == ERROR_ALREADY_EXISTS) {
				nFormatId = IDS_ALREADY_EXISTS;
			} else if (*(plvdi->item.pszText)) {
				nFormatId = IDS_BADNAME;
			} else {
				nFormatId = IDS_NULLNAME;
			}
			LoadString(v_hInst, nFormatId, szFmtStr, sizeof(szFmtStr)/sizeof(TCHAR));
			LoadString(v_hInst, (v_fPortrait) ? IDS_CONNECTIONS : IDS_REMNET,
					   szTemp, sizeof(szTemp)/sizeof(TCHAR));
			MessageBox (hWnd, szFmtStr, szTemp, MB_OK | MB_ICONWARNING);
			PostMessage (v_hListWnd, LVM_EDITLABEL,
						 (WPARAM)(int)plvdi->item.iItem, 0);
			break;
		}

		RasRenameEntry(NULL, ((PITEMINFO)plvdi->item.lParam)->EntryName,
					   plvdi->item.pszText);
		dwTemp = plvdi->item.iItem;
		InitListViewItems(v_hListWnd);
		ListView_SetItemState (v_hListWnd, 0, 0, LVIS_SELECTED);
		ListView_SetItemState (v_hListWnd, dwTemp,
							   LVIS_SELECTED | LVIS_FOCUSED,
							   LVIS_SELECTED | LVIS_FOCUSED);
		SetFocus (v_hListWnd);
		break;
	case NM_RCLICK:
		PostMessage(v_hMainWnd, WM_COMMAND, ID_SHORTCUT, 0);
		break;
	case NM_CLICK:
		if (GetKeyState(VK_MENU) < 0) {
			PostMessage(v_hMainWnd, WM_COMMAND, ID_SHORTCUT, 0);
		}

		break;
	case NM_DBLCLK:
		if (GetKeyState(VK_MENU) < 0) {
			PostMessage(v_hMainWnd, WM_COMMAND, ID_SHORTCUT, 0);
			break;
		}

		lvi.mask  = LVIF_PARAM;
		lvi.iSubItem = 0;
		lvi.iItem = pnm->iItem;


		if (lvi.iItem == 0) {
			// Allow them to make a new item.
			PostMessage(v_hMainWnd, WM_COMMAND, 
						ID_CONNECTIONS_MAKENEWCONNECTION, 0);
		} else if (lvi.iItem != -1) {
			ListView_SetItemState (v_hListWnd, lvi.iItem,
								   LVIS_SELECTED, LVIS_SELECTED);

			// They want to connect.
			SendMessage(v_hMainWnd, WM_COMMAND, 
						ID_FILE_CONNECTCREATE, 0);
		}
		break;

	case LVN_KEYDOWN:
		switch (((LV_KEYDOWN *) plvdi)->wVKey) {
		case VK_RETURN :
			lvi.iItem = ListView_GetNextItem(v_hListWnd, -1,
											 LVNI_SELECTED);
			if (lvi.iItem == 0) {
				PostMessage(v_hMainWnd, WM_COMMAND, 
							ID_CONNECTIONS_MAKENEWCONNECTION, 0);
			} else if (lvi.iItem != -1) {
				ListView_SetItemState (v_hListWnd, lvi.iItem,
									   LVIS_SELECTED, LVIS_SELECTED);

				// They want to connect.
				SendMessage(v_hMainWnd, WM_COMMAND, 
							ID_FILE_CONNECTCREATE, 0);
			}
			break;
		case VK_CONTROL :
			if (GetAsyncKeyState(VK_MENU)) {
				PostMessage(v_hMainWnd, WM_COMMAND,
							ID_SHORTCUT, 0);
			}
			break;
		}
		break;
	default:
		break;
	}
	return 0;
}

// ----------------------------------------------------------------
//
// WndProc
//
// Main window Proc
//
// ----------------------------------------------------------------
LRESULT CALLBACK
WndProc (
    HWND hWnd,
    UINT message,
    WPARAM wParam,
    LPARAM lParam
    )
{
	NM_LISTVIEW	    *pnm;
    LV_DISPINFO     *plvdi;
	LV_ITEM		    lvi;
	TCHAR		    szTemp[128];
	TCHAR			szFmtStr[128];
	DWORD		    dwTemp;
	DWORD		    cb;
	RECT		    rc;
	HMENU		    hMenu, hMenuTrack;
	POINT		    pt;
    int             nFormatId;
    TCHAR		    TmpEntryName[2*RAS_MaxEntryName];
	DWORD			dwSize, dwDevSize;
	PBYTE			pDevConfig;
	BOOL			bRefresh;
	int				iCopyNum;
	DWORD			i;

    switch (message) {
	case WM_HELP:
		RETAILMSG (1, (TEXT("PegHelp file:rnetw.htm#Main_Contents\r\n")));
		CreateProcess(TEXT("peghelp"),TEXT("file:rnetw.htm#Main_Contents"),
					  NULL,NULL,FALSE,0,NULL,NULL,NULL,NULL);
		break;

	case WM_SIZE :
		GetClientRect (hWnd, &rc);
		rc.top += CallCommCtrlFunc(CommandBar_Height)(v_hCmdBar);
		MoveWindow (v_hListWnd, rc.left, rc.top, rc.right-rc.left,
					rc.bottom-rc.top, TRUE); 
		break;
          
	case WM_NOTIFY :
		pnm = (NM_LISTVIEW *)lParam;
		plvdi  = (LV_DISPINFO *)lParam;

		if (pnm->hdr.idFrom != IDD_LISTVIEW) {
			break;
		}
		return NotifyHandler (hWnd, pnm, plvdi);
		
		break;
	case WM_COMMAND :
        
		switch (LOWORD(wParam)) {
		case ID_HELP :
			SendMessage (v_hMainWnd, WM_HELP, 0, 0);
			break;
		case ID_CONN_CONN :
		case ID_FILE_CONNECTCREATE :
			// Start RNAApp for each item selected
			for (lvi.iItem = -1; (-1 != (lvi.iItem =
				ListView_GetNextItem(v_hListWnd, lvi.iItem,
									 LVNI_SELECTED)));) {

				// First item is special, Invoke the Make New wizard
				if (0 == lvi.iItem) {
					PostMessage(v_hMainWnd, WM_COMMAND, 
								ID_CONNECTIONS_MAKENEWCONNECTION, 0);
					continue;
				}
				
				lvi.iSubItem = 0;
				lvi.mask  = LVIF_PARAM;
				ListView_GetItem(v_hListWnd, &lvi);
				
				// Actually start the process
				wsprintf (szTemp, TEXT("-e\"%s\""),
						  ((PITEMINFO)lvi.lParam)->EntryName);
				DEBUGMSG (ZONE_MISC,
						  (TEXT("Starting RNAAPP '%s'\r\n"), szTemp));
				if (FALSE == CreateProcess (TEXT("rnaapp"), szTemp, NULL, NULL,
											FALSE, 0, NULL, NULL, NULL, NULL)) {
					LoadString (v_hInst, IDS_CREATE_PROC_ERR, szFmtStr,
								sizeof(szFmtStr)/sizeof(TCHAR));
					LoadString(v_hInst, (v_fPortrait) ? IDS_CONNECTIONS : IDS_REMNET,
							   szTemp, sizeof(szTemp)/sizeof(TCHAR));
					MessageBox (hWnd, szFmtStr, szTemp, MB_APPLMODAL |
								MB_OK | MB_ICONEXCLAMATION);
				}
			}
			break;

		case ID_FILE_CREATESHORTCUT :
			if (v_fPortrait) {
				RETAILMSG (1, (TEXT("Command %d for landscape mode only\r\n"),
							   LOWORD(wParam)));
				break;
			}

			if ((cb = ListView_GetSelectedCount (v_hListWnd)) == 0)
				break;

			for (lvi.iItem = -1; (-1 != (lvi.iItem =
				ListView_GetNextItem(v_hListWnd, lvi.iItem,
									 LVNI_SELECTED)));) {

				if (0 == lvi.iItem) {
					LoadString(v_hInst, IDS_NOSHORTCUT, szFmtStr,
							   sizeof(szFmtStr)/sizeof(TCHAR));
					LoadString(v_hInst, (v_fPortrait) ? IDS_CONNECTIONS : IDS_REMNET,
							   szTemp, sizeof(szTemp)/sizeof(TCHAR));
					MessageBox (hWnd, szFmtStr, szTemp, MB_APPLMODAL |
								MB_OK | MB_ICONEXCLAMATION);
					continue;
				}
                        
				lvi.iSubItem = 0;
				lvi.mask  = LVIF_PARAM;
				ListView_GetItem(v_hListWnd, &lvi);                    

				if (!CreateShortcut(((PITEMINFO)lvi.lParam)->EntryName)) {
					LoadString(v_hInst, IDS_SHORTCUTFAILED, szFmtStr,
							   sizeof(szFmtStr)/sizeof(TCHAR));
					LoadString(v_hInst, (v_fPortrait) ? IDS_CONNECTIONS : IDS_REMNET,
							   szTemp, sizeof(szTemp)/sizeof(TCHAR));
					MessageBox (hWnd, szFmtStr, szTemp, MB_APPLMODAL |
								MB_OK | MB_ICONEXCLAMATION);
				}
			}
			break;
                    
		case ID_CONN_DELETE :
		case ID_FILE_DELETE :
			dwTemp = ListView_GetSelectedCount (v_hListWnd);
			if (dwTemp == 0) {
				break;
			}

			lvi.iItem = ListView_GetNextItem(v_hListWnd, -1,
											 LVNI_SELECTED);

			if (dwTemp == 1 && (lvi.iItem == 0)) {
				break;
			}
                            
			if (dwTemp == 1) {
                        LoadString(v_hInst, IDS_DELCON1, szFmtStr,
								   sizeof(szFmtStr)/sizeof(TCHAR));
			} else {
				LoadString(v_hInst, IDS_DELCON2, szFmtStr,
						   sizeof(szFmtStr)/sizeof(TCHAR));
			}
                    
			LoadString(v_hInst, IDS_CONFDEL, szTemp,
					   sizeof(szTemp)/sizeof(TCHAR));
                    
			if (IDYES != MessageBox (hWnd, szFmtStr, szTemp,
									MB_DEFBUTTON2 | MB_YESNO | MB_ICONWARNING)) {
				break;
			}

			do {
				// Can't delete to the MakeNew Item
				if (0 == lvi.iItem)  {
					continue;
				}

				lvi.iSubItem = 0;
				lvi.mask  = LVIF_PARAM;
				ListView_GetItem(v_hListWnd, &lvi);
				RasDeleteEntry (NULL, ((PITEMINFO)lvi.lParam)->EntryName);
			} while ((lvi.iItem = ListView_GetNextItem(v_hListWnd,
				lvi.iItem, LVNI_SELECTED)) != -1);
                    

			// Refresh the list?
			InitListViewItems(v_hListWnd);
			SetFocus (v_hListWnd);
			break;
		case ID_FILE_RENAME :
		case ID_CONN_RENAME :
			DEBUGMSG (ZONE_MISC, (TEXT("ID_????_RENAME\r\n")));
			
			if (1 != ListView_GetSelectedCount (v_hListWnd)) {
				LoadString(v_hInst, IDS_TOOMANYENT, szFmtStr,
						   sizeof(szFmtStr)/sizeof(TCHAR));
				LoadString(v_hInst, IDS_ERROR, szTemp,
						   sizeof(szTemp)/sizeof(TCHAR));
				MessageBox (hWnd, szFmtStr, szTemp, MB_OK | MB_ICONWARNING);
				break;
			}
			lvi.iItem = ListView_GetNextItem(v_hListWnd, -1,
											 LVNI_SELECTED);
                    
			if (lvi.iItem == 0) {
				LoadString(v_hInst, IDS_RENAMENEW, szFmtStr,
						   sizeof(szFmtStr)/sizeof(TCHAR));
				LoadString(v_hInst, IDS_ERROR, szTemp,
						   sizeof(szTemp)/sizeof(TCHAR));
				MessageBox (hWnd, szFmtStr, szTemp, MB_OK | MB_ICONWARNING);
				break;
			}
			// Does it need focus?
			SetFocus (v_hListWnd);
			ListView_EditLabel(v_hListWnd, lvi.iItem);
			break;
                    
		case ID_CONN_EDIT :
		case ID_FILE_PROPERTIES:
			if (v_hDialogWnd) {
				SetForegroundWindow(v_hDialogWnd);
				break;
			}			
			
			// Which item is selected?
			if ((cb = ListView_GetSelectedCount(v_hListWnd)) == 0) {
				break;
			}
			if (1 != cb) {
				DEBUGMSG (ZONE_MISC,
						  (TEXT("ID_FILE_PROPERTIES %d items selected\r\n"),
						   ListView_GetSelectedCount(v_hListWnd)));

				LoadString(v_hInst, IDS_TOOMANYENT, szFmtStr,
						   sizeof(szFmtStr)/sizeof(TCHAR));
				LoadString(v_hInst, IDS_ERROR, szTemp,
						   sizeof(szTemp)/sizeof(TCHAR));
				MessageBox (hWnd, szFmtStr, szTemp, MB_OK | MB_ICONWARNING);
				break;
			}
			// Get the selected item
			lvi.iItem = ListView_GetNextItem(v_hListWnd, -1, LVNI_SELECTED);

			// Can't get properites for the MakeNew Item
			if (0 == lvi.iItem) {
				LoadString(v_hInst, IDS_PLEASE, szFmtStr,
						   sizeof(szFmtStr)/sizeof(TCHAR));
				LoadString(v_hInst, IDS_ERROR, szTemp,
						   sizeof(szTemp)/sizeof(TCHAR));
				MessageBox (hWnd, szFmtStr, szTemp, MB_OK | MB_ICONWARNING);
				break;
			}

			lvi.iSubItem = 0;
			lvi.mask  = LVIF_PARAM;
			ListView_GetItem(v_hListWnd, &lvi);

			memcpy(&EditItem, (PITEMINFO)lvi.lParam, sizeof(ITEMINFO));

			// Direct or Dial-up
			v_WizDialog = _tcscmp(EditItem.Entry.szDeviceType,
								  RASDT_Direct) ? v_DialogPages[DLG_PG_2] :
						  		  v_DialogPages[DLG_PG_4];

			v_EnteredAsAWizard = FALSE;
			v_hDialogWnd = CreateDialog (v_hInst,
										 MAKEINTRESOURCE(v_WizDialog), hWnd,
										 ConnWizDlgProc);

			if (NULL == v_hDialogWnd) {
				ERRORMSG (1, (TEXT("Unable to CreateDialog\r\n")));
				SetFocus (v_hListWnd);
			}
			InitListViewItems(v_hListWnd);
			break;
			
                    
		case ID_FILE_EXIT :
		case ID_CONN_EXIT :
			DestroyWindow(hWnd);
			break;
		case ID_EDIT_CREATECOPY:
			if (v_fPortrait) {
				RETAILMSG (1, (TEXT("Command %d for landscape mode only\r\n"),
							   LOWORD(wParam)));
				break;
			}

			bRefresh = FALSE;
			lvi.iItem = -1;
			for(;;){
				lvi.iItem = ListView_GetNextItem(v_hListWnd, lvi.iItem, LVNI_SELECTED);

				if (lvi.iItem <= 0)
					break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -