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

📄 remnet.c

📁 See Hanoi.cpp for the implementation of this cla
💻 C
📖 第 1 页 / 共 4 页
字号:

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

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

				LoadString(v_hInst, IDS_COPYOF, szFmtStr,
						   sizeof(szFmtStr)/sizeof(TCHAR));

				wsprintf(TmpEntryName, szFmtStr, EditItem.EntryName);
				// Truncate it
				if(RAS_MaxEntryName <= _tcslen(TmpEntryName)){
					RETAILMSG (1, (TEXT("Name '%s' was too long, truncating\r\n"), TmpEntryName));
					TmpEntryName[RAS_MaxEntryName] = TEXT('\0');
				}

				if (dwTemp = RasValidateEntryName(NULL, TmpEntryName)) {
					if (dwTemp == ERROR_ALREADY_EXISTS) {
						RETAILMSG (1, (TEXT("Duplicate name found, trying again\r\n")));
						iCopyNum = 2;
						LoadString(v_hInst, IDS_COPY_NUM_OF, szFmtStr,
								   sizeof(szFmtStr)/sizeof(TCHAR));
						for(;;){
							if (iCopyNum > 100) {
								// Terminate loop at some point
								break;
							}
														if(_tcsstr(szFmtStr, TEXT("%d")) < _tcsstr(szFmtStr, TEXT("%s"))){
								wsprintf(TmpEntryName, szFmtStr, iCopyNum, EditItem.EntryName);
							} else {
								wsprintf(TmpEntryName, szFmtStr, EditItem.EntryName, iCopyNum);
							}

							// Truncate it
							TmpEntryName[RAS_MaxEntryName] = TEXT('\0');
							if (dwTemp = RasValidateEntryName(NULL, TmpEntryName)) {
								if (dwTemp == ERROR_ALREADY_EXISTS) {
									iCopyNum++;
									continue;
								} else {
									break;
								}
							} else {
								break;
							}
						}
					}
				}

				RETAILMSG (1, (TEXT("Final name is '%s'\r\n"), TmpEntryName));
				if (dwTemp = RasValidateEntryName(NULL, TmpEntryName)) {
					if (dwTemp == ERROR_ALREADY_EXISTS) {
	                    nFormatId = IDS_ALREADY_EXISTS;
					} else if (*TmpEntryName) {
	                    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);
				} else {
					pDevConfig = NULL;
					
					dwSize = sizeof(EditItem.Entry);
					dwDevSize = 0;
					dwTemp = RasGetEntryProperties (NULL, EditItem.EntryName, &(EditItem.Entry),
										   &dwSize, NULL,
										   &dwDevSize);

					if (dwDevSize && (ERROR_BUFFER_TOO_SMALL == dwTemp)) {
						pDevConfig = (PBYTE)LocalAlloc (LPTR, dwDevSize);
						if (pDevConfig) {
							dwTemp = RasGetEntryProperties (NULL, EditItem.EntryName,
								&(EditItem.Entry), &dwSize, pDevConfig,
								&dwDevSize);
							DEBUGMSG (dwTemp, (TEXT("Error %d from RasGetEntryProperties\r\n")));
							ASSERT (dwTemp == 0);
						}
					}

					_tcscpy(EditItem.EntryName, TmpEntryName);
					RasSetEntryProperties (NULL, EditItem.EntryName,
										   &(EditItem.Entry),
										   sizeof(EditItem.Entry),
										   pDevConfig, dwDevSize);
					if (pDevConfig) {
						LocalFree (pDevConfig);
					}
					bRefresh = TRUE;
				}
			}
			// Refresh the list?
			if(bRefresh){
				InitListViewItems(v_hListWnd);
			}
			break;
                    
		case ID_EDIT_SELECTALL:
		    dwTemp = ListView_GetItemCount (v_hListWnd);

		    // Get the selected item
		    ListView_SetItemState(v_hListWnd, 0, 0, LVIS_SELECTED);

		    for (i=1; i<dwTemp; i++)  {
		        ListView_SetItemState(v_hListWnd, i, LVIS_SELECTED, LVIS_SELECTED);
		    }
			break;
		case ID_VIEW_LARGEICON :
			if (v_fPortrait) {
				RETAILMSG (1, (TEXT("Command %d for landscape mode only\r\n"),
							   LOWORD(wParam)));
				break;
			}

			UpdateView (ID_VIEW_LARGEICON);

			SetWindowLong (v_hListWnd, GWL_STYLE,
						   (GetWindowLong (v_hListWnd, GWL_STYLE) &
							~LVS_TYPEMASK) | LVS_ICON);
			break;
		case ID_VIEW_SMALLICON :
			if (v_fPortrait) {
				RETAILMSG (1, (TEXT("Command %d for landscape mode only\r\n"),
							   LOWORD(wParam)));
				break;
			}

			UpdateView (ID_VIEW_SMALLICON);

			SetWindowLong (v_hListWnd, GWL_STYLE,
						   (GetWindowLong (v_hListWnd, GWL_STYLE) &
							~LVS_TYPEMASK) | LVS_SMALLICON);
			break;

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

			UpdateView (ID_VIEW_DETAILS);

			SetWindowLong (v_hListWnd, GWL_STYLE,
						   (GetWindowLong (v_hListWnd, GWL_STYLE) &
							~LVS_TYPEMASK) | LVS_REPORT);
			break;
		case ID_VIEW_REFRESH:
			if (v_fPortrait) {
				RETAILMSG (1, (TEXT("Command %d for landscape mode only\r\n"),
							   LOWORD(wParam)));
				break;
			}

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

			LoadString(v_hInst, IDS_COPYRIGHT, szFmtStr,
					   sizeof(szFmtStr)/sizeof(TCHAR));
			LoadString(v_hInst, IDS_HELPABOUT, szTemp,
					   sizeof(szTemp)/sizeof(TCHAR));
			MessageBox (hWnd, szFmtStr, szTemp, MB_OK);
			break;
		case ID_CONN_NEW :
		case ID_CONNECTIONS_MAKENEWCONNECTION :
			if (v_hDialogWnd) {
				SetForegroundWindow(v_hDialogWnd);
				break;
			}
			
			// Initialize the EntryInfo
			memset ((char *)&EditItem, 0, sizeof(EditItem));

			// Loop over calls to RasValidateEntryName until
			// we get a unique name.
			cb = 1;
			do {
				LoadString(v_hInst, IDS_MYCONN1, szFmtStr,
						   sizeof(szFmtStr)/sizeof(TCHAR));
				LoadString(v_hInst, IDS_MYCONN2, szTemp,
						   sizeof(szTemp)/sizeof(TCHAR));
				if (1 == cb) {
					_tcscpy (EditItem.EntryName, szFmtStr);
				} else {
					wsprintf (EditItem.EntryName, szTemp, cb);
				}
				cb++;
			} while (RasValidateEntryName(NULL, EditItem.EntryName));


			EditItem.Entry.dwSize = sizeof(RASENTRY);

			// Get a defailt RasEntry
			cb = sizeof(RASENTRY);
			RasGetEntryProperties (NULL, TEXT(""),
								   &(EditItem.Entry),
								   &cb,
								   NULL, NULL);

			v_PrevWizDialog = 0;
			v_WizDialog = v_DialogPages[DLG_PG_1];
			v_EnteredAsAWizard = TRUE;
			v_hDialogWnd = CreateDialog (v_hInst,
										 MAKEINTRESOURCE(v_WizDialog), hWnd,
										 ConnWizDlgProc);

            // The dialog is entered, bring up the SIP, if we can
            if (v_hDialogWnd)
            {
                // Bring the SIP up
                PositionSIP(SIP_UP);
            }
			break;

		case ID_SHORTCUT :
			// Get first item selected.
			lvi.iItem = ListView_GetNextItem(v_hListWnd, -1,
											 LVNI_SELECTED | LVIS_FOCUSED);
			// Get number selected
			cb = ListView_GetSelectedCount (v_hListWnd);

			if (lvi.iItem == -1) {
				// BackGround menu
				break;
			} else {
				// Get location of item
				ListView_GetItemRect (v_hListWnd, lvi.iItem, &rc, LVIR_BOUNDS);
				hMenu = LoadMenu (v_hInst,
								  MAKEINTRESOURCE(IDR_CONTEXT_MENU));

				// Is it the Make New icon?
				if (lvi.iItem == 0) {
					hMenuTrack = GetSubMenu(hMenu, 0);
				} else {
					hMenuTrack = GetSubMenu(hMenu, 1);
					EnableMenuItem (hMenuTrack, ID_FILE_CONNECTCREATE,
									(cb >= 1) ? MF_ENABLED : MF_GRAYED);
					EnableMenuItem (hMenuTrack, ID_FILE_RENAME,
									(cb == 1) ? MF_ENABLED : MF_GRAYED);
					EnableMenuItem (hMenuTrack, ID_FILE_PROPERTIES,
									(cb == 1) ? MF_ENABLED : MF_GRAYED);
				}
			}

			dwTemp = GetMessagePos();
			pt.x = LOWORD(dwTemp);
			pt.y = HIWORD(dwTemp);

			TrackPopupMenu(hMenuTrack, TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL);
			DestroyMenu(hMenu);

			break;
		default :
			DEBUGMSG (ZONE_MISC, (TEXT("Got WM_COMMAND=%d\r\n"), LOWORD(wParam)));
			return (DefWindowProc(hWnd, message, wParam, lParam));
		}
		break;

    case WM_WININICHANGE:
