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