📄 remnet.c
字号:
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 + -