#ifdef USE_SIP    
        if (g_pSipGetInfo && (wParam ==  SPI_SETSIPINFO))
        {
            // SIP most likely either was raised or lowered
            SIPINFO si;

            memset(&si, 0, sizeof(SIPINFO));
    		si.cbSize = sizeof(si);
    		if ((*g_pSipGetInfo)(&si) )
    		{
                // Resize the main window and the listview
                SetWindowPos(hWnd, NULL, si.rcVisibleDesktop.left, si.rcVisibleDesktop.top,
                                si.rcVisibleDesktop.right - si.rcVisibleDesktop.left,
                                si.rcVisibleDesktop.bottom - si.rcVisibleDesktop.top,
                                SWP_NOACTIVATE | SWP_NOZORDER);

				// And the listview--must convert to client coordinates here
                si.rcVisibleDesktop.top += CallCommCtrlFunc(CommandBar_Height)(v_hCmdBar);
                MapWindowRect(NULL, GetParent(v_hListWnd), &si.rcVisibleDesktop);
                SetWindowPos(v_hListWnd, NULL, si.rcVisibleDesktop.left, si.rcVisibleDesktop.top,
                                si.rcVisibleDesktop.right - si.rcVisibleDesktop.left,
                                si.rcVisibleDesktop.bottom - si.rcVisibleDesktop.top,
                                SWP_NOACTIVATE | SWP_NOZORDER);
     		}
        }
#endif     
        break;

	case WM_DESTROY:
		// Clean up the image list
		ImageList_Destroy (ListView_GetImageList(v_hListWnd, LVSIL_NORMAL));
		ImageList_Destroy (ListView_GetImageList(v_hListWnd, LVSIL_SMALL));
		PostQuitMessage(0);
		break;

	case WM_ACTIVATE:
		if (LOWORD(wParam) != WA_INACTIVE) {
			SetFocus (v_hListWnd);
		}
		break;

	default:
		return (DefWindowProc(hWnd, message, wParam, lParam));
	}

return (0);
}


BOOL
InitApplication(HINSTANCE hInstance)
{
    WNDCLASS  wc;

    // Register IP class window
    RegisterIPClass(hInstance);
    
    wc.style = 0;
    wc.lpfnWndProc = (WNDPROC) WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = 0;
    wc.hCursor = 0;
    wc.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
    wc.lpszMenuName = 0;
    wc.lpszClassName = szAppName;
    return(RegisterClass(&wc));
}

// InitListViewImageList - creates image lists for a list view.
// Returns TRUE if successful or FALSE otherwise.
// hwndLV - handle of the list view control
BOOL WINAPI
InitListViewImageLists(HWND hwndLV)
{
	HICON hiconItem;        // icon for list view items
	HIMAGELIST himlLarge;   // image list for icon view
	HIMAGELIST himlSmall;   // image list for other views

	// Create the full-sized and small icon image lists.
	himlLarge = ImageList_Create(GetSystemMetrics(SM_CXICON),
								 GetSystemMetrics(SM_CYICON), TRUE, 1, 1);
	himlSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON),
								 GetSystemMetrics(SM_CYSMICON), TRUE, 1, 1);

	// Add an icon to each image list.
	hiconItem = LoadIcon(v_hInst, MAKEINTRESOURCE(IDI_NEWCONN));
	ImageList_AddIcon(himlLarge, hiconItem);
    hiconItem = (HICON)LoadImage(v_hInst, MAKEINTRESOURCE(IDI_NEWCONN), 
                                 IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
	ImageList_AddIcon(himlSmall, hiconItem);
	DeleteObject(hiconItem);
	hiconItem = LoadIcon(v_hInst, MAKEINTRESOURCE((v_fPortrait ? IDI_RNA2 : IDI_RNA)));
	ImageList_AddIcon(himlLarge, hiconItem);
    hiconItem = (HICON)LoadImage(v_hInst, MAKEINTRESOURCE((v_fPortrait ? IDI_RNA2 : IDI_RNA)), 
                                 IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);    
	ImageList_AddIcon(himlSmall, hiconItem);
	DeleteObject(hiconItem);
	hiconItem = LoadIcon(v_hInst, MAKEINTRESOURCE(IDI_DIRECTCC));
	ImageList_AddIcon(himlLarge, hiconItem);
    hiconItem = (HICON)LoadImage(v_hInst, MAKEINTRESOURCE(IDI_DIRECTCC), 
                                 IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);    
	ImageList_AddIcon(himlSmall, hiconItem);
	DeleteObject(hiconItem);

	// Assign the image lists to the list view control.
	ListView_SetImageList(hwndLV, himlLarge, LVSIL_NORMAL);
	ListView_SetImageList(hwndLV, himlSmall, LVSIL_SMALL);
	return TRUE;
}

// InitListViewColumns - adds columns to a list view control.
// Returns TRUE if successful or FALSE otherwise.
// hwndLV - handle of the list view control
BOOL WINAPI
InitListViewColumns(HWND hwndLV)
{
	TCHAR szTemp[256];     // temporary buffer
	LV_COLUMN lvc;
	int iCol;

	// Initialize the LV_COLUMN structure.
	lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	lvc.fmt = LVCFMT_LEFT;
	lvc.cx = 100;
	lvc.pszText = szTemp;

	// Add the columns.
	for (iCol = 0; iCol < NUM_LV_COLUMNS; iCol++) {
		lvc.iSubItem = iCol;
        switch (iCol)
        {
            case 0 :
                lvc.cx = 150;
                break;
            case 2 :
                lvc.cx = 225;
                break;
            default:
                lvc.cx = 100;
        }
            
		LoadString(v_hInst, IDS_ENTRYCOL + iCol, szTemp,
				   sizeof(szTemp));
		if (ListView_InsertColumn(hwndLV, iCol, &lvc) == -1)
			return FALSE;
	}

⌨️ 快捷键说明

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