Example #1
0
int CALLBACK CompareListViewColumn( LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort )
{
	LISTVIEW_SORT			*	ctx = (LISTVIEW_SORT *) lParamSort;
	WCHAR						text1[ MAX_PATH ];
	WCHAR						text2[ MAX_PATH ];
	int							order = CSTR_EQUAL;
	int							idx1, idx2;
	LVFINDINFO					find;
	double						num1, num2;

	// Get indices of items
	if ( ctx->UsingEx )  {
		idx1 = lParam1;
		idx2 = lParam2;
	} else {
		find.flags = LVFI_PARAM;
		find.lParam = lParam1;
		idx1 = ListView_FindItem( ctx->hList, -1, &find );
		find.lParam = lParam2;
		idx2 = ListView_FindItem( ctx->hList, -1, &find );
	}        

	ListView_GetItemText( ctx->hList, idx1, ctx->Column, text1, MAX_PATH );
	ListView_GetItemText( ctx->hList, idx2, ctx->Column, text2, MAX_PATH );

	switch ( ctx->ColumnList[ ctx->Column ].Type )  {
		case DATATYPE_TEXT:
			order = FilenameCompare( text1, text2 );
			break;

		case DATATYPE_NUMBER:
			_stscanf( text1, TEXT("%lf"), &num1 );
			_stscanf( text2, TEXT("%lf"), &num2 );
			if ( num1 > num2 )
				order = 1;
			else if ( num1 < num2 )
				order = -1;
			else
				order = 0;
			break;

		case DATATYPE_HEX:
			_stscanf( text1, TEXT("%lx"), &num1 );
			_stscanf( text2, TEXT("%lx"), &num2 );
			if ( num1 > num2 )
				order = 1;
			else if ( num1 < num2 )
				order = -1;
			else
				order = 0;
			break;

		case DATATYPE_DATE:
			{
				VarDateFromStr( text1, LANG_USER_DEFAULT, 0, &num1 );
				VarDateFromStr( text2, LANG_USER_DEFAULT, 0, &num2 );
				if ( num1 < num2 )
					order = -1;
				else if ( num1 > num2 )
					order = 1;
				else
					order = 0;
			}
			break;
	}

	if ( ctx->ColumnList[ ctx->Column ].SortDir == SORTDIR_DOWN )
		order = -order;

	return order;
}
Example #2
0
int32 ListView_ReadInt( HWND hwnd, int iItem, int iSubItem )
{
	Str255 buf;
	ListView_GetItemText(hwnd,iItem,iSubItem,buf,255);
	return sti(buf);
}
Example #3
0
void DisplayCurrListItemInTextBox( int sel )
{
	char lineStr[LANG_LINE_SIZE];
	ListView_GetItemText( hWndLangBuilderListView, sel, EDIT_LANGUAGE_LISTVIEW_POS, lineStr, LANG_LINE_SIZE );
	SetWindowText( GetDlgItem( hDlg, IDC_LANGTOKEN_TEXT), lineStr );
}
//-----------------------------------------------------------------------------
void SCRIPT_DEBUGGER_SetParams(ScriptDebuggerInfos & _s)
{
	if (_s.bClear)
	{
		_s.bClear = false;
		SendMessage(iInfo.hGlobals, LVM_DELETEALLITEMS, 0, 0);
		SendMessage(iInfo.hLocals, LVM_DELETEALLITEMS, 0, 0);
		SendMessage(iInfo.hObjName, WM_SETTEXT, 0, (LPARAM) "");
		SendMessage(iInfo.hTargetName, WM_SETTEXT, 0, (LPARAM) "");
		SendMessage(iInfo.hTargetPos[0], WM_SETTEXT, 0, (LPARAM) "");
		SendMessage(iInfo.hTargetPos[1], WM_SETTEXT, 0, (LPARAM) "");
		SendMessage(iInfo.hTargetPos[2], WM_SETTEXT, 0, (LPARAM) "");
		SendMessage(iInfo.hBehavior, WM_SETTEXT, 0, (LPARAM) "");
		SendMessage(iInfo.hTimers, WM_SETTEXT, (WPARAM) 0, (LPARAM) "");
		SendMessage(iInfo.hEvents, WM_SETTEXT, (WPARAM) 0, (LPARAM) "");
	}

	SendMessage(iInfo.hObjName, WM_SETTEXT, 0, (LPARAM) _s.lpszObjName);
	SendMessage(iInfo.hObjPos[0], WM_SETTEXT, 0, (LPARAM) _s.p3ObjPos[0]);
	SendMessage(iInfo.hObjPos[1], WM_SETTEXT, 0, (LPARAM) _s.p3ObjPos[1]);
	SendMessage(iInfo.hObjPos[2], WM_SETTEXT, 0, (LPARAM) _s.p3ObjPos[2]);

	SendMessage(iInfo.hTargetName, WM_SETTEXT, 0, (LPARAM) _s.lpszTargetName);
	SendMessage(iInfo.hTargetPos[0], WM_SETTEXT, 0, (LPARAM) _s.p3TargetPos[0]);
	SendMessage(iInfo.hTargetPos[1], WM_SETTEXT, 0, (LPARAM) _s.p3TargetPos[1]);
	SendMessage(iInfo.hTargetPos[2], WM_SETTEXT, 0, (LPARAM) _s.p3TargetPos[2]);

	//SendMessage(iInfo.hGlobals, LVM_DELETEALLITEMS, 0, 0);
	if (sdu.bVariables)
	{
		// Global Vars
		for (int k = 0; k < _s.iNbGlobals; k++)
		{
			int t = -1;
			char buf[256];

			for (int j = 0; j < ListView_GetItemCount(iInfo.hGlobals); j++)
			{
				ListView_GetItemText(iInfo.hGlobals, j, 0, buf, 256);

				if (strcmp(buf, _s.pGlobalVars[k].lpszVarName) == 0)
				{
					t = j;
				}
			}

			if (t != -1)
			{
				ListView_SetItemText(iInfo.hGlobals, t, 0, _s.pGlobalVars[k].lpszVarName);
				ListView_SetItemText(iInfo.hGlobals, t, 1, _s.pGlobalVars[k].lpszVarValue);
			}
			else
			{
				InsertItem(iInfo.hGlobals, _s.pGlobalVars[k].lpszVarName, _s.pGlobalVars[k].lpszVarValue);
				(void)ListView_SortItems(iInfo.hGlobals, MyCompareFunc, 0);
			}

		}

		// Local Vars
		if (_s.iNbLocals == 0) SendMessage(iInfo.hLocals, LVM_DELETEALLITEMS, 0, 0);

		for (int i = 0; i < _s.iNbLocals; i++)
		{
			int t = -1;
			char buf[256];

			for (int j = 0; j < ListView_GetItemCount(iInfo.hLocals); j++)
			{
				ListView_GetItemText(iInfo.hLocals, j, 0, buf, 256);

				if (strcmp(buf, _s.pLocalVars[i].lpszVarName) == 0)
				{
					t = j;
				}
			}

			if (t != -1)
			{
				ListView_SetItemText(iInfo.hLocals, t, 0, _s.pLocalVars[i].lpszVarName);
				ListView_SetItemText(iInfo.hLocals, t, 1, _s.pLocalVars[i].lpszVarValue);
			}
			else
			{
				InsertItem(iInfo.hLocals, _s.pLocalVars[i].lpszVarName, _s.pLocalVars[i].lpszVarValue);
				(void)ListView_SortItems(iInfo.hLocals, MyCompareFunc, 0);
			}
		}
	}

	SendMessage(iInfo.hBehavior, WM_SETTEXT, 0, (LPARAM) _s.lpszBehavior);

	if (sdu.bEvents)
	{
		if (_s.bEvents)
		{
			int iSize = SendMessage(iInfo.hEvents, WM_GETTEXTLENGTH, 0, 0);
			SendMessage(iInfo.hEvents, EM_SETSEL, (WPARAM) iSize, (LPARAM) iSize);
			SendMessage(iInfo.hEvents, EM_REPLACESEL, (WPARAM) true, (LPARAM) _s.lpszEvents);
			// slide tout en bas
			SendMessage(iInfo.hEvents, WM_VSCROLL, SB_BOTTOM, 0);
		}
	}

	if (sdu.bTimers)
	{
		if (_s.bTimers)
		{
			SendMessage(iInfo.hTimers, WM_SETTEXT, (WPARAM) 0, (LPARAM) _s.lpszTimers);
			// slide tout en bas
			SendMessage(iInfo.hTimers, WM_VSCROLL, SB_BOTTOM, 0);
		}
	}

	UpdateWindow(ghDialog);
}
Example #5
0
void 
FileTransfer::FileTransferUpload()
{
	int numOfFilesToUpload = 0, currentUploadIndex = -1;
	DWORD sz_rfbFileSize;
	DWORD sz_rfbBlockSize= 8192;
	DWORD dwNumberOfBytesRead = 0;
	unsigned int mTime = 0;
	char path[rfbMAX_PATH + rfbMAX_PATH + 2];
	BOOL bResult;
	numOfFilesToUpload = ListView_GetSelectedCount(m_hwndFTClientList);
	if (numOfFilesToUpload < 0) {
		SetWindowText(m_hwndFTStatus, "No file selected, nothing to upload.");
		BlockingFileTransferDialog(TRUE);
		EnableWindow(GetDlgItem(m_hwndFileTransfer, IDC_FTCANCEL), FALSE);
		return;
	}

	for (int i = 0; i < numOfFilesToUpload; i++) {
		BlockingFileTransferDialog(FALSE);
		EnableWindow(GetDlgItem(m_hwndFileTransfer, IDC_FTCANCEL), TRUE);
		int index = ListView_GetNextItem(m_hwndFTClientList, currentUploadIndex, LVNI_SELECTED);
		if (index < 0) {
			SetWindowText(m_hwndFTStatus, "No file is selected, nothing to download.");
			return;
		}
		currentUploadIndex = index;
		ListView_GetItemText(m_hwndFTClientList, currentUploadIndex, 0, m_ClientFilename, rfbMAX_PATH);
		sprintf(path, "%s\\%s", m_ClientPath, m_ClientFilename);
		strcpy(m_UploadFilename, path);
		WIN32_FIND_DATA FindFileData;
		SetErrorMode(SEM_FAILCRITICALERRORS);
		HANDLE hFile = FindFirstFile(path, &FindFileData);
		SetErrorMode(0);
		if (hFile == INVALID_HANDLE_VALUE) {
			SetWindowText(m_hwndFTStatus, "Could not find selected file, can't upload");
			// Continue with upload of other files.
			continue;
		} else if ((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) {
			SetWindowText(m_hwndFTStatus, "Cannot upload a directory");
			// Continue with upload of other files.
			continue;
		} else {
			sz_rfbFileSize = FindFileData.nFileSizeLow;
			mTime = FiletimeToTime70(FindFileData.ftLastWriteTime);
			strcpy(m_ServerFilename, FindFileData.cFileName);
		}
		FindClose(hFile);
		if ((sz_rfbFileSize != 0) && (sz_rfbFileSize <= sz_rfbBlockSize)) sz_rfbBlockSize = sz_rfbFileSize;
		m_hFiletoRead = CreateFile(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
		if (m_hFiletoRead == INVALID_HANDLE_VALUE) {
			SetWindowText(m_hwndFTStatus, "Upload failed: could not open selected file");
			BlockingFileTransferDialog(TRUE);
			EnableWindow(GetDlgItem(m_hwndFileTransfer, IDC_FTCANCEL), FALSE);
			return;
		}
		char buffer[rfbMAX_PATH + rfbMAX_PATH + rfbMAX_PATH + rfbMAX_PATH + 20];
		sprintf(buffer, "Uploading: %s\\%s -> %s\\%s ...",
				m_ClientPath, m_ClientFilename, m_ServerPath, m_ServerFilename);
		SetWindowText(m_hwndFTStatus, buffer);
		sprintf(path, "%s\\%s", m_ServerPath, m_ClientFilename);
		ConvertPath(path);
		int pathLen = strlen(path);

		char *pAllFURMessage = new char[sz_rfbFileUploadRequestMsg + pathLen];
		rfbFileUploadRequestMsg *pFUR = (rfbFileUploadRequestMsg *) pAllFURMessage;
		char *pFollowMsg = &pAllFURMessage[sz_rfbFileUploadRequestMsg];
		pFUR->type = rfbFileUploadRequest;
		pFUR->compressedLevel = 0;
		pFUR->fNameSize = Swap16IfLE(pathLen);
		pFUR->position = Swap32IfLE(0);
		memcpy(pFollowMsg, path, pathLen);
		m_clientconn->WriteExact(pAllFURMessage, sz_rfbFileUploadRequestMsg + pathLen); 
		delete [] pAllFURMessage;

		if (sz_rfbFileSize == 0) {
			SendFileUploadDataMessage(mTime);
		} else {
			int amount = sz_rfbFileSize / (sz_rfbBlockSize * 10);

			InitProgressBar(0, 0, amount, 1);

			DWORD dwPortionRead = 0;
			char *pBuff = new char [sz_rfbBlockSize];
			m_bUploadStarted = TRUE;
			while(m_bUploadStarted) {
				ProcessDlgMessage(m_hwndFileTransfer);
				if (m_bTransferEnable == FALSE) {
					SetWindowText(m_hwndFTStatus, "File transfer canceled");
					EnableWindow(GetDlgItem(m_hwndFileTransfer, IDC_FTCANCEL), FALSE);
					BlockingFileTransferDialog(TRUE);
					char reason[] = "File transfer canceled by user";
					int reasonLen = strlen(reason);
					char *pFUFMessage = new char[sz_rfbFileUploadFailedMsg + reasonLen];
					rfbFileUploadFailedMsg *pFUF = (rfbFileUploadFailedMsg *) pFUFMessage;
					char *pReason = &pFUFMessage[sz_rfbFileUploadFailedMsg];
					pFUF->type = rfbFileUploadFailed;
					pFUF->reasonLen = Swap16IfLE(reasonLen);
					memcpy(pReason, reason, reasonLen);
					m_clientconn->WriteExact(pFUFMessage, sz_rfbFileUploadFailedMsg + reasonLen);
					delete [] pFUFMessage;
					break;
				}
				bResult = ReadFile(m_hFiletoRead, pBuff, sz_rfbBlockSize, &dwNumberOfBytesRead, NULL);
				if (bResult && dwNumberOfBytesRead == 0) {
					/* This is the end of the file. */
					SendFileUploadDataMessage(mTime);
					break;
				}
				SendFileUploadDataMessage((unsigned short)dwNumberOfBytesRead, pBuff);
				dwPortionRead += dwNumberOfBytesRead;
				if (dwPortionRead >= (10 * sz_rfbBlockSize)) {
					dwPortionRead = 0;
					SendMessage(m_hwndFTProgress, PBM_STEPIT, 0, 0);
				}
			}
			if (m_bTransferEnable == FALSE)
				break;
			m_bUploadStarted = FALSE;
			delete [] pBuff;
		}
		SendMessage(m_hwndFTProgress, PBM_SETPOS, 0, 0);
		SetWindowText(m_hwndFTStatus, "");
		CloseHandle(m_hFiletoRead);
	}
	EnableWindow(GetDlgItem(m_hwndFileTransfer, IDC_FTCANCEL), FALSE);
	BlockingFileTransferDialog(TRUE);
	SendFileListRequestMessage(m_ServerPath, 0);
}
Example #6
0
static INT_PTR CALLBACK DlgProcMirOTROptsProto(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	HWND lv = GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS);
	int sel;

	switch (msg) {
	case WM_INITDIALOG:
		TranslateDialogDefault(hwndDlg);
		{
			HWND cmb = GetDlgItem(hwndDlg, IDC_CMB_PROTO_POLICY);
			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_DEFAULT));
			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_ALWAYS));
			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_OPP));
			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_MANUAL));
			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_NEVER));
			SendDlgItemMessage(hwndDlg, IDC_CMB_PROTO_POLICY, CB_SETCURSEL, (LPARAM)-1, 0);
			EnableWindow(GetDlgItem(hwndDlg, IDC_CMB_PROTO_POLICY), FALSE);
			EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_PROTO_NEWKEY), FALSE);
			EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_PROTO_FORGET), FALSE);
		}

		SendMessage(lv, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT);// | LVS_EX_CHECKBOXES);
		{
			// add list columns
			LVCOLUMN lvc;
			// Initialize the LVCOLUMN structure.
			// The mask specifies that the format, width, text, and
			// subitem members of the structure are valid.
			lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
			lvc.fmt = LVCFMT_LEFT;

			lvc.iSubItem = 0;
			lvc.pszText = TranslateT(LANG_PROTO);
			lvc.cx = 85;     // width of column in pixels
			ListView_InsertColumn(lv, 0, &lvc);

			lvc.iSubItem = 1;
			lvc.pszText = TranslateT(LANG_POLICY);
			lvc.cx = 80;     // width of column in pixels
			ListView_InsertColumn(lv, 1, &lvc);

			lvc.iSubItem = 2;
			lvc.pszText = TranslateT(LANG_FINGERPRINT);
			lvc.cx = 275;     // width of column in pixels
			ListView_InsertColumn(lv, 2, &lvc);
		}
		PostMessage(hwndDlg, WMU_REFRESHPROTOLIST, 0, 0);
		return TRUE;

	case WMU_REFRESHPROTOLIST:
		ListView_DeleteAllItems(lv);
		{
			LV_ITEM item = { 0 };

			int num_protocols;
			PROTOACCOUNT **pppDesc;
			Proto_EnumAccounts(&num_protocols, &pppDesc);
			for (int i = 0; i < num_protocols; i++) {
				if (!mir_strcmp(pppDesc[i]->szModuleName, META_PROTO))
					continue;
				if ((CallProtoService(pppDesc[i]->szModuleName, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_IM) == 0)
					continue;

				item.mask = LVIF_TEXT | LVIF_PARAM;
				item.pszText = pppDesc[i]->tszAccountName;
				item.lParam = (LPARAM)pppDesc[i]->szModuleName;
				int ilvItem = ListView_InsertItem(lv, &item);

				ListView_SetItemText(lv, ilvItem, 1, (TCHAR*)policy_to_string(db_get_dw(0, MODULENAME"_ProtoPol", pppDesc[i]->szModuleName, CONTACT_DEFAULT_POLICY)));

				char fprint[45];
				if (otrl_privkey_fingerprint(otr_user_state, fprint, pppDesc[i]->szModuleName, pppDesc[i]->szModuleName)) {
					TCHAR *temp = mir_a2t(fprint);
					ListView_SetItemText(lv, ilvItem, 2, temp);
					mir_free(temp);
				}
			}
		}
		return TRUE;

	case WM_COMMAND:
		switch (HIWORD(wParam)) {
		case BN_CLICKED:
			switch (LOWORD(wParam)) {
			case IDC_BTN_PROTO_NEWKEY:
				sel = ListView_GetSelectionMark(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS));
				if (sel != -1) {
					PROTOREGENKEYOPTIONS *opts = new PROTOREGENKEYOPTIONS();
					opts->refresh = hwndDlg;
					ListView_GetItemText(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS), sel, 0, opts->proto, _countof(opts->proto));
					CloseHandle((HANDLE)_beginthreadex(0, 0, regen_key_thread, opts, 0, 0));
				}
				break;
			
			case IDC_BTN_PROTO_FORGET:
				sel = ListView_GetSelectionMark(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS));
				if (sel != -1) {
					TCHAR buff_proto[128];
					ListView_GetItemText(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS), sel, 0, buff_proto, _countof(buff_proto));
					TCHAR buff[512];
					mir_sntprintf(buff, TranslateT(LANG_OTR_ASK_REMOVEKEY), buff_proto);
					if (IDYES == MessageBox(hwndDlg, buff, TranslateT(LANG_OTR_INFO), MB_ICONQUESTION | MB_YESNO)) {
						char *proto = GetProtoName(lv, sel);
						if (proto == NULL)
							break;

						OtrlPrivKey *key = otrl_privkey_find(otr_user_state, proto, proto);
						if (key) {
							otrl_privkey_forget(key);
							otrl_privkey_write(otr_user_state, _T2A(g_private_key_filename));
							ListView_SetItemText(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS), sel, 2, _T(""));
						}
					}
				}
			}
			break;

		case CBN_SELCHANGE:
			switch (LOWORD(wParam)) {
			case IDC_CMB_PROTO_POLICY:
				int proto = ListView_GetSelectionMark(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS));
				if (proto == -1) break;
				int sel = SendDlgItemMessage(hwndDlg, IDC_CMB_PROTO_POLICY, CB_GETCURSEL, 0, 0);
				if (sel == CB_ERR) break;
				int len = SendDlgItemMessage(hwndDlg, IDC_CMB_PROTO_POLICY, CB_GETLBTEXTLEN, sel, 0);
				if (len < 0) break;
				TCHAR *text = new TCHAR[len + 1];
				SendDlgItemMessage(hwndDlg, IDC_CMB_PROTO_POLICY, CB_GETLBTEXT, sel, (LPARAM)text);
				ListView_SetItemText(GetDlgItem(hwndDlg, IDC_LV_PROTO_PROTOS), proto, 1, text);
				delete[] text;
				SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
			}
			break;
		}
		break;

	case WM_NOTIFY:
		if (((LPNMHDR)lParam)->code == LVN_ITEMCHANGED && ((LPNMHDR)lParam)->hwndFrom == lv) {
			LPNMLISTVIEW notif = (LPNMLISTVIEW)lParam;
			if ((notif->uNewState & LVIS_SELECTED) == 0)
				break;

			if (notif->iItem == -1) {
				SendDlgItemMessage(hwndDlg, IDC_CMB_PROTO_POLICY, CB_SETCURSEL, (LPARAM)-1, 0);
				EnableWindow(GetDlgItem(hwndDlg, IDC_CMB_PROTO_POLICY), FALSE);
				EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_PROTO_NEWKEY), FALSE);
				EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_PROTO_FORGET), FALSE);
			}
			else {
				EnableWindow(GetDlgItem(hwndDlg, IDC_CMB_PROTO_POLICY), TRUE);
				EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_PROTO_NEWKEY), TRUE);
				EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_PROTO_FORGET), TRUE);
				TCHAR buff[50];
				ListView_GetItemText(((LPNMHDR)lParam)->hwndFrom, notif->iItem, 1, buff, _countof(buff));
				SendDlgItemMessage(hwndDlg, IDC_CMB_PROTO_POLICY, CB_SELECTSTRING, (LPARAM)-1, (WPARAM)buff);
			}
		}
		else if (((LPNMHDR)lParam)->code == PSN_APPLY) {
			int cnt = ListView_GetItemCount(lv);
			TCHAR policy[64];
			for (int i = 0; i < cnt; ++i) {
				char *proto = GetProtoName(lv, i);
				if (proto == NULL)
					continue;

				ListView_GetItemText(lv, i, 1, policy, _countof(policy));
				db_set_dw(0, MODULENAME"_ProtoPol", proto, policy_from_string(policy));
			}
			// handle apply
			return TRUE;
		}
		break;
	}
	return FALSE;
}
Example #7
0
BOOL CJobListDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	CP4Job *job;
	CString str;

	SetFont(m_Font);
	
	// Modify the list control style so that the entire selected row is highlighted
	DWORD dwStyle = ::SendMessage(m_JobListCtrl.m_hWnd,LVM_GETEXTENDEDLISTVIEWSTYLE,0,0);
	dwStyle |= LVS_EX_FULLROWSELECT;
	::SendMessage(m_JobListCtrl.m_hWnd,LVM_SETEXTENDEDLISTVIEWSTYLE,0,dwStyle);

	// Make sure list control shows selection when not the focused control
	m_JobListCtrl.ModifyStyle(0, LVS_SHOWSELALWAYS, 0);

	// Set the imagelist
	m_JobListCtrl.SetImageList(TheApp()->GetImageList(), LVSIL_SMALL);

	// Get original size of control
	CRect rect;
	m_JobListCtrl.GetWindowRect(&rect);

	int colwidth[MAX_JOBS_COLUMNS]={90,80,60,90,200};

	// Record the initial window size, and then see if there is a registry preference
	GetWindowRect(&m_InitRect);
	m_WinPos.RestoreWindowPosition();
	// make sure OnSize gets called to reposition controls
	// if restored position is default, this won't happen unless
	// we force it
	GetClientRect(&rect);
	SendMessage(WM_SIZE, 0, MAKELONG(rect.Width(), rect.Height()));

	// Get new size of control after resized as specified in the registry
	m_JobListCtrl.GetWindowRect(&rect);

	// Get any saved column widths from registry
	RestoreSavedWidths(colwidth, MAX_JOBS_COLUMNS);

	// Make sure no column completely disappeared (because you can't get it back then)
	for (int i=-1; ++i < MAX_JOBS_COLUMNS; )
	{
		if (colwidth[i] < 5)
			colwidth[i] = 5;
	}

	// Show the current job filter
	CString txt;
	m_sFilter = PersistentJobFilter(KEY_READ);
	if(m_sFilter.GetLength() > 0)
	{
		txt.FormatMessage(IDS_JOBFILTERSTR, m_sFilter);
	}
	else
	{
		txt = LoadStringResource(IDS_ALLJOBS);
		GetDlgItem(ID_CLEARFILTER)->EnableWindow(FALSE);
	}
	GetDlgItem(IDC_FILTER_TEXT)->SetWindowText(txt);

	// Use the same font as the calling window
	m_JobListCtrl.SetFont(m_Font);

	// Insert the columns 
	int maxcols = m_ColNames->GetSize();
	int width=GetSystemMetrics(SM_CXVSCROLL);;
	int retval;
	LV_COLUMN lvCol;
	int subItem;
	for(subItem=0; subItem < maxcols; subItem++)
	{
		lvCol.mask= LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT |LVCF_WIDTH;
		lvCol.fmt=LVCFMT_LEFT;
		lvCol.pszText=( LPTSTR )( LPCTSTR ) m_ColNames->GetAt( subItem );
		lvCol.iSubItem=subItem;
		if(subItem < maxcols-1)
		{
			lvCol.cx=colwidth[subItem];
			width+=lvCol.cx;
		}
		else
			lvCol.cx=rect.Width() - width - 4;  // expand last column to fill window
		retval=m_JobListCtrl.InsertColumn(subItem, &lvCol);
	}
 
	// Add the data
	LV_ITEM lvItem;
	int iActualItem = -1;
	POSITION pos= m_pJobList->GetHeadPosition();
	int iItem;
	for(iItem=0; iItem < m_pJobList->GetCount(); iItem++)
	{
		job= (CP4Job *) m_pJobList->GetNext(pos);
		
		for(subItem=0; subItem < maxcols; subItem++)
		{
			lvItem.mask=LVIF_TEXT | 
					((subItem==0) ? LVIF_IMAGE : 0) |
					((subItem==0) ? LVIF_PARAM : 0);
			lvItem.iItem= (subItem==0) ? iItem : iActualItem;
            ASSERT(lvItem.iItem != -1);
			lvItem.iSubItem= subItem;
			lvItem.iImage = CP4ViewImageList::VI_JOB;
			lvItem.lParam=(LPARAM) job;
			txt=PadCRs(job->GetJobField(subItem));
			lvItem.pszText = const_cast<LPTSTR>( (LPCTSTR ) txt);

			if(subItem==0)
				iActualItem=m_JobListCtrl.InsertItem(&lvItem);
			else
				m_JobListCtrl.SetItem(&lvItem);
		}
	}

	if(m_pJobList->GetCount())
	{
		// Sort the jobs list the same way the JobView is sorted
		m_JobListCtrl.SortItems( JobListDlgSort, m_LastSortColumn );

		// Find the job currently selected in the jobs pane
		iItem=0;
		if (!m_CurrJob->IsEmpty())
		{
			TCHAR cur[ LISTVIEWNAMEBUFSIZE + 1 ];
			TCHAR str[ LISTVIEWNAMEBUFSIZE + 1 ];

			lstrcpy(cur, m_CurrJob->GetBuffer(m_CurrJob->GetLength()+1));
			m_CurrJob->ReleaseBuffer(-1);
			for( ; iItem < ListView_GetItemCount( m_JobListCtrl.m_hWnd ); iItem++ )
			{
				ListView_GetItemText( m_JobListCtrl.m_hWnd, iItem, 0, str, LISTVIEWNAMEBUFSIZE );
				if( !Compare(cur, str) )
					break;
			}
			if (iItem >= ListView_GetItemCount( m_JobListCtrl.m_hWnd ))
				iItem = 0;
		}

		// Make sure the same job is selected and visible
		m_JobListCtrl.SetItemState(iItem, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
		m_JobListCtrl.EnsureVisible( iItem, FALSE );
		
		// Set change description to match selected item in list
		job= (CP4Job *) m_JobListCtrl.GetItemData(iItem);
		str= job->GetDescription();
		str.Replace(_T("\n"), _T("\r\n"));
		m_JobDesc.SetWindowText(str);
	}
	else if( m_sFilter.IsEmpty() )
	{
        AfxMessageBox(IDS_NO_JOBS_AVAILABLE_FOR_FIXING, MB_ICONEXCLAMATION);
		EndDialog(IDCANCEL);
	}
	else
		AddToStatus(LoadStringResource(IDS_USEJOBFILTERBUTTON), SV_MSG);

	if (!LoadJobStatusComboBox())
	{
		GetDlgItem(IDC_JOBSTATUSPROMPT)->ShowWindow( SW_HIDE );
		GetDlgItem(IDC_JOBSTATUS)->ShowWindow( SW_HIDE );
	}

	// And finally, set focus to the list control so that the first 'down'
	// keystroke can be used to scroll down
	m_JobListCtrl.SetFocus();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
Example #8
0
BOOL CALLBACK DdkHookAppDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) {
	int n=0;
	LVCOLUMN COL;
	BOOL RetBOOL;
	switch(uMsg) {
		case WM_INITDIALOG:
			hDdkHookAppDlg=hDlg;
			hListPS=GetDlgItem(hDlg,IDC_LIST_PS);
			hEditPS=GetDlgItem(hDlg,IDC_EDIT_PS);
			hEditState=GetDlgItem(hDlg,IDC_EDIT_STATE);
			COL.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
			COL.fmt=LVCFMT_LEFT; //왼쪽 정렬
			COL.cx=150;
			COL.pszText="ProcName"; //항목의 이름
			COL.iSubItem=0; //항목의 번호
			SendMessage(hListPS, LVM_INSERTCOLUMN,COL.iSubItem,(LPARAM)&COL);
			COL.cx=50;
			COL.pszText="ProcID"; //항목의 이름
			COL.iSubItem=1; //항목의 번호
			SendMessage(hListPS, LVM_INSERTCOLUMN,COL.iSubItem,(LPARAM)&COL);
			PSList();
			return TRUE;
		case WM_NOTIFY:
			switch(LOWORD(wParam)) {
				case IDC_LIST_PS:
					if(((LPNMHDR)lParam)->code==NM_DBLCLK) {
						char Text1[32]={0},Text2[32]={0},Temp[128]={0};
						ULONG ret;
						int iSlected=ListView_GetNextItem(hListPS,-1,LVNI_FOCUSED);
						if(iSlected==-1) {
							MessageBox(hDlg,"No Items in ListView","Error",MB_OK|MB_ICONINFORMATION);
							break;
						}
						ListView_GetItemText(hListPS,iSlected,0,Text1,32);
						strcpy_s(Temp,Text1);
						ListView_GetItemText(hListPS,iSlected,1,Text1,32);
						sprintf_s(Text2,"(%s): %s",Text1,"프로세스강제종료막음");
						strcat_s(Temp,Text2);
						SetWindowText(hEditPS,Temp);
						//-----------------------------
						handle=CreateFile(FullDeviceName,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
						if(handle==(HANDLE)-1) {
							SetWindowText(hEditPS,"");
							MessageBox(hDlg,"CreateFile Error","Error",MB_OK);
							break;
						}
						WriteFile(handle,Text1,(DWORD)strlen(Text1),&ret,NULL);
						CloseHandle(handle);
					}
					break;
			}
			return TRUE;
		case WM_COMMAND:
			switch(LOWORD(wParam)) {
				case IDC_BT_REVIEW:
					ListView_DeleteAllItems(hListPS);
					PSList();
					break;
				case IDC_BT_DRINST:
					RetBOOL=DriverInstall(DriverName,DriverExe);
					if(!RetBOOL) SetWindowText(hEditState,"Cannot install");
					else {
						bInstall=TRUE;
						RetBOOL=DriverStart(DriverName);
						if(!RetBOOL) SetWindowText(hEditState,"Cannot start");
						else {
							bStart=TRUE;
							SetWindowText(hEditState,"Started");
						}
					}
					break;
				case IDC_BT_DRREM:
					if(bInstall) {
						RetBOOL=DriverStop(DriverName);
						if(!RetBOOL) SetWindowText(hEditState,"Cannot stop");
						else {
							bStart=FALSE;
							RetBOOL=DriverRemove(DriverName,DriverExe);
							if(!RetBOOL) SetWindowText(hEditState,"Cannot remove");
							else {
								bInstall=FALSE;
								SetWindowText(hEditState,"Removed");
							}
						}
					}
					else SetWindowText(hEditState,"Cannot remove");
					break;
			}
			return TRUE;
		case WM_CLOSE:
			if(bStart) DriverStop(DriverName);
			if(bInstall) DriverRemove(DriverName,DriverExe);
			EndDialog(hDlg,0);
			return TRUE;
	}
	return FALSE;
}
Example #9
0
//
//  FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_COMMAND	- process the application menu
//  WM_PAINT	- Paint the main window
//  WM_DESTROY	- post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId, wmEvent;
	PAINTSTRUCT ps;
	HDC hdc;

	switch (message) 
	{
	case WM_TIMER:
		g_console.OnMessage(CMSG_REFRESH, NULL);
		break;
	case WM_NOTIFY:
			{
				LPNMHDR pnmh = (LPNMHDR)lParam;
				if(pnmh)
				{
					if(pnmh->hwndFrom == m_WndNetworks)
					{
						// message from the list view
						if(pnmh->code == LVN_ITEMCHANGED)
						{
							LPNMLISTVIEW lpn = (LPNMLISTVIEW)pnmh;				
							g_selected_item = lpn->iItem;
							ListView_GetItemText(m_WndNetworks, lpn->iItem, 0, g_ip_address, 1022); 
							ListView_SetHotItem(m_WndNetworks, g_selected_item);
						}
					}
					else if(pnmh->hwndFrom == m_WndFoundObjects)
					{
						// message from the list view
						if(pnmh->code == LVN_ITEMCHANGED)
						{
							LPNMLISTVIEW lpn = (LPNMLISTVIEW)pnmh;				
						}
					}
					else if(pnmh->hwndFrom == m_WndTab)
					{
						if(pnmh->code == TCN_SELCHANGE)
						{
							int iSel = TabCtrl_GetCurSel(m_WndTab);
							switch(iSel)
							{
							case 0:
								ShowWindow(m_WndFoundObjects,SW_HIDE);
								ShowWindow(m_WndNetworks,SW_SHOWNORMAL);
								break;
							case 1:
								ShowWindow(m_WndNetworks,SW_HIDE);
								ShowWindow(m_WndFoundObjects,SW_SHOWNORMAL);
								break;
							default:
								TRACE0("error, tab number not implemented!");
								break;
							}
						}
					}
				}
			}
			break;
	case WM_COMMAND:
		wmId    = LOWORD(wParam); 
		wmEvent = HIWORD(wParam); 
		// Parse the menu selections:
		switch (wmId)
		{
		case ID_SERVER_STARTSERVER:
			if(g_console.m_ServerEngine)
			{
				MessageBox(hWnd, "Server is already running", "Error", MB_OK);
			}
			else if(IDOK == DialogBox(hInst, (LPCTSTR)IDD_DIALOG_SERVER, hWnd, (DLGPROC)ConfigServer))
			{
				g_console.OnMessage(CMSG_STARTSERVER, NULL);						
			}
			break;
		case ID_SERVER_STOPSERVER:
			g_console.OnMessage(CMSG_STOPSERVER, NULL);			
			break;
		case ID_PEER_ADDPEER:
			if(IDOK == DialogBox(hInst, (LPCTSTR)IDD_DIALOG_IP, hWnd, (DLGPROC)ConfigIP))
			{
				g_console.OnMessage(CMSG_ADDPEER, NULL);			
			}
			break;
		case ID_PEER_REMOVEPEER:
			g_console.OnMessage(CMSG_REMOVEPEER, NULL);			
			break;
		case IDM_ABOUT:
			DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
			break;
		case IDM_EXIT:
			DestroyWindow(hWnd);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
		}
		break;
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		// TODO: Add any drawing code here...
		EndPaint(hWnd, &ps);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return 0;
}
Example #10
0
INT_PTR SceneSwitcherSettings::MsgClicked(int controlId, int code, HWND controlHwnd)
{
    switch(controlId)
	{
	case IDC_CLEAR_HOTKEY:
		if(code == BN_CLICKED) {
			SendMessage(GetDlgItem(hwnd, IDC_TOGGLEHOTKEY), HKM_SETHOTKEY, 0, 0);
            SetChangedSettings(pChange = true);
            return TRUE;
        }
        break;

	case IDC_STOP:
		if(code == BN_CLICKED) // Stop button clicked
		{
			if(thePlugin->IsRunning())
				thePlugin->StopThread(hwnd);
			else
			{
				ApplyConfig(hwnd);
                pChange = false;
				thePlugin->StartThread(hwnd);
			}
            SetChangedSettings(pChange);
            return TRUE;
		}
        break;

	case IDUP:
		{
			HWND wsMap = GetDlgItem(hwnd, IDC_WSMAP);
			const int sel = SendMessage(wsMap, LVM_GETSELECTIONMARK, 0, 0);
			if (sel > 0)
			{
				// Get the text from the item
				String wnd;
				wnd.SetLength(256);
				ListView_GetItemText(wsMap, sel, 0, wnd, 256);
				String scn;
				scn.SetLength(256);
				ListView_GetItemText(wsMap, sel, 1, scn, 256);

				// Delete it
				SendMessage(wsMap, LVM_DELETEITEM, sel, 0);

				// Add it above
				LVITEM lv1;
				lv1.mask = LVIF_TEXT;
				lv1.iItem = sel - 1;
				lv1.iSubItem = 0;
				lv1.pszText = wnd;
				LVITEM lv2;
				lv2.mask = LVIF_TEXT;
				lv2.iItem = sel - 1;
				lv2.iSubItem = 1;
				lv2.pszText = scn;
				SendMessage(wsMap, LVM_INSERTITEM, sel - 1, (LPARAM) &lv1);
				SendMessage(wsMap, LVM_SETITEM, sel - 1, (LPARAM) &lv2);

				// Update the selection mark
				SendMessage(wsMap, LVM_SETSELECTIONMARK, 0, sel - 1);
                SetChangedSettings(pChange = true);
                return TRUE;
			}
            break;
		}
		

	case IDDOWN:
		{
			HWND wsMap = GetDlgItem(hwnd, IDC_WSMAP);
			const int sel = SendMessage(wsMap, LVM_GETSELECTIONMARK, 0, 0);
			const int max = SendMessage(wsMap, LVM_GETITEMCOUNT, 0, 0) - 1;
			if (sel > -1 && sel < max)
			{
				// Get the text from the item
				String wnd;
				wnd.SetLength(256);
				ListView_GetItemText(wsMap, sel, 0, wnd, 256);
				String scn;
				scn.SetLength(256);
				ListView_GetItemText(wsMap, sel, 1, scn, 256);

				// Delete it
				SendMessage(wsMap, LVM_DELETEITEM, sel, 0);

				// Add it below
				LVITEM lv1;
				lv1.mask = LVIF_TEXT;
				lv1.iItem = sel + 1;
				lv1.iSubItem = 0;
				lv1.pszText = wnd;
				LVITEM lv2;
				lv2.mask = LVIF_TEXT;
				lv2.iItem = sel + 1;
				lv2.iSubItem = 1;
				lv2.pszText = scn;
				SendMessage(wsMap, LVM_INSERTITEM, sel + 1, (LPARAM) &lv1);
				SendMessage(wsMap, LVM_SETITEM, sel + 1, (LPARAM) &lv2);

				// Update the selection mark
				SendMessage(wsMap, LVM_SETSELECTIONMARK, 0, sel + 1);
                SetChangedSettings(pChange = true);
                return TRUE;
			}
            break;
		}
		
	case IDADD:
		{
			HWND wsMap = GetDlgItem(hwnd, IDC_WSMAP);
			HWND appList = GetDlgItem(hwnd, IDC_APPLIST);
			HWND scnList = GetDlgItem(hwnd, IDC_MAINSCN);
				
			String wnd = GetEditText(appList);
			// First column
			LVITEM lv1;
			lv1.mask = LVIF_TEXT;
			lv1.iItem = 0;
			lv1.iSubItem = 0;
			lv1.pszText = wnd;
			// Second column
			String scn = GetCBText(scnList, CB_ERR);
			LVITEM lv2;
			lv2.mask = LVIF_TEXT;
			lv2.iItem = 0;
			lv2.iSubItem = 1;
			lv2.pszText = scn;
			// Add first column then set second
			SendMessage(wsMap, LVM_INSERTITEM, 0, (LPARAM)&lv1);
			SendMessage(wsMap, LVM_SETITEM, 0, (LPARAM)&lv2);
            SetChangedSettings(pChange = true);
            return TRUE;
		}
        break;

	case IDREM:
		{
			// Remove the item
			HWND wsMap = GetDlgItem(hwnd, IDC_WSMAP);
			const int sel = SendMessage(wsMap, LVM_GETSELECTIONMARK, 0, 0);
			if (sel > -1)
				SendMessage(wsMap, LVM_DELETEITEM, sel, 0);

            SetChangedSettings(pChange = true);
		    return TRUE;
        }
        break;

	case IDC_ALTSWITCH:
	case IDC_ALTNOSWITCH:
		if (code == BN_CLICKED)
		{
			HWND swButton = GetDlgItem(hwnd, IDC_ALTSWITCH);
			HWND altCombo = GetDlgItem(hwnd, IDC_ALTSCN);
			const bool swChecked = (SendMessage(swButton, BM_GETSTATE, 0, 0) & BST_CHECKED) != 0;
			EnableWindow(altCombo, swChecked);
            pChange = pChange || (swChecked != thePlugin->IsAltDoSwitch());
            SetChangedSettings(pChange);
            return TRUE;
		}
		break;

	case IDC_STARTAUTO:
        {
            HWND control = GetDlgItem(hwnd, IDC_STARTAUTO);
            bool newState = (SendMessage(control, BM_GETSTATE, 0, 0) & BST_CHECKED) != 0;
            pChange = pChange || (newState != thePlugin->IsStartAuto());
            SetChangedSettings(pChange);
            return TRUE;
        }
        break;
    case IDC_TOGGLEHOTKEY:
        if (code == EN_CHANGE) {
            SetChangedSettings(pChange = true);
            return TRUE;
        }
        break;
    case IDC_FREQ:
        if(code == EN_CHANGE)
        {
            DWORD newFreq = GetDlgItemInt(hwnd, IDC_FREQ, NULL, FALSE);
            DWORD oldFreq = thePlugin->GettimeToSleep();
            pChange = pChange || newFreq != oldFreq;
            SetChangedSettings(pChange);
            return TRUE;
        }
        break;
        case IDC_APPLIST:
        case IDC_MAINSCN:
            if (code == CBN_SELCHANGE || code == CBN_EDITCHANGE) {
                EditItem(code == CBN_SELCHANGE && controlId == IDC_APPLIST);
                return TRUE;
            }
            break;
        case IDC_ALTSCN:
            if (code == CBN_SELCHANGE) {
                SetChangedSettings(pChange = true);
                return TRUE;
            }
            break;
	}
    return FALSE;
}
Example #11
0
/*
* MainWindowHandleWMNotify
*
* Purpose:
*
* Main window WM_NOTIFY handler.
*
*/
LRESULT MainWindowHandleWMNotify(
    _In_ HWND hwnd,
    _In_ WPARAM wParam,
    _In_ LPARAM lParam
)
{
    INT             c, k;
    LPNMHDR         hdr = (LPNMHDR)lParam;
    LPTOOLTIPTEXT   lpttt;
    LPNMLISTVIEW    lvn;
    LPNMTREEVIEW    lpnmTreeView;
    LPWSTR          str;
    SIZE_T          lcp;
    LVITEM          lvitem;
    LVCOLUMN        col;
    TVHITTESTINFO   hti;
    POINT           pt;
    WCHAR           item_string[MAX_PATH + 1];

    UNREFERENCED_PARAMETER(wParam);

    if (hdr) {

        if (hdr->hwndFrom == g_hwndObjectTree) {
            switch (hdr->code) {
            case TVN_ITEMEXPANDED:
            case TVN_SELCHANGED:
                SetFocus(g_hwndObjectTree);
                supSetWaitCursor(TRUE);
                MainWindowTreeViewSelChanged((LPNMTREEVIEWW)lParam);
                SendMessage(hwndStatusBar, WM_SETTEXT, 0, (LPARAM)g_WinObj.CurrentObjectPath);

                ListObjectsInDirectory(g_WinObj.CurrentObjectPath);

                ListView_SortItemsEx(g_hwndObjectList, &MainWindowObjectListCompareFunc, SortColumn);

                supSetWaitCursor(FALSE);

                lpnmTreeView = (LPNMTREEVIEW)lParam;
                if (lpnmTreeView) {
                    SelectedTreeItem = lpnmTreeView->itemNew.hItem;
                }
                break;

            case NM_RCLICK:
                GetCursorPos(&pt);
                hti.pt = pt;
                ScreenToClient(hdr->hwndFrom, &hti.pt);
                if (TreeView_HitTest(hdr->hwndFrom, &hti) &&
                    (hti.flags & (TVHT_ONITEM | TVHT_ONITEMRIGHT))) {
                    SelectedTreeItem = hti.hItem;
                    TreeView_SelectItem(g_hwndObjectTree, SelectedTreeItem);
                    SendMessage(hwndStatusBar, WM_SETTEXT, 0, (LPARAM)g_WinObj.CurrentObjectPath);
                    supHandleTreePopupMenu(hwnd, &pt);
                }
                break;
            }
        }

        if (hdr->hwndFrom == g_hwndObjectList) {
            switch (hdr->code) {
            case NM_SETFOCUS:
                if (ListView_GetSelectionMark(g_hwndObjectList) == -1) {
                    lvitem.mask = LVIF_STATE;
                    lvitem.iItem = 0;
                    lvitem.state = LVIS_SELECTED | LVIS_FOCUSED;
                    lvitem.stateMask = LVIS_SELECTED | LVIS_FOCUSED;
                    ListView_SetItem(g_hwndObjectList, &lvitem);
                }

                break;
            case LVN_ITEMCHANGED:
                lvn = (LPNMLISTVIEW)lParam;
                RtlSecureZeroMemory(&item_string, sizeof(item_string));
                ListView_GetItemText(g_hwndObjectList, lvn->iItem, 0, item_string, MAX_PATH);
                lcp = _strlen(g_WinObj.CurrentObjectPath);
                if (lcp) {
                    str = supHeapAlloc((lcp + sizeof(item_string) + 4) * sizeof(WCHAR));
                    if (str == NULL)
                        break;
                    _strcpy(str, g_WinObj.CurrentObjectPath);

                    if ((str[0] == '\\') && (str[1] == 0)) {
                        _strcpy(str + lcp, item_string);
                    }
                    else {
                        str[lcp] = '\\';
                        _strcpy(str + lcp + 1, item_string);
                    }
                    SendMessage(hwndStatusBar, WM_SETTEXT, 0, (LPARAM)str);
                    supHeapFree(str);
                }
                break;

                //handle sort by column
            case LVN_COLUMNCLICK:
                bMainWndSortInverse = !bMainWndSortInverse;
                SortColumn = ((NMLISTVIEW *)lParam)->iSubItem;
                ListView_SortItemsEx(g_hwndObjectList, &MainWindowObjectListCompareFunc, SortColumn);

                RtlSecureZeroMemory(&col, sizeof(col));
                col.mask = LVCF_IMAGE;
                col.iImage = -1;

                for (c = 0; c < 3; c++)
                    ListView_SetColumn(g_hwndObjectList, c, &col);

                k = ImageList_GetImageCount(g_ListViewImages);
                if (bMainWndSortInverse)
                    col.iImage = k - 2;
                else
                    col.iImage = k - 1;

                ListView_SetColumn(g_hwndObjectList, ((NMLISTVIEW *)lParam)->iSubItem, &col);

                break;

            case NM_DBLCLK:
                MainWindowHandleObjectListProp(hwnd);
                break;

            default:
                break;
            }
        }

        //handle tooltip
        if (hdr->code == TTN_GETDISPINFO) {
            lpttt = (LPTOOLTIPTEXT)lParam;

            switch (lpttt->hdr.idFrom) {

            case ID_OBJECT_PROPERTIES:
            case ID_VIEW_REFRESH:
            case ID_FIND_FINDOBJECT:
                lpttt->hinst = g_WinObj.hInstance;
                lpttt->lpszText = MAKEINTRESOURCE(lpttt->hdr.idFrom);
                lpttt->uFlags |= TTF_DI_SETITEM;
                break;

            default:
                break;

            }
        }
    }
    return FALSE;
}
Example #12
0
BOOL CALLBACK ProcessListDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static const wchar_t ColumeTitle[][16] = {
        L"父进程ID",
        L"EPROCESS",
        L"程序路径",
        L"进程ID",
        L"进程映像名",
    };
    static HWND hList;
    static HMENU hMenu;
    static PENUMPROCINFO ProcList = 0;
    static int SelectedItem;

    int cx;


    switch (msg)
    {
        case WM_INITDIALOG:
        {    
            RECT rect;
            GetClientRect(hDlg, &rect);
            rect.left += 3;        rect.right  -= 3;
            rect.top  += 3;        rect.bottom -= 50;

            hList = CreateWindowEx(0, WC_LISTVIEW, NULL,
                LVS_REPORT | LVS_EDITLABELS | WS_CHILD | WS_VISIBLE |
                WS_BORDER | LVS_SHOWSELALWAYS,
                rect.left, rect.top,
                rect.right-rect.left, rect.bottom-rect.top,
                hDlg, (HMENU)ID_LISTVIEW5,
                (HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE), NULL);


            ListView_SetExtendedListViewStyleEx(hList, 0,
                LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);


            LVCOLUMN lvc;
            lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
            lvc.fmt     = LVCFMT_LEFT;
            lvc.cchTextMax = MAXPATH;
            lvc.cx = 1;

            for (int i=0; i<5; ++i)
            {
                lvc.iSubItem = i;
                lvc.pszText = (wchar_t*)ColumeTitle[i];
                if (ListView_InsertColumn(hList, 0, &lvc) == -1)
                    LOG(L"规则列表初始化失败F", L"Init");
            }

        
            cx = rect.right-rect.left;
            ListView_SetColumnWidth(hList, 0, cx>>3);
            ListView_SetColumnWidth(hList, 1, cx>>3);
            ListView_SetColumnWidth(hList, 2, cx>>1);
            ListView_SetColumnWidth(hList, 3, cx>>3);
            ListView_SetColumnWidth(hList, 4, cx>>3);

        
            PostMessage(hDlg, WM_COMMAND, IDC_ENUM_REFRESH, 0);
            return TRUE;
        }
//-----------------------------------------------------------------------------

        case WM_COMMAND:
            switch (LOWORD(wParam))
            {
                case IDC_ENUM_REFRESH:
                {
                    int num = 0;
                    if (ProcList) VirtualFree(ProcList, 0, MEM_RELEASE);
                    if (DriCtl.GetProcList(&ProcList, &num))
                        UpdateListView(hDlg, hList, ProcList, num);
                    else
                        MessageBox(hDlg, L"进程列表获取失败", 0, MB_ICONERROR);
                    return TRUE;
                }

                case IDC_ENUM_THREAD_INFO:
                case IDC_ENUM_MODULE_INFO:
                {
                    wchar_t buf[16];
                    ListView_GetItemText(hList, SelectedItem, 1, buf, 16);

                    if (IDC_ENUM_THREAD_INFO == LOWORD(wParam))
                        DialogBoxParam((HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE),
                            MAKEINTRESOURCE(IDD_THREADLIST), hDlg,
                            ThreadListDlgProc, (LPARAM)_wtoi(buf));
                    else
                        DialogBoxParam((HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE),
                            MAKEINTRESOURCE(IDD_MODULELIST), hDlg,
                            ModuleListDlgProc, (LPARAM)_wtoi(buf));

                    return TRUE;
                }

                case IDC_ENUM_TERMINATE:
                {
                    wchar_t buf[16];
                    ListView_GetItemText(hList, SelectedItem, 1, buf, 16);

                    DriCtl.TerminateProcess(_wtoi(buf));
                    return TRUE;
                }
            }
            break;


//-----------------------------------------------------------------------------


        case WM_NOTIFY:
            if (NM_RCLICK == ((LPNMHDR)lParam)->code)
            {
                POINT pt;
                RECT rect;

                GetCursorPos(&pt);
                ScreenToClient(hDlg, &pt);

                GetClientRect(hDlg, &rect);
                if (pt.x > rect.left+3 && pt.x < rect.right-3
                    && pt.y > rect.top+7 && pt.y < rect.bottom-3)
                {
                    ClientToScreen(hDlg, &pt);
                    TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hDlg, NULL);
                }
                return TRUE;
            }
            else if (NM_CLICK == ((LPNMHDR)lParam)->code)
            {
                LPNMITEMACTIVATE nmitem = (LPNMITEMACTIVATE)lParam;
                SelectedItem = nmitem->iItem;

                return TRUE;
            }
            break;

//-----------------------------------------------------------------------------

        case WM_CLOSE:
            EndDialog(hDlg, 0);
            return TRUE;
    }

    return FALSE;
}
Example #13
0
BOOL CALLBACK ModuleListDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static const wchar_t ColumeTitle[][16] = {
        L"模块名称",
        L"映像大小",
        L"模块基址"
    };

    static HWND hList;
    static int Pid;
    static int SelectedItem;

    switch (msg)
    {
        case WM_NOTIFY:
            if (NM_CLICK == ((LPNMHDR)lParam)->code)
            {
                LPNMITEMACTIVATE nmitem = (LPNMITEMACTIVATE)lParam;
                SelectedItem = nmitem->iItem;

                return TRUE;
            }
            break;

        case WM_INITDIALOG:
        {
            Pid = (int)lParam;

            RECT rect;
            GetClientRect(hDlg, &rect);
            rect.left += 3;        rect.right  -= 100;
            rect.top  += 3;        rect.bottom -= 3;

            hList = CreateWindowEx(0, WC_LISTVIEW, NULL,
                LVS_REPORT | LVS_EDITLABELS | WS_CHILD | WS_VISIBLE |
                WS_BORDER | LVS_SHOWSELALWAYS,
                rect.left, rect.top,
                rect.right-rect.left, rect.bottom-rect.top,
                hDlg, (HMENU)ID_LISTVIEW7,
                (HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE), NULL);


            ListView_SetExtendedListViewStyleEx(hList, 0,
                LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);


            LVCOLUMN lvc;
            lvc.mask       = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
            lvc.fmt        = LVCFMT_LEFT;
            lvc.cchTextMax = MAXPATH;
            lvc.cx         = 1;

            for (int i=0; i<3; ++i)
            {
                lvc.iSubItem = i;
                lvc.pszText = (wchar_t*)ColumeTitle[i];
                if (ListView_InsertColumn(hList, 0, &lvc) == -1)
                    LOG(L"规则列表初始化失败F", L"Init");
            }

        
            int cx = rect.right - rect.left;
            ListView_SetColumnWidth(hList, 0, cx*3>>4);
            ListView_SetColumnWidth(hList, 1, cx*3>>4);
            ListView_SetColumnWidth(hList, 2, cx*10>>4);

        
            PostMessage(hDlg, WM_COMMAND, IDC_ENUM_MODULE_REFRESH, 0);
            return TRUE;
        }


        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case IDC_ENUM_MODULE_REFRESH:
                {
                    PENUMMODULEINFO ModuleList = 0;
                    int num = 0;
                    DriCtl.GetModuleListofProcess(Pid, &ModuleList, &num);
                    UpdateModuleListView(hDlg, hList, ModuleList, num);
                    if (ModuleList) VirtualFree(ModuleList, 0, MEM_RELEASE);
                    return TRUE;
                }

                case IDC_ENUM_MODULE_UNLOAD:
                {
                    wchar_t base[32];
                    ListView_GetItemText(hList, SelectedItem, 0, base, 32);
                    DriCtl.UnloadModule(Pid, simple_wcstoull(base));
                    return TRUE;
                }
                    break;
            }
            break;

        case WM_CLOSE:
            EndDialog(hDlg, 0);
            return TRUE;
    }

    return FALSE;
}
Example #14
0
/*!
	(we're also using this method directly without using the main loop of messages)
	(we don't define the 'lParam' parameter there)
*/
BOOL WmTabCommand_EditFunction(HWND, UINT message, WPARAM wParam, LPARAM)
{
HWND hWnd = GetPrgRes()->GetTabWindow(TabWindowFunctions::tab_functions);
HWND list = GetDlgItem(hWnd, IDC_FUNCTIONS_LIST);
adding  = false;

	if( ListView_GetSelectedCount(list) != 1 )
		// there must be only one item selected
		return true;

	int id = Variables::GetSelectedItem(list);
	if( id == -1 )
		return true;

	const int buffer_size = 300;
	char * buffer = new char[buffer_size];
	std::string old_name;
	ttmath::ErrorCode code;

	caption = GetPrgRes()->GetLanguages()->GuiMessage(Languages::dialog_box_edit_function_caption);
	
	ListView_GetItemText(list,id,0,buffer, buffer_size);
	old_name = name = buffer;

	ListView_GetItemText(list,id,1,buffer, buffer_size);
	parameters = atoi(buffer);

	ListView_GetItemText(list,id,2,buffer, buffer_size);
	value = buffer;

	delete [] buffer;

	do
	{
		if( !DialogBox(GetPrgRes()->GetInstance(), MAKEINTRESOURCE(IDD_DIALOG_ADD_FUNCTION), hWnd, DialogProcFunction) )
			break;

		GetPrgRes()->GetThreadController()->StopCalculating();

		// firstly we're trying to change the name
		code = GetPrgRes()->GetFunctions()->EditName(old_name, name);
		if( code == ttmath::err_ok )
			// if we've changed the name then we're changing the value and parameters
			code = GetPrgRes()->GetFunctions()->EditValue(name, value, parameters);

		GetPrgRes()->FunctionsChanged();
		GetPrgRes()->GetThreadController()->StartCalculating();

		if( code != ttmath::err_ok )
			ShowError(list, code);
		else
		{
			ChangeItemInFunctionList(list, id, old_name, name, value, parameters);
			GetPrgRes()->ReadVariablesFunctionsFromFile();
			GetPrgRes()->SaveToFile();
		}
	}
	while( code != ttmath::err_ok );

return true;
}
Example #15
0
static INT_PTR CALLBACK AutoreplaceDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) 
{
	switch (msg) {
	case WM_INITDIALOG:
		{
			BOOL ret = SaveOptsDlgProc(autoReplaceControls, SIZEOF(autoReplaceControls), MODULE_NAME, hwndDlg, msg, wParam, lParam);

			int sel = -1;
			for(int i = 0; i < languages.getCount(); i++) {
				Dictionary *p = languages[i];
				SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_ADDSTRING, 0, (LPARAM)p->full_name);
				SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_SETITEMDATA, i, (LPARAM)new AutoreplaceData(p));

				if ( !lstrcmp(opts.default_language, p->language))
					sel = i;
			}
			SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_SETCURSEL, sel, 0);

			HWND hList = GetDlgItem(hwndDlg, IDC_REPLACEMENTS);

			ListView_SetExtendedListViewStyle(hList, ListView_GetExtendedListViewStyle(hList) | LVS_EX_FULLROWSELECT);

			LVCOLUMN col = {0};
			col.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT ; 
			col.fmt = LVCFMT_LEFT;
			col.cx = 175;
			col.pszText = TranslateT("Wrong word");
			col.cchTextMax = lstrlen(col.pszText);
			ListView_InsertColumn(hList, 0, &col);

			col.pszText = TranslateT("Correction");
			col.cchTextMax = lstrlen(col.pszText);
			ListView_InsertColumn(hList, 1, &col);

			LoadReplacements(hwndDlg);
			return ret;
		}

	case WM_COMMAND:
		if (LOWORD(wParam) == IDC_LANGUAGE && HIWORD(wParam) == CBN_SELCHANGE)
			LoadReplacements(hwndDlg);
		else if (LOWORD(wParam) == IDC_ADD)
			ShowAddReplacement(hwndDlg);
		else if (LOWORD(wParam) == IDC_EDIT) {
			HWND hList = GetDlgItem(hwndDlg, IDC_REPLACEMENTS);
			if (ListView_GetSelectedCount(hList) != 1)
				break;

			int sel = SendMessage(hList, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
			if (sel < 0)
				break;

			ShowAddReplacement(hwndDlg, sel);
		}
		else if (LOWORD(wParam) == IDC_REMOVE) {
			HWND hList = GetDlgItem(hwndDlg, IDC_REPLACEMENTS);

			int sel = SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETCURSEL, 0, 0);
			if (sel < 0)
				break;

			AutoreplaceData *data = (AutoreplaceData *) SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETITEMDATA, sel, 0);

			BOOL changed = FALSE;

			sel = SendMessage(hList, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
			while(sel >= 0) {
				TCHAR tmp[256];
				ListView_GetItemText(hList, sel, 0, tmp, SIZEOF(tmp));

				data->RemoveWord(tmp);
				changed = TRUE;

				sel = SendMessage(hList, LVM_GETNEXTITEM, sel, LVNI_SELECTED);
			}

			if (changed) {
				LoadReplacements(hwndDlg);
				SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
			}
		}
		break;

	case WM_NOTIFY:
		{
			LPNMHDR lpnmhdr = (LPNMHDR)lParam;
			if (lpnmhdr->idFrom == 0 && lpnmhdr->code == PSN_APPLY && languages.getCount() > 0) {
				for(int i = 0; i < languages.getCount(); i++) {
					AutoreplaceData *data = (AutoreplaceData *) SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETITEMDATA, i, 0);
					if (data->changed) {
						data->dict->autoReplace->setMap(data->autoReplaceMap);
						data->changed = FALSE;
					}
				}
			}
			else if (lpnmhdr->idFrom == IDC_REPLACEMENTS) {
				HWND hList = GetDlgItem(hwndDlg, IDC_REPLACEMENTS);

				switch(lpnmhdr->code) {
				case LVN_ITEMCHANGED:
				case NM_CLICK:
					EnableDisableCtrls(hwndDlg);
					break;

				case NM_DBLCLK:
					LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE) lParam;
					if (lpnmitem->iItem >= 0)
						ShowAddReplacement(hwndDlg, lpnmitem->iItem);
					break;
				}
			}
			else if (lpnmhdr->idFrom == IDC_AUTO_USER)
				EnableDisableCtrls(hwndDlg);
		}
		break;

	case WM_DRAWITEM:
		{
			LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam;
			if (lpdis->CtlID != IDC_LANGUAGE) 
				break;
			if (lpdis->itemID == -1) 
				break;

			AutoreplaceData *data = (AutoreplaceData *) lpdis->itemData;
			DrawItem(hwndDlg, lpdis, data->dict);
		}
		return TRUE;

	case WM_MEASUREITEM:
		LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT)lParam;
		if (lpmis->CtlID != IDC_LANGUAGE) 
			break;

		MeasureItem(hwndDlg, lpmis);
		return TRUE;
	}

	return SaveOptsDlgProc(autoReplaceControls, SIZEOF(autoReplaceControls), MODULE_NAME, hwndDlg, msg, wParam, lParam);
}
Example #16
0
int CALLBACK
FilterSortCallback(
	IN LPARAM First, 
	IN LPARAM Second,
	IN LPARAM Param
	)
{
    WCHAR FirstData[MAX_PATH + 1];
    WCHAR SecondData[MAX_PATH + 1];
	HWND hWnd;
	LIST_DATA_TYPE Type;
    int Result;
	LISTVIEW_OBJECT *Object;
	LISTVIEW_COLUMN *Column;

	Object = (LISTVIEW_OBJECT *)Param;
	FirstData[0] = 0;
	SecondData[0] = 0;

	hWnd = Object->hWnd;
	Column = Object->Column;

    ListView_GetItemText(hWnd, First,  Object->LastClickedColumn, FirstData,  MAX_PATH);
    ListView_GetItemText(hWnd, Second, Object->LastClickedColumn, SecondData, MAX_PATH);

	Type = Column[Object->LastClickedColumn].DataType;

    switch (Type) {

        case DataTypeInt:
            Result = _wtoi(FirstData) - _wtoi(SecondData);
            break;        

        case DataTypeUInt:
            Result = (int)((UINT)_wtoi(FirstData) - (UINT)_wtoi(SecondData));
            break;        
        
		case DataTypeInt64:
            Result = (int)(_wtoi64(FirstData) - _wtoi64(SecondData));
			break;

        case DataTypeUInt64:
			Result =  (int)((ULONG64)_wtoi64(FirstData) - (ULONG64)_wtoi64(SecondData));
			break;

        case DataTypeFloat:
			if (_wtof(FirstData) - _wtof(SecondData) >= 0) {
				Result = -1;
			} else {
				Result = 1;
			}
            break;
        
		case DataTypeTime:
        case DataTypeText:
        case DataTypeBool:
            Result = _wcsicmp(FirstData, SecondData);
            break;

		default:
			ASSERT(0);
    }

	return Object->SortOrder ? Result : -Result;
}
Example #17
0
INT_PTR
CALLBACK
DlgProc_TransportLayer(
    HWND hwndDlg,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
    )
/*++
Routine Description:
    This routine contains the window procedure for transport dll selection
    dialog

    Editing of transport layers is not allowed when doing kernel debugging or
    the debugging of kernel and user mode dumps.

Arguments:
Return Value:
    See docs for "DialogBox"
--*/
{
    // fKernelDebugger cover kernel and kernel dumps
    BOOL bTL_EditingAllowed = !g_contWorkspace_WkSp.m_bKernelDebugger &&
                              !g_contWorkspace_WkSp.m_bUserCrashDump;

    static DWORD HelpArray[]=
    {
       IDC_LIST1, IDH_TRANSPORT,
       IDC_STEXT_SELECT, IDH_TLSELECT,
       IDC_BUT_SELECT, IDH_TLSELECT,
       IDC_BUT_ADD, IDH_TLADD,
       IDC_BUT_EDIT, IDH_TLEDIT,
       IDC_BUT_DELETE, IDH_TLDEL,
       0, 0
    };

    static DWORD NOEDIT_HelpArray[]=
    {
       IDC_LIST1, IDH_TRANSPORT_DISABLED,
       IDC_STEXT_SELECT, IDH_TRANSPORT_DISABLED,
       IDC_BUT_SELECT, IDH_TRANSPORT_DISABLED,
       IDC_BUT_ADD, IDH_TRANSPORT_DISABLED,
       IDC_BUT_EDIT, IDH_TRANSPORT_DISABLED,
       IDC_BUT_DELETE, IDH_TRANSPORT_DISABLED,
       0, 0
    };

    PDWORD pdwHelpArray = bTL_EditingAllowed ? HelpArray : NOEDIT_HelpArray;

    HWND hwndList = GetDlgItem(hwndDlg, IDC_LIST1);
    HWND hwndEdit = GetDlgItem(hwndDlg, IDC_BUT_EDIT);
    HWND hwndDelete = GetDlgItem(hwndDlg, IDC_BUT_DELETE);
    HWND hwndSelect = GetDlgItem(hwndDlg, IDC_BUT_SELECT);

    switch (uMsg) {
        
    default:
        return FALSE;

    case WM_HELP:
        WinHelp((HWND)((LPHELPINFO) lParam)->hItemHandle,
                "windbg.hlp",
                HELP_WM_HELP,
                (ULONG_PTR) pdwHelpArray );
        return TRUE;

    case WM_CONTEXTMENU:
        WinHelp((HWND) wParam,
                "windbg.hlp",
                HELP_CONTEXTMENU,
                (ULONG_PTR) pdwHelpArray );
        return TRUE;

    case WM_INITDIALOG:
        if (!bTL_EditingAllowed) {
            EnableWindow(GetDlgItem(hwndDlg, IDC_LIST1), FALSE);
            EnableWindow(GetDlgItem(hwndDlg, IDC_BUT_SELECT), FALSE);
            EnableWindow(GetDlgItem(hwndDlg, IDC_STEXT_SELECT), FALSE);
            EnableWindow(GetDlgItem(hwndDlg, IDC_BUT_ADD), FALSE);
            EnableWindow(GetDlgItem(hwndDlg, IDC_BUT_EDIT), FALSE);
            EnableWindow(GetDlgItem(hwndDlg, IDC_BUT_DELETE), FALSE);
        }

        // This section sets up the dialog and initializes the fields.        
        
        // Make a copy of the registry, and screw with the copy.
        Assert(NULL == g_pCCopyOf_All_TLs_WrkSpc);
        g_pCCopyOf_All_TLs_WrkSpc = new CAll_TLs_WKSP();
        
        g_pCCopyOf_All_TLs_WrkSpc->m_bDynamicList = TRUE;
        g_pCCopyOf_All_TLs_WrkSpc->Duplicate(g_dynacontAll_TLs_WkSp);

        Assert(NULL == pszSelectedTL);
        Assert(g_contWorkspace_WkSp.m_pszSelectedTL);
        pszSelectedTL = _strdup(g_contWorkspace_WkSp.m_pszSelectedTL);
        
        //
        // Set the extended style
        //
        ListView_SetExtendedListViewStyle(hwndList, LVS_EX_FULLROWSELECT);       
        
        ///////////////////////////////////////////
        // Setup the column header for the list view
        ///////////////////////////////////////////
        
        //
        // Add Column headers
        //            
        {
            char            szColHdr[MAX_MSG_TXT];
            LV_COLUMN       lvc;
            
            // Initialize the LV_COLUMN structure. 
            lvc.mask = lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
            lvc.fmt = LVCFMT_LEFT;
            lvc.cx = 100;
            lvc.pszText = szColHdr;  
            
            // Add the 1st column hdr
            Dbg(LoadString(g_hInst, SYS_TRANSPORT_LAYER_COL_HDR1, 
                szColHdr, sizeof(szColHdr)));
            lvc.iSubItem = 0;
            Dbg(ListView_InsertColumn(hwndList, lvc.iSubItem, &lvc) != -1);
            
            // Add the 2nd col hdr
            Dbg(LoadString(g_hInst, SYS_TRANSPORT_LAYER_COL_HDR2, 
                szColHdr, sizeof(szColHdr)));
            lvc.iSubItem = 1;
            Dbg(ListView_InsertColumn(hwndList, lvc.iSubItem, &lvc) != -1);
            
            // Add the 3rd col hdr
            Dbg(LoadString(g_hInst, SYS_TRANSPORT_LAYER_COL_HDR3, 
                szColHdr, sizeof(szColHdr)));
            lvc.iSubItem = 2;
            Dbg(ListView_InsertColumn(hwndList, lvc.iSubItem, &lvc) != -1);
            
            // Add the 4th col hdr
            Dbg(LoadString(g_hInst, SYS_TRANSPORT_LAYER_COL_HDR4, 
                szColHdr, sizeof(szColHdr)));
            lvc.iSubItem = 3;
            Dbg(ListView_InsertColumn(hwndList, lvc.iSubItem, &lvc) != -1);
        }            
        
        //
        // Add the actual data to the list
        //
        AddDataToList(hwndDlg, g_pCCopyOf_All_TLs_WrkSpc);
        return TRUE;

    case WM_COMMAND:
        if (bTL_EditingAllowed) {
            WORD wNotifyCode = HIWORD(wParam);  // notification code 
            WORD wID = LOWORD(wParam);          // item, control, or accelerator identifier 
            HWND hwndCtl = (HWND) lParam;       // handle of control 
            
            switch (wID) {
                
            default:
                return FALSE;
                
            case IDC_BUT_RESET:
                {
                    // Reset it to the original contents
                    CAll_TLs_WKSP * pAll_TLs_Tmp = new CAll_TLs_WKSP();
                    
                    if (pAll_TLs_Tmp) {
                        g_pCCopyOf_All_TLs_WrkSpc->Duplicate(*pAll_TLs_Tmp);
                        
                        // Data has been changed, repopulate the list.
                        AddDataToList(hwndDlg, g_pCCopyOf_All_TLs_WrkSpc);
                        
                        BOOL bEmpty = ListView_GetItemCount(hwndList) <= 0;
                        EnableWindow(hwndEdit, !bEmpty);
                        EnableWindow(hwndDelete, !bEmpty);
                        EnableWindow(hwndSelect, !bEmpty);
                        
                        delete pAll_TLs_Tmp;
                    }
                }
                return FALSE;
                
            case IDC_BUT_SELECT:
                if (BN_CLICKED == wNotifyCode) {                   
                    int nCurSel = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED);
                    Assert(-1 != nCurSel);
                    
                    if (nCurSel >= 0) {
                        char sz[MAX_PATH];
                        
                        ListView_GetItemText(hwndList, nCurSel, 0, sz, sizeof(sz));
                        
                        SetDlgItemText(hwndDlg, IDC_STEXT_SELECT, sz);
                        
                        FREE_STR(pszSelectedTL);
                        pszSelectedTL = _strdup(sz);
                    }
                }
                return FALSE;
                
            case IDC_BUT_DELETE:
                if (BN_CLICKED == wNotifyCode) {                   
                    int nCurSel = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED);
                    Assert(-1 != nCurSel);
                    
                    char szTransName[MAX_MSG_TXT]; // Transport name
                    ListView_GetItemText(hwndList, nCurSel, 0, szTransName, sizeof(szTransName));
                    
                    char szMsg[MAX_VAR_MSG_TXT];
                    {
                        char szQuestion[MAX_MSG_TXT]; // Question confirming deletion
                        
                        Dbg(LoadString(g_hInst, DBG_Deleting_DLL, szQuestion, sizeof(szQuestion)));
                        
                        wsprintf(szMsg, szQuestion, szTransName);
                    }
                    
                    char szTitle[MAX_MSG_TXT];
                    Dbg(LoadString(g_hInst, DLG_Deleting_DLL_Title, szTitle, sizeof(szTitle)));
                    strcat(szTitle, "'");
                    strcat(szTitle, szTransName);
                    strcat(szTitle, "'");
                    
                    if (MessageBox(hwndDlg, szMsg, szTitle, MB_OKCANCEL | MB_TASKMODAL) == IDOK) {
                        // Did we erase the selected transport layer
                        if (pszSelectedTL && !strcmp(szTransName, pszSelectedTL)) {
                            
                            // Erased
                            FREE_STR(pszSelectedTL);
                        }
                        
                        // Remove the deleted TL from the reg list.
                        {
                            TListEntry<CIndiv_TL_WKSP *> * pContEntry =
                                g_pCCopyOf_All_TLs_WrkSpc->
                                m_listConts.Find(szTransName, WKSP_Generic_CmpRegName);
                            
                            Assert(pContEntry);
                            delete pContEntry->m_tData;
                            delete pContEntry;
                        }
                        
                        Dbg(ListView_DeleteItem(hwndList, nCurSel));
                        
                        // Select the first item, make sure something is always selected.
                        ListView_SetItemState(hwndList, 0, LVIS_SELECTED | LVIS_FOCUSED, 0x000F);
                        
                        BOOL bEmpty = ListView_GetItemCount(hwndList) <= 0;
                        EnableWindow(hwndEdit, !bEmpty);
                        EnableWindow(hwndSelect, !bEmpty);
                        EnableWindow(hwndDelete, !bEmpty);
                        
                        SetDlgItemText(hwndDlg, IDC_STEXT_SELECT, pszSelectedTL);
                    }
                }
                return FALSE;
                
            case IDC_BUT_EDIT:
                if (BN_CLICKED == wNotifyCode) {
                    int nCurSel = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED);
                    Assert(-1 != nCurSel);
                    
                    char szTransName[MAX_MSG_TXT]; // Transport name
                    ListView_GetItemText(hwndList, nCurSel, 0, szTransName, sizeof(szTransName));
                    
                    TListEntry<CIndiv_TL_WKSP *> * pContEntry =
                        g_pCCopyOf_All_TLs_WrkSpc->
                        m_listConts.Find(szTransName, WKSP_Generic_CmpRegName);
                    
                    if (DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_DLG_TRANSPORTLAYER), hwndDlg,
                        (DLGPROC)EditTransportLayersDlgProc, (LPARAM)pContEntry->m_tData)) {
                        
                        // Data has been changed, repopulate the list.
                        AddDataToList(hwndDlg, g_pCCopyOf_All_TLs_WrkSpc);
                    }
                    
                    BOOL bEmpty = ListView_GetItemCount(hwndList) <= 0;
                    EnableWindow(hwndEdit, !bEmpty);
                    EnableWindow(hwndDelete, !bEmpty);
                    EnableWindow(hwndSelect, !bEmpty);
                }                
                return FALSE;
                
            case IDC_BUT_ADD:
                if (BN_CLICKED == wNotifyCode) {
                    CIndiv_TL_WKSP * pTL = new CIndiv_TL_WKSP;
                    
                    if (DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_DLG_TRANSPORTLAYER), hwndDlg,
                        (DLGPROC)EditTransportLayersDlgProc, (LPARAM)pTL)) {
                        
                        pTL->SetParent(g_pCCopyOf_All_TLs_WrkSpc);
                        g_pCCopyOf_All_TLs_WrkSpc->AddToContainerList(pTL);
                        
                        // Data has been changed, repopulate the list.
                        AddDataToList(hwndDlg, g_pCCopyOf_All_TLs_WrkSpc);
                        
                        BOOL bEmpty = ListView_GetItemCount(hwndList) <= 0;
                        EnableWindow(hwndEdit, !bEmpty);
                        EnableWindow(hwndDelete, !bEmpty);
                        EnableWindow(hwndSelect, !bEmpty);
                    } else {
                        delete pTL;
                    }
                }                
                return FALSE;
            }
        }
        return FALSE;

    case WM_NOTIFY:
        switch (((LPNMHDR) lParam)->code) {
        default:
            return FALSE;

        case NM_DBLCLK:
           if (bTL_EditingAllowed) {
                LPNMHDR lpnmh = (LPNMHDR) lParam;
                
                switch (lpnmh->idFrom) {
                case IDC_LIST1:
                    // Dbl clicking will work the same as a pressing the "select" button.
                    // Let the Select button process the dbl click
                    PostMessage(hwndDlg, WM_COMMAND, MAKEWPARAM(IDC_BUT_SELECT, BN_CLICKED),
                        (LPARAM) lpnmh->hwndFrom);
                    break;
                }
            }
            return FALSE;

        case PSN_KILLACTIVE:
            // Error checking: must select a TL, and that TL must exist
            if (!ValidateAllTransportLayers(hwndDlg, g_pCCopyOf_All_TLs_WrkSpc)) {
                MessageBeep(MB_ICONEXCLAMATION);
                SetWindowLong(hwndDlg, DWLP_MSGRESULT, TRUE);
            }
            
            if (NULL == pszSelectedTL) {
                
                PSTR pszTitle = WKSP_DynaLoadString(g_hInst, SYS_Warning);
                WKSP_MsgBox(pszTitle, ERR_Please_Select_A_TL);
                free(pszTitle);

                MessageBeep(MB_ICONEXCLAMATION);
                SetWindowLong(hwndDlg, DWLP_MSGRESULT, TRUE);
                
            } else if (NULL == g_pCCopyOf_All_TLs_WrkSpc->
                m_listConts.Find(pszSelectedTL, WKSP_Generic_CmpRegName)) {
                
                PSTR pszTitle = WKSP_DynaLoadString(g_hInst, SYS_Warning);
                WKSP_MsgBox(pszTitle, ERR_Transport_Doesnt_Exist, pszSelectedTL);
                free(pszTitle);

                MessageBeep(MB_ICONEXCLAMATION);
                SetWindowLong(hwndDlg, DWLP_MSGRESULT, TRUE);
            }
            
            SetWindowLong(hwndDlg, DWLP_MSGRESULT, FALSE);
            return TRUE;

        case PSN_APPLY:
            g_dynacontAll_TLs_WkSp.Duplicate(*g_pCCopyOf_All_TLs_WrkSpc);
            g_dynacontAll_TLs_WkSp.Save(FALSE, FALSE);
            
            Assert(SetTransportLayer(pszSelectedTL, g_pCCopyOf_All_TLs_WrkSpc));
            return TRUE;
        }
        break;

    case WM_DESTROY:
        delete g_pCCopyOf_All_TLs_WrkSpc;
        g_pCCopyOf_All_TLs_WrkSpc = NULL;
                
        if (pszSelectedTL) {
            free(pszSelectedTL);
            pszSelectedTL = NULL;
        }
        return FALSE;
    }
}
Example #18
0
static 
VOID
WriteLineSettings(PPREFERENCES_CONTEXT Context, HWND hwndDlg)
{
    HWND hwndControls;
    INT Count, Index;
    WCHAR LineName[MIXER_LONG_NAME_CHARS];
    WCHAR DestinationName[MIXER_LONG_NAME_CHARS];
    DWORD Flags;
    PSNDVOL_REG_LINESTATE LineStates;

    /* get list view */
    hwndControls = GetDlgItem(hwndDlg, IDC_CONTROLS);

    /* get list item count */
    Count = ListView_GetItemCount(hwndControls);

    /* sanity check */
    assert(Count);

    if (SndMixerGetLineName(Context->Mixer, Context->SelectedLine, DestinationName, MIXER_LONG_NAME_CHARS, TRUE) == -1)
    {
        /* failed to get destination line name */
        return;
    }

    /* allocate line states array */
    LineStates = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(SNDVOL_REG_LINESTATE) * Count);
    if (LineStates == NULL)
    {
        /* failed to allocate line states array */
        return;
    }


    for(Index = 0; Index < Count; Index++)
    {
        /* set to empty */
        LineName[0] = L'\0';

        /* get item text */
        ListView_GetItemText(hwndControls, Index, 0, LineName, MIXER_LONG_NAME_CHARS);

        /* make sure it is null terminated */
        LineName[MIXER_LONG_NAME_CHARS-1] = L'\0';

        /* get check state */
        Flags = (ListView_GetCheckState(hwndControls, Index) == 0 ? 0x4 : 0);

        /* copy line name */
        wcscpy(LineStates[Index].LineName, LineName);

        /* store flags */
        LineStates[Index].Flags = Flags;
    }

    /* now write the line config */
    WriteLineConfig(Context->DeviceName, DestinationName, LineStates, sizeof(SNDVOL_REG_LINESTATE) * Count);

    /* free line states */
    HeapFree(GetProcessHeap(), 0, LineStates);
}
Example #19
0
static INT_PTR CALLBACK DlgProcMirOTROptsContacts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	HWND lv = GetDlgItem(hwndDlg, IDC_LV_CONT_CONTACTS);

	switch (msg) {
	case WM_INITDIALOG:
		TranslateDialogDefault(hwndDlg);
		{
			SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) new ContactPolicyMap());

			HWND cmb = GetDlgItem(hwndDlg, IDC_CMB_CONT_POLICY);
			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_DEFAULT));
			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_ALWAYS));
			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_OPP));
			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_MANUAL));
			SendMessage(cmb, CB_ADDSTRING, 0, (WPARAM)TranslateT(LANG_POLICY_NEVER));
			EnableWindow(GetDlgItem(hwndDlg, IDC_CMB_CONT_POLICY), FALSE);

			SendDlgItemMessage(hwndDlg, IDC_LV_CONT_CONTACTS, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT);// | LVS_EX_CHECKBOXES);

			// add list columns
			LVCOLUMN lvc;
			// Initialize the LVCOLUMN structure.
			// The mask specifies that the format, width, text, and
			// subitem members of the structure are valid.
			lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
			lvc.fmt = LVCFMT_LEFT;

			lvc.iSubItem = 0;
			lvc.pszText = TranslateT(LANG_CONTACT);
			lvc.cx = 150;     // width of column in pixels
			ListView_InsertColumn(lv, 0, &lvc);

			lvc.iSubItem = 1;
			lvc.pszText = TranslateT(LANG_PROTO);
			lvc.cx = 100;     // width of column in pixels
			ListView_InsertColumn(lv, 1, &lvc);

			lvc.iSubItem = 2;
			lvc.pszText = TranslateT(LANG_POLICY);
			lvc.cx = 90;     // width of column in pixels
			ListView_InsertColumn(lv, 2, &lvc);

			lvc.iSubItem = 3;
			lvc.pszText = TranslateT(LANG_HTMLCONV);
			lvc.cx = 80;     // width of column in pixels
			ListView_InsertColumn(lv, 3, &lvc);
		}
		SendMessage(hwndDlg, WMU_REFRESHLIST, 0, 0);
		return TRUE;

	case WMU_REFRESHLIST:
		ListView_DeleteAllItems(lv);
		{
			LVITEM lvI = { 0 };

			// Some code to create the list-view control.
			// Initialize LVITEM members that are common to all
			// items.
			lvI.mask = LVIF_TEXT | LVIF_PARAM;// | LVIF_NORECOMPUTE;// | LVIF_IMAGE;

			for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) {
				const char *proto = GetContactProto(hContact);
				if (proto && db_get_b(hContact, proto, "ChatRoom", 0) == 0 && Proto_IsProtoOnContact(hContact, MODULENAME) // ignore chatrooms
					&& mir_strcmp(proto, META_PROTO) != 0) // and MetaContacts
				{
					lvI.iItem = 0;
					lvI.iSubItem = 0;
					lvI.lParam = hContact;
					lvI.pszText = (TCHAR*)contact_get_nameT(hContact);
					lvI.iItem = ListView_InsertItem(lv, &lvI);

					PROTOACCOUNT *pa = Proto_GetAccount(proto);
					ListView_SetItemText(lv, lvI.iItem, 1, pa->tszAccountName);

					ListView_SetItemText(lv, lvI.iItem, 2, (TCHAR*)policy_to_string((OtrlPolicy)db_get_dw(hContact, MODULENAME, "Policy", CONTACT_DEFAULT_POLICY)));
					ListView_SetItemText(lv, lvI.iItem, 3, (db_get_b(hContact, MODULENAME, "HTMLConv", 0)) ? TranslateT(LANG_YES) : TranslateT(LANG_NO));
				}
			}
		}
		return TRUE;

	case WM_COMMAND:
		switch (HIWORD(wParam)) {
		case CBN_SELCHANGE:
			switch (LOWORD(wParam)) {
			case IDC_CMB_CONT_POLICY:
				MCONTACT hContact = 0;
				int iUser = ListView_GetSelectionMark(GetDlgItem(hwndDlg, IDC_LV_CONT_CONTACTS));
				if (iUser == -1) break;
				int sel = SendDlgItemMessage(hwndDlg, IDC_CMB_CONT_POLICY, CB_GETCURSEL, 0, 0);
				if (sel == CB_ERR) break;
				int len = SendDlgItemMessage(hwndDlg, IDC_CMB_CONT_POLICY, CB_GETLBTEXTLEN, sel, 0);
				if (len < 0) break;
				TCHAR *text = new TCHAR[len + 1];
				SendDlgItemMessage(hwndDlg, IDC_CMB_CONT_POLICY, CB_GETLBTEXT, sel, (LPARAM)text);
				ListView_SetItemText(GetDlgItem(hwndDlg, IDC_LV_CONT_CONTACTS), iUser, 2, text);
				OtrlPolicy policy = policy_from_string(text);
				delete[] text;

				LVITEM lvi = { 0 };
				lvi.mask = LVIF_PARAM;
				lvi.iItem = iUser;
				lvi.iSubItem = 0;
				ListView_GetItem(GetDlgItem(hwndDlg, IDC_LV_CONT_CONTACTS), &lvi);

				ContactPolicyMap* cpm = (ContactPolicyMap*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
				hContact = (MCONTACT)lvi.lParam;
				(*cpm)[hContact].policy = policy;
				SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
				break;
			}
			break;
		}
		break;

	case WM_NOTIFY:
		if (((LPNMHDR)lParam)->code == PSN_APPLY) {
			// handle apply
			ContactPolicyMap *cpm = (ContactPolicyMap*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);

			// Iterate over the map and print out all key/value pairs.
			// Using a const_iterator since we are not going to change the values.
			for (ContactPolicyMap::const_iterator it = cpm->begin(); it != cpm->end(); ++it) {
				if (!it->first) continue;
				if (it->second.policy) db_set_dw(it->first, MODULENAME, "Policy", (DWORD)it->second.policy);
				if (it->second.htmlconv) db_set_b(it->first, MODULENAME, "HTMLConv", it->second.htmlconv - 1);
			}
			return TRUE;
		}
		if (((LPNMHDR)lParam)->hwndFrom == lv) {
			LPNMLISTVIEW notif = (LPNMLISTVIEW)lParam;
			if (((LPNMHDR)lParam)->code == LVN_ITEMCHANGED && (notif->uNewState & LVIS_SELECTED)) {
				if (notif->iItem == -1) {
					SendDlgItemMessage(hwndDlg, IDC_CMB_CONT_POLICY, CB_SETCURSEL, (LPARAM)-1, 0);
					EnableWindow(GetDlgItem(hwndDlg, IDC_CMB_CONT_POLICY), FALSE);
				}
				else {
					EnableWindow(GetDlgItem(hwndDlg, IDC_CMB_CONT_POLICY), TRUE);
					TCHAR buff[50];
					ListView_GetItemText(((LPNMHDR)lParam)->hwndFrom, notif->iItem, 2, buff, _countof(buff));
					SendDlgItemMessage(hwndDlg, IDC_CMB_CONT_POLICY, CB_SELECTSTRING, (LPARAM)-1, (WPARAM)buff);
				}
			}
			else if (((LPNMHDR)lParam)->code == NM_CLICK) {
				if (notif->iSubItem == 3) {
					LVITEM lvi;
					lvi.mask = LVIF_PARAM;
					lvi.iItem = notif->iItem;
					if (lvi.iItem < 0) return FALSE;
					lvi.iSubItem = 0;
					SendDlgItemMessage(hwndDlg, IDC_LV_CONT_CONTACTS, LVM_GETITEM, 0, (LPARAM)&lvi);

					MCONTACT hContact = (MCONTACT)lvi.lParam;
					ContactPolicyMap *cp = (ContactPolicyMap *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
					TCHAR buff[50];
					ListView_GetItemText(((LPNMHDR)lParam)->hwndFrom, lvi.iItem, 3, buff, _countof(buff));
					if (_tcsncmp(buff, TranslateT(LANG_YES), 50) == 0) {
						(*cp)[hContact].htmlconv = HTMLCONV_DISABLE;
						ListView_SetItemText(((LPNMHDR)lParam)->hwndFrom, lvi.iItem, 3, TranslateT(LANG_NO));
					}
					else {
						(*cp)[hContact].htmlconv = HTMLCONV_ENABLE;
						ListView_SetItemText(((LPNMHDR)lParam)->hwndFrom, lvi.iItem, 3, TranslateT(LANG_YES));
					}
					(*cp)[hContact].htmlconv += 1;
					SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
				}
			}
		}
		break;

	case WM_DESTROY:
		ContactPolicyMap *cpm = (ContactPolicyMap*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
		cpm->clear();
		delete cpm;
		break;
	}
	return FALSE;
}
Example #20
0
//////////////////////////////////////////////////////////////////////////
//文件管理窗口过程
//////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK FileDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	HWND hList = NULL;
	HWND hSBar = NULL;
	LPNMHDR lPnmhdr = NULL;
	switch (uMsg)
	{
	case WM_COMMAND:
		{
			switch(LOWORD(wParam))
			{
			case ID_POPUP_40001:
				{
					//打开(EXE运行)
					hList = GetDlgItem(hDlg,IDC_LIST1);
					int index = ListView_GetSelectionMark(hList);
					char szFile[NAMESIZE] = {0};
					char szType[10] = {0};
					ListView_GetItemText(hList,index,0,szType,sizeof(szType));
					ListView_GetItemText(hList,index,1,szFile,NAMESIZE);
					FileOpen(sockfd,szFile,szType);

				}
				break;
			case ID_POPUP_40002:
				{
					//返回
					FolderBack(sockfd);
				}
				break;
			case ID_POPUP_40004:
				{
					//下载
					hList = GetDlgItem(hDlg,IDC_LIST1);
					int index = ListView_GetSelectionMark(hList);
					char szFile[NAMESIZE] = {0};
					ListView_GetItemText(hList,index,1,szFile,NAMESIZE);
					sprintf(szFname,"%s",szFile);
					FileDownLoad(sockfd,szFile);
				}
				break;
			case ID_POPUP_40005:
				{
					//删除
					hList = GetDlgItem(hDlg,IDC_LIST1);
					int index = ListView_GetSelectionMark(hList);
					char szFile[NAMESIZE] = {0};
					ListView_GetItemText(hList,index,1,szFile,NAMESIZE);
					FileDelete(sockfd,szFile);
				}
				break;
			}
		}
		break;
	case WM_SOCKET:
		{
			switch(LOWORD(lParam))
			{
			case FD_WRITE:
				{
					//继续发送
					SendCmd(sockfd,NULL,NULL);
				}
				break;
			case FD_READ:
				{
					RecvCmd(sockfd);
				}
				break;
			case FD_CLOSE:
				{
					//SOCKET出错处理,MainFunc.H里 清理缓冲区
					SocketError(sockfd);
					EndDialog(hDlg,NULL);
				}
				break;
			}
		}
		break;
	case WM_NOTIFY:
		{
			lPnmhdr = (LPNMHDR)lParam;
			hList = GetDlgItem(hDlg,IDC_LIST1);
			if (lPnmhdr->hwndFrom==hList)
			{
				switch (lPnmhdr->code)
				{
				case NM_DBLCLK:
					{
						hList = GetDlgItem(hDlg,IDC_LIST1);
						int index = ListView_GetSelectionMark(hList);
						int count = ListView_GetItemCount(hList);
						char szType[10] = {0};
						ListView_GetItemText(hList,index,0,szType,sizeof(szType));
						if (strcmp(szType,"FILE")==0)
						{
							break;
						}
						if (index<count)
						{
							char szFile[NAMESIZE] = {0};
							char szType[10] = {0};
							ListView_GetItemText(hList,index,0,szType,sizeof(szType));
							ListView_GetItemText(hList,index,1,szFile,NAMESIZE);
							FileOpen(sockfd,szFile,szType);
						}
					}
					break;
				case NM_RCLICK:
					{
						HMENU hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU1));
						hMenu = GetSubMenu(hMenu,0);
						POINT stPos;
						GetCursorPos(&stPos);
						TrackPopupMenu(hMenu,TPM_LEFTALIGN,stPos.x,stPos.y,NULL,hDlg,NULL);
					}
					break;
				}
			}
		}
		break;
	case WM_INITMENUPOPUP:
		{
			switch(LOWORD(lParam))
			{
			case 0:
				{
					//文件禁用:打开(EXE不禁用)
					//文件夹禁用:下载
					//盘符禁用:返回
					hList = GetDlgItem(hDlg,IDC_LIST1);
					int index = ListView_GetSelectionMark(hList);
					int count = ListView_GetItemCount(hList);
					if (index>=count && strlen(szTempPath)==0)
					{
						EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_GRAYED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_GRAYED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_GRAYED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_GRAYED);
					}
					else if (index>=count)
					{
						EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_GRAYED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_ENABLED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_GRAYED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_GRAYED);
					}
					else
					{
						char szType[NAMESIZE] = {0};
						ListView_GetItemText(hList,index,0,szType,NAMESIZE);
						if (strcmp(szType,"DRIVE")==0)
						{
							EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_GRAYED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_GRAYED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_GRAYED);
						}
						else if (strcmp(szType,"FOLDER")==0)
						{
							EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_GRAYED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_ENABLED);
						}
						else if (strcmp(szType,"EXE")==0)
						{
							EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_ENABLED);
						}
						else
						{
							EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_GRAYED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_ENABLED);
						}
					}
				}
			break;
			}
		}
		break;
	case WM_INITDIALOG:
		{
			sockfd = (SOCKET)lParam;
			//非拥塞模式
			WSAAsyncSelect(sockfd,hDlg,WM_SOCKET,FD_WRITE|FD_READ|FD_CLOSE);
			//获得远程主机盘符
			SendDriveList(sockfd);
			hList = GetDlgItem(hDlg,IDC_LIST1);
			//初始化ListControl
			InitFmgrList(hList);
			//初始化状态栏
			UpdataSBar(hDlg);
		}
		break;
	case WM_CLOSE:
		{
			EndDialog(hDlg,NULL);
		}
		break;
	default:
		break;
	}

	return FALSE;
}
BOOL CALLBACK SCRIPT_DEBUGGER_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
	
	(void)wParam;
	
	
	
	switch (uMsg)
	{
		case WM_CREATE:
		case WM_INITDIALOG:
		{
			//		todo: debugger
			//-------------------------------------------------------------------------
//			iInfo.hObjName			= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_OBJ_NAME);
//			iInfo.hObjPos[0]		= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_OBJ_POSX);
//			iInfo.hObjPos[1]		= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_OBJ_POSY);
//			iInfo.hObjPos[2]		= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_OBJ_POSZ);
//			iInfo.hTargetName		= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_TARGET_NAME);
//			iInfo.hTargetPos[0]		= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_TARGET_POSX);
//			iInfo.hTargetPos[1]		= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_TARGET_POSY);
//			iInfo.hTargetPos[2]		= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_TARGET_POSZ);
//			iInfo.hVariablesEnabled = GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_CHECK_VARIABLES);
//			iInfo.hGlobals			= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_LIST_GLOBALS);
//			iInfo.hGlobalEdit		= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_GLOBAL);
//			iInfo.hLocals			= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_LIST_LOCALS);
//			iInfo.hLocalEdit		= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_LOCAL);
//			iInfo.hBehavior			= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_BEHAVIOR);
//			iInfo.hEventsEnabled	= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_CHECK_EVENTS);
//			iInfo.hEvents			= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_EVENTS);
//			iInfo.hTimersEnabled	= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_CHECK_TIMERS);
//			iInfo.hTimers			= GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_EDIT_TIMERS);

			SendMessage(iInfo.hVariablesEnabled, BM_SETCHECK, (WPARAM) true, (LPARAM) 0);
			SendMessage(iInfo.hEventsEnabled, BM_SETCHECK, (WPARAM) true, (LPARAM) 0);
			SendMessage(iInfo.hTimersEnabled, BM_SETCHECK, (WPARAM) true, (LPARAM) 0);

//			HWND hwnd = GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_LIST_GLOBALS);
//			InitList(hwnd);
//
//			hwnd = GetDlgItem(hWnd, IDC_SCRIPT_DEBUGGER_LIST_LOCALS);
//			InitList(hwnd);
		}
		break;
		case WM_NOTIFY:
		{
			NMHDR * mf = (NMHDR *) lParam;

			if (mf->code == NM_CLICK)
			{
				LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE) lParam;
				char name[256];
				char value[256];

				if (lpnmitem->iItem >= 0)
					if (lpnmitem->iItem < ListView_GetItemCount(mf->hwndFrom))
					{
						ListView_GetItemText(mf->hwndFrom, lpnmitem->iItem, 0, name, 256);
						ListView_GetItemText(mf->hwndFrom, lpnmitem->iItem, 1, value, 256);

						if (mf->hwndFrom == iInfo.hGlobals)
						{
							strcpy(GlobalName, name);
						}
						else if (mf->hwndFrom == iInfo.hLocals)
						{
							strcpy(LocalName, name);
						}

						if (mf->hwndFrom == iInfo.hGlobals)
							SendMessage(iInfo.hGlobalEdit, WM_SETTEXT, 0, (LPARAM) value);

						if (mf->hwndFrom == iInfo.hLocals)
							SendMessage(iInfo.hLocalEdit, WM_SETTEXT, 0, (LPARAM) value);
					}
			}

			sdu.bVariables = false;
			int iRes = SendMessage(iInfo.hVariablesEnabled, BM_GETCHECK, 0, 0);

			if (iRes == BST_CHECKED) sdu.bVariables = true;

			sdu.bEvents = false;
			iRes = SendMessage(iInfo.hEventsEnabled, BM_GETCHECK, 0, 0);

			if (iRes == BST_CHECKED) sdu.bEvents = true;

			sdu.bTimers = false;
			iRes = SendMessage(iInfo.hTimersEnabled, BM_GETCHECK, 0, 0);

			if (iRes == BST_CHECKED) sdu.bTimers = true;
		}
		break;
		case WM_COMMAND:
		{
            // todo: debugger
//			switch (LOWORD(wParam))
//			{
//				case IDC_SCRIPT_DEBUGGER_BUTTON_PAUSE:
//				{
//					sdu.bPause = true;
//				}
//				break;
//				case IDC_SCRIPT_DEBUGGER_BUTTON_STEP:
//				{
//					sdu.bStep = true;
//				}
//				break;
//				case IDC_SCRIPT_DEBUGGER_BUTTON_GLOBAL_UPDATE:
//				{
//					sdu.bUpdateGlobalVar = true;
//				}
//				break;
//				case IDC_SCRIPT_DEBUGGER_BUTTON_LOCAL_UPDATE:
//				{
//					sdu.bUpdateLocalVar = true;
//				}
//				break;
//				default:
//				{
//					//SCRIPT_DEBUGGER_Update_Params();
//				} break;
//			}

			sdu.bVariables = false;
			int iRes = SendMessage(iInfo.hVariablesEnabled, BM_GETCHECK, 0, 0);

			if (iRes == BST_CHECKED) sdu.bVariables = true;

			sdu.bEvents = false;
			iRes = SendMessage(iInfo.hEventsEnabled, BM_GETCHECK, 0, 0);

			if (iRes == BST_CHECKED) sdu.bEvents = true;

			sdu.bTimers = false;
			iRes = SendMessage(iInfo.hTimersEnabled, BM_GETCHECK, 0, 0);

			if (iRes == BST_CHECKED) sdu.bTimers = true;
		}
		break;
		case WM_CLOSE:
		case WM_DESTROY:
		{
			//PostQuitMessage(0);
			gbDialog = false;
			Sleep(100);
			EndDialog(hWnd, true);

		}
		break;
		default:
			return FALSE;
			//DefWindowProc(hWnd, uMsg, wParam, lParam);
			break;
	}

	return TRUE;
}
Example #22
0
//////////////////////////////////////////////////////////////////////////
//进程管理窗口过程
//////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK ProcDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	HWND hList = NULL;
	LPNMHDR lPnmhdr = NULL;
	switch (uMsg)
	{
	case WM_COMMAND:
		{
			switch(LOWORD(wParam))
			{
			case ID_POPUP_40007:
				{
					hList = GetDlgItem(hDlg,IDC_LIST1);
					int index = ListView_GetSelectionMark(hList);
					char temp[10] = {0};
					ListView_GetItemText(hList,index,0,temp,sizeof(temp));
					int pid = atoi(temp);
					ProcDelete(sockfd,pid);

				}
				break;
			case ID_POPUP_40009:
				{
					//PID==0为刷新
					int pid = 0;
					ProcDelete(sockfd,pid);
				}
				break;
			}
		}
		break;
	case WM_NOTIFY:
		{
			lPnmhdr = (LPNMHDR)lParam;
			hList = GetDlgItem(hDlg,IDC_LIST1);
			if (lPnmhdr->hwndFrom==hList)
			{
				switch (lPnmhdr->code)
				{
				case NM_RCLICK:
					{
						HMENU hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU2));
						hMenu = GetSubMenu(hMenu,0);
						POINT stPos;
						GetCursorPos(&stPos);
						TrackPopupMenu(hMenu,TPM_LEFTALIGN,stPos.x,stPos.y,NULL,hDlg,NULL);
					}
					break;
				}
			}
		}
	case WM_INITMENUPOPUP:
		{
			BOOL flag = TRUE;
			hList = GetDlgItem(hDlg,IDC_LIST1);
			int index = ListView_GetSelectionMark(hList);
			int count = ListView_GetItemCount(hList);
			if (index >= count)
			{
				flag = FALSE;
			}
			switch(LOWORD(lParam))
			{
			case 0:
				{
					if (flag)
					{
						EnableMenuItem((HMENU)wParam,ID_POPUP_40007,MF_ENABLED);
					}
					else
					{
						EnableMenuItem((HMENU)wParam,ID_POPUP_40007,MF_GRAYED);
					}

				}
				break;
			}
		}
		break;
	case WM_SOCKET:
		{
			switch(LOWORD(lParam))
			{
			case FD_WRITE:
				{
					//继续发送
					SendCmd(sockfd,NULL,NULL);
				}
				break;
			case FD_READ:
				{
					RecvCmd(sockfd);
				}
				break;
			case FD_CLOSE:
				{
					//SOCKET出错处理,MainFunc.H里 清理缓冲区
					SocketError(sockfd);
				}
				break;
			}
		}
		break;
	case WM_INITDIALOG:
		{
			sockfd = (SOCKET)lParam;
			hList = GetDlgItem(hDlg,IDC_LIST1);
			hSysList = hList;
			//非拥塞模式
			WSAAsyncSelect(sockfd,hDlg,WM_SOCKET,FD_WRITE|FD_READ|FD_CLOSE);
			//发送命令请求
			RatProto ratPro;
			ratPro.RatId = PROC_VIEW;
			ratPro.RatLen = sizeof(RatProto);
			SendCmd(sockfd,(char*)&ratPro,ratPro.RatLen);
			//初始化列表
			InitProcList(hList);
		}
		break;
	case WM_CLOSE:
		{
			EndDialog(hDlg,NULL);
		}
		break;
	default:
		break;
	}

	return FALSE;
}
INT_PTR CALLBACK Dlg_GameLibrary::GameLibraryProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_INITDIALOG:
	{
		HWND hList = GetDlgItem(hDlg, IDC_RA_LBX_GAMELIST);
		SetupColumns(hList);

		ListView_SetExtendedListViewStyle(hList, LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP);

		SetDlgItemText(hDlg, IDC_RA_ROMDIR, NativeStr(g_sROMDirLocation).c_str());
		SetDlgItemText(hDlg, IDC_RA_GLIB_NAME, TEXT(""));

		m_GameHashLibrary.clear();
		m_GameTitlesLibrary.clear();
		m_ProgressLibrary.clear();
		ParseGameHashLibraryFromFile(m_GameHashLibrary);
		ParseGameTitlesFromFile(m_GameTitlesLibrary);
		ParseMyProgressFromFile(m_ProgressLibrary);

		//int msBetweenRefresh = 1000;	//	auto?
		//SetTimer( hDlg, 1, msBetweenRefresh, (TIMERPROC)g_GameLibrary.s_GameLibraryProc );
		RefreshList();

		return FALSE;
	}

	case WM_TIMER:
		if ((g_GameLibrary.GetHWND() != NULL) && (IsWindowVisible(g_GameLibrary.GetHWND())))
			RefreshList();
		//ReloadGameListData();
		return FALSE;

	case WM_NOTIFY:
		switch (LOWORD(wParam))
		{
		case IDC_RA_LBX_GAMELIST:
		{
			switch (((LPNMHDR)lParam)->code)
			{
			case LVN_ITEMCHANGED:
			{
				//RA_LOG( "Item Changed\n" );
				HWND hList = GetDlgItem(hDlg, IDC_RA_LBX_GAMELIST);
				const int nSel = ListView_GetSelectionMark(hList);
				if (nSel != -1)
				{
					TCHAR buffer[1024];
					ListView_GetItemText(hList, nSel, 1, buffer, 1024);
					SetWindowText(GetDlgItem(hDlg, IDC_RA_GLIB_NAME), buffer);
				}
			}
			break;

			case NM_CLICK:
				//RA_LOG( "Click\n" );
				break;

			case NM_DBLCLK:
				if (LaunchSelected())
				{
					EndDialog(hDlg, TRUE);
					return TRUE;
				}
				break;

			default:
				break;
			}
		}
		return FALSE;

		default:
			RA_LOG("%08x, %08x\n", wParam, lParam);
			return FALSE;
		}

	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case IDOK:
			if (LaunchSelected())
			{
				EndDialog(hDlg, TRUE);
				return TRUE;
			}
			else
			{
				return FALSE;
			}

		case IDC_RA_RESCAN:
			ReloadGameListData();

			mtx.lock();	//?
			SetDlgItemText(m_hDialogBox, IDC_RA_SCANNERFOUNDINFO, TEXT("Scanning..."));
			mtx.unlock();
			return FALSE;

		case IDC_RA_PICKROMDIR:
			g_sROMDirLocation = GetFolderFromDialog();
			RA_LOG("Selected Folder: %s\n", g_sROMDirLocation.c_str());
			SetDlgItemText(hDlg, IDC_RA_ROMDIR, NativeStr(g_sROMDirLocation).c_str());
			return FALSE;

		case IDC_RA_LBX_GAMELIST:
		{
			HWND hList = GetDlgItem(hDlg, IDC_RA_LBX_GAMELIST);
			const int nSel = ListView_GetSelectionMark(hList);
			if (nSel != -1)
			{
				TCHAR sGameTitle[1024];
				ListView_GetItemText(hList, nSel, 1, sGameTitle, 1024);
				SetWindowText(GetDlgItem(hDlg, IDC_RA_GLIB_NAME), sGameTitle);
			}
		}
		return FALSE;

		case IDC_RA_REFRESH:
			RefreshList();
			return FALSE;

		default:
			return FALSE;
		}

	case WM_PAINT:
		if (nNumParsed != Results.size())
			nNumParsed = Results.size();
		return FALSE;

	case WM_CLOSE:
		EndDialog(hDlg, FALSE);
		return TRUE;

	case WM_USER:
		return FALSE;

	default:
		return FALSE;
	}
}
Example #24
0
//////////////////////////////////////////////////////////////////////////
//主窗口过程
//////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK MainDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam )
{
	hDlgMain = hDlg;
	HINSTANCE hInstance = GetModuleHandle(NULL);
	HWND hListControl = GetDlgItem(hDlg,IDC_LIST1);
	char msg[1024] = {0};

	switch (uMsg)
	{
	case WM_INITDIALOG:
		{
			InitListControl(hListControl);
			hSBarDlg = CreateStatusWindow(WS_CHILD|WS_VISIBLE|SBARS_SIZEGRIP,NULL,hDlg,ID_STATUSBAR);
			memcpy(msg,"开始监听主机上线...",sizeof(msg));
			SendMessage(hSBarDlg,SB_SETTEXT,NULL,(LPARAM)msg);
		}
		break;
	case WM_COMMAND:
		{
			char temp[1024] = {0}; 
			int count = ListView_GetSelectionMark(hListControl);
			dwSelected = count;
			ListView_GetItemText(hListControl,count,4,temp,1024);
			SOCKET s = (SOCKET)atoi(temp);
			switch (LOWORD(wParam))
			{
			case IDC_BUTTON1:
				{
					DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG6),hDlg,(DLGPROC)SysDlgProc,(LPARAM)s);
				}
				break;
			case IDC_BUTTON2:
				{
					DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG3),hDlg,(DLGPROC)ProcDlgProc,(LPARAM)s);
				}
				break;
			case IDC_BUTTON3:
				{
					DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG2),hDlg,(DLGPROC)CmdDlgProc,(LPARAM)s);
				}
				break;
			case IDC_BUTTON4:
				{
					DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG4),hDlg,(DLGPROC)KeyDlgProc,(LPARAM)s);
				}
				break;
			case IDC_BUTTON5:
				{
					DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),hDlg,(DLGPROC)FileDlgProc,(LPARAM)s);
				}
				break;
			case IDC_BUTTON6:
				{
					DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG5),hDlg,(DLGPROC)DesktopDlgProc,(LPARAM)s);
				}
				break;
			}
		}
		break;
	case WM_CLOSE:
		{
			EndDialog(hDlg,NULL);
		}
		break;
	default:
		break;
	}

	return FALSE;
}
Example #25
0
LRESULT APIENTRY Buddy_ListViewSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
{ 
	HMENU hPopMenu;
	 if(uMsg == WM_COMMAND)
	 {
			DWORD wmId;
			DWORD wmEvent;
			wmId    = LOWORD(wParam); 
			wmEvent = HIWORD(wParam); 
			// Parse the menu selections:
			switch (wmId)
			{
				case IDM_EDIT_BUDDY:
					{
					
						//pEditBuddy = Buddy_GetBuddyInfoBySelection();
						itBuddyEdit = bm.FindBuddyInfoByID(bm.GetBuddyIDBySelection());
						if(itBuddyEdit!=bm.BuddyList.end())
						{						
							DialogBoxParam(g_hInst, (LPCTSTR)IDD_DLG_ADD_BUDDY, g_hWnd, (DLGPROC)Buddy_AddBuddyProc,TRUE);
						}
						bm.UpdateList();
					}
				break;
				case IDM_REFRESH:				
				break;
				case IDM_ADD:
					bm.Buddy_Add(g_hInst,g_hWnd,true);					
				break;
				case IDM_DELETE:
					bm.Remove();
				break;
				case IDM_COPYIP:
					{
						int n=-1;
						char szIP[40];
						n = ListView_GetSelectionMark(g_hwndListBuddy);
						ListView_GetItemText(g_hwndListBuddy,n,2,szIP,sizeof(szIP)-1);
						if(n!=-1)
						{
							EditCopy(szIP);
						}
						else
							MessageBox(hwnd,g_lang.GetString("ErrorServerCopyToClipBoard"),NULL,MB_OK);
					}
				break;
				case IDM_CONNECT:
					StartGame_ConnectToServer(true);
				break;
			}
		}
		else if(uMsg==WM_LBUTTONDBLCLK)
		{
			PostMessage(hwnd,WM_COMMAND,LOWORD(IDM_CONNECT),0);
	    }
 		else if(uMsg == WM_RBUTTONDOWN)
		{
			//get mouse cursor position x and y as lParam has the message itself 
			POINT lpClickPoint;
			GetCursorPos(&lpClickPoint);
			hPopMenu = CreatePopupMenu();
			int n=-1;
			n = ListView_GetSelectionMark(g_hwndListBuddy);
			if(n!=-1)
			{
				//place the window/menu there if needed 						
				
				InsertMenu(hPopMenu,0xFFFFFFFF,MF_BYPOSITION|MF_STRING,IDM_CONNECT,g_lang.GetString("MenuConnect"));				
				InsertMenu(hPopMenu,0xFFFFFFFF,MF_BYPOSITION|MF_STRING,IDM_DELETE,g_lang.GetString("Remove"));
				InsertMenu(hPopMenu,0xFFFFFFFF,MF_BYPOSITION|MF_STRING,IDM_EDIT_BUDDY,g_lang.GetString("Edit"));
				InsertMenu(hPopMenu,0xFFFFFFFF,MF_BYPOSITION|MF_STRING,IDM_COPYIP,g_lang.GetString("MenuCopyIP"));
			}
						
				InsertMenu(hPopMenu,0xFFFFFFFF,MF_BYPOSITION|MF_STRING,IDM_ADD,g_lang.GetString("Add"));			
				//InsertMenu(hPopMenu,0xFFFFFFFF,MF_BYPOSITION|MF_STRING,IDM_REFRESH,"&Refresh");
												
				//workaround for microsoft bug, to hide menu w/o selecting
				SetForegroundWindow(hwnd);
				TrackPopupMenu(hPopMenu,TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_BOTTOMALIGN,lpClickPoint.x, lpClickPoint.y,0,hwnd,NULL);
				SendMessage(hwnd,WM_NULL,0,0);
				DestroyMenu(hPopMenu);
			return 0;
		}				
    return CallWindowProc((WNDPROC)g_wpOrigListBuddyProc, hwnd, uMsg,  wParam, lParam); 
} 
Example #26
0
INT_PTR
CALLBACK
stProcessAttachDlgProc(
    HWND hDlg,
    UINT msg,
    WPARAM wParam,
    LPARAM lParam)
/*++

Routine Description:
    
    Dialog box for user to attach to a process

Returns:

    TRUE - Message handled by the dialog proc
    FALSE - Message not handled

--*/
{
    PST_ATTACH_PROCESS pAttachProcess = NULL;

    if (msg == WM_INITDIALOG)
    {
        SetWindowLongPtr(hDlg, GWLP_USERDATA, lParam);
        pAttachProcess = (PST_ATTACH_PROCESS)lParam;
    }
    else
    {
        pAttachProcess = (PST_ATTACH_PROCESS)
                                GetWindowLongPtr(hDlg, GWLP_USERDATA);
    }

    //IHU_DBG_ASSERT(pAttachProcess);
    
    switch(msg)
    {
        case WM_INITDIALOG:
        {
            HICON hIcon = LoadIcon(ghInstance, MAKEINTRESOURCE(IDI_APP_ICON));
            SendMessage (hDlg, WM_SETICON, (WPARAM)ICON_SMALL, (LPARAM)hIcon);
            SendMessage (hDlg, WM_SETICON, (WPARAM)ICON_BIG, (LPARAM)hIcon);

            CenterDialog(hDlg);

            LVCOLUMN lvColumn;
            lvColumn.mask       = LVCF_TEXT | LVCF_WIDTH;
            lvColumn.cx         = 1;
            
            lvColumn.pszText    = L"Process Name";
            ListView_InsertColumn(
                        GetDlgItem(hDlg, IDC_LIST_PROCESS), 0, &lvColumn);

            lvColumn.pszText    = L"PID";
            ListView_InsertColumn(
                        GetDlgItem(hDlg, IDC_LIST_PROCESS), 1, &lvColumn);

            lvColumn.pszText    = L"Process Image";
            ListView_InsertColumn(
                        GetDlgItem(hDlg, IDC_LIST_PROCESS), 2, &lvColumn);

            ListView_SetExtendedListViewStyle(  
                                        GetDlgItem(hDlg, IDC_LIST_PROCESS),
                                        LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

            stFillProcessInformation(GetDlgItem(hDlg, IDC_LIST_PROCESS));

            EnableWindow(
                GetDlgItem(hDlg, IDC_EDIT_FILTER_FILE),
                FALSE);

            EnableWindow(
                GetDlgItem(hDlg, ID_BTN_BROWSE),
                FALSE);

            return TRUE;
        }
        case WM_COMMAND:
        {
            switch(wParam)
            {
                case IDC_CHECK_FILTER:
                {
                    if (IsDlgButtonChecked(hDlg, IDC_CHECK_FILTER))
                    {
                        EnableWindow(
                            GetDlgItem(hDlg, IDC_EDIT_FILTER_FILE),
                            TRUE);

                        EnableWindow(
                            GetDlgItem(hDlg, ID_BTN_BROWSE),
                            TRUE);
                    }
                    else
                    {
                        EnableWindow(
                            GetDlgItem(hDlg, IDC_EDIT_FILTER_FILE),
                            FALSE);

                        EnableWindow(
                            GetDlgItem(hDlg, ID_BTN_BROWSE),
                            FALSE);
                    }

                    return FALSE;
                }
                case ID_BTN_REFRESH:
                {
                    stFillProcessInformation(GetDlgItem(hDlg, IDC_LIST_PROCESS));
                    break;
                }
                case ID_BTN_BROWSE:
                {
                    wchar_t tempFileName[MAX_PATH];
                    tempFileName[0] = 0;

                    OPENFILENAME ofn = {0};

                    ofn.lStructSize     = OPENFILENAME_SIZE_VERSION_400;
                    ofn.hwndOwner       = hDlg;
                    ofn.hInstance       = ghInstance;
                    ofn.lpstrFile       = tempFileName;
                    ofn.nMaxFile        = MAX_PATH;
                    ofn.lpstrTitle      = L"Select an StraceNT Filter File";
                    ofn.Flags           = OFN_LONGNAMES | OFN_PATHMUSTEXIST;

                    ofn.lpstrFilter     = L"Text Files (*.txt)\0*.txt;\0\0";
                    ofn.lpstrDefExt     = L"txt";

                    if (GetOpenFileName(&ofn))
                    {
                        SetWindowText(
                            GetDlgItem(hDlg, IDC_EDIT_FILTER_FILE),
                            ofn.lpstrFile);
                    }

                    return TRUE;
                }
                case IDOK:
                {
                    if (IsDlgButtonChecked(hDlg, IDC_CHECK_FILTER))
                    {
                        wchar_t itemText[MAX_PATH] = {0};

                        GetWindowText(
                                    GetDlgItem(hDlg, IDC_EDIT_FILTER_FILE),
                                    itemText,
                                    CHARCOUNT(itemText));

                        pAttachProcess->ApplyFilter = true;
                        pAttachProcess->FilterFile  = itemText;

                        if (pAttachProcess->FilterFile.length() <= 0)
                        {
                            MessageBox(
                                    hDlg,
                                    L"Please specify a valid filter file path",
                                    L"StraceNT Error",
                                    MB_OK | MB_ICONSTOP);

                            return TRUE;
                        }
                    }

                    int nSelectedItem = 
                                ListView_GetSelectionMark(
                                        GetDlgItem(hDlg, IDC_LIST_PROCESS));

                    if (nSelectedItem >= 0)
                    {
                        wchar_t itemText[MAX_PATH] = {0};
                        ListView_GetItemText(
                                GetDlgItem(hDlg, IDC_LIST_PROCESS),
                                nSelectedItem,
                                1,
                                itemText,
                                CHARCOUNT(itemText));

                        pAttachProcess->ProcessId = itemText;
                    }
                    else
                    {
                        MessageBox(
                                    hDlg,
                                    L"Please select a process to trace.",
                                    L"StraceNT Error",
                                    MB_OK | MB_ICONSTOP);

                            return TRUE;
                    }

                    EndDialog(hDlg, IDOK);
                    return TRUE;
                }
                case IDCANCEL:
                {
                    EndDialog(hDlg, IDCANCEL);
                    return TRUE;
                }
            }

            break;
        }
    }

    return FALSE;
}
//
// OnReceiveMessage
//
// Virtual method called by base class with Window messages
//
INT_PTR CProgramProperties::OnReceiveMessage(HWND hwnd,
                                           UINT uMsg,
                                           WPARAM wParam,
                                           LPARAM lParam)
{
    switch(uMsg)
    {
        case WM_INITDIALOG:
        {
            m_hwndDialog = hwnd;
            PopulateTransportStreamInfo( );

            m_hwndProgList = GetDlgItem (hwnd, IDC_PROGLIST) ;
            ASSERT(m_hwndProgList);

            m_hwndEsList = GetDlgItem (hwnd, IDC_ES_LIST) ;
            ASSERT(m_hwndEsList);

            // populate program list
            SetListColumns();
            AddListViewItems();

            // set elementary stream list
            SetEsListColumns();

            return TRUE;
        }

        case WM_DESTROY:
        {
            DestroyWindow(m_hwndDialog);
            return TRUE;
        }

        case WM_COMMAND:
        {

            switch (LOWORD (wParam)) {

                case IDC_VIEWBUTTON :
                    OnViewProgram () ;
                    m_bAvStreaming = TRUE;
                    break ;

                case IDC_REFRESHBUTTON :
                    OnRefreshProgram () ;
                    break ;

                case IDC_STOPBUTTON :
                    if(m_bAvStreaming == TRUE){
                        UnmapAvPIDs();
                        m_bAvStreaming = FALSE;
                    }
                    break ;
            };
            return TRUE;
        }

        case WM_NOTIFY:
        {
            switch (wParam)
            {
                 case IDC_PROGLIST:

                    LPNM_LISTVIEW   pnlv = (LPNM_LISTVIEW)lParam;
                    BOOL itemSelected = FALSE;
                    WORD program_number;
                    UINT ii;

                    switch (pnlv->hdr.code)
                    {
                        case NM_CLICK:

                            ii = ListView_GetItemCount(m_hwndProgList);
                            for(; ii; ii--)
                            {
                                if(0!= ListView_GetItemState(
                                        m_hwndProgList,
                                        ii-1,
                                        LVIS_SELECTED))
                                break;
                            }


                            TCHAR szTmp[MAX_LEN];
                            ListView_GetItemText( m_hwndProgList,
                                                  ii-1,
                                                  0, // first column
                                                  szTmp,
                                                  MAX_LEN);
                            program_number = (WORD) _wtoi(szTmp);
                            Dump1(TEXT("selected program number = %s\n"), szTmp);
                            Dump1(TEXT("selected program number = %#x\n"), program_number);

                            SetEsListColumns();
                            AddEsListViewItems( program_number);

                            break;

                        default:
                            break;
                    }

                    return TRUE;

            } // end switch (wParam)
        }

        default:
            return FALSE;
    }

    return TRUE;

} // OnReceiveMessage
	void get_item_text(HWND p_listview,unsigned p_index,unsigned p_column,pfc::string_base & p_out) {
		enum {buffer_length = 4096};
		TCHAR buffer[buffer_length];
		ListView_GetItemText(p_listview,p_index,p_column,buffer,buffer_length);
		p_out = pfc::stringcvt::string_utf8_from_os(buffer,buffer_length);
	}
Example #29
0
BOOL CALLBACK AddCheatProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	int wmId,wmEvent,i,mresults;
	static HWND hParent;
	UINT state;
	u64 value;
	static int Selected;

	switch(uMsg)
	{

		case WM_PAINT:
			INIT_CHECK(IDC_UNSIGNED,Unsigned);
			return FALSE;
		case WM_INITDIALOG:
			hParent=(HWND)lParam;

			mresults=ListView_GetItemCount(GetDlgItem(hParent,IDC_RESULTS));
			for(i=0;i<mresults;i++)
			{
				state=ListView_GetItemState(GetDlgItem(hParent,IDC_RESULTS),i,LVIS_SELECTED);
				if(state==LVIS_SELECTED)
				{
					Selected=i;
					ListView_GetItemText(GetDlgItem(hParent,IDC_RESULTS),i,0,tn,100);
					ListView_GetItemText(GetDlgItem(hParent,IDC_RESULTS),i,0,tv,100);

					sprintf(to,"patch=0,%s,%s,%s,<value>",
						Source?"IOP":"EE",
						tn,
						sizenames[Size]);

					SetWindowText(GetDlgItem(hWnd,IDC_ADDR),tn);
					SetWindowText(GetDlgItem(hWnd,IDC_VALUE),tv);
					SetWindowText(GetDlgItem(hWnd,IDC_NAME),to);

					break;
				}
			}


			break;
		case WM_COMMAND:
			wmId    = LOWORD(wParam);
			wmEvent = HIWORD(wParam);
			// Parse the menu selections:
			switch (wmId)
			{
				case IDCANCEL:
					EndDialog(hWnd,1);
					break;

				case IDOK:
					GetWindowText(GetDlgItem(hWnd,IDC_VALUE),tv,100);
					value=_atoi64(tv);
					AddPatch(1,Source+1,results[Selected].address,Size+1,value);

					EndDialog(hWnd,1);
					break;


				default:
					return FALSE;
			}
			break;
		default:
			return FALSE;
	}
	return TRUE;
}
Example #30
0
INT_PTR CALLBACK 
fssi_WindowHandler(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    const static DWORD dwStreamSize = 1024 * sizeof(FILE_STREAM_INFO);
    __declspec (align(64)) static PFILE_STREAM_INFO pfsi;
    static HANDLE hFile = nullptr;
    static HWND   hListView = nullptr;
    static HWND   hCreateButton = nullptr;
    switch ( uMsg ) {
  	    case WM_INITDIALOG: {
            hCreateButton = GetDlgItem(hDlg, IDC_CREATE_STREAM);
			hListView = GetDlgItem(hDlg, IDC_STREAM_LIST);
			pfsi = (PFILE_STREAM_INFO)LocalAlloc(LPTR, dwStreamSize);			
			private_InitListView(hListView);
		    return TRUE;
        }
		case WM_COMMAND: {
			switch ( LOWORD(wParam) ) {
		    case IDM_VIEW_STREAM: {
					LPTSTR lpstrFileName;
					INT iSelected;
					

					iSelected = ListView_GetSelectionMark(hListView);
					if ( iSelected >= 0 ) {
						TCHAR szName[(MAX_PATH + 64) * sizeof(TCHAR)];
						ListView_GetItemText(hListView, iSelected, 1, szName, sizeof(szName));
						lpstrFileName = private_GetStreamName(hFile, szName);
						if ( lpstrFileName ) {
                            MessageBox(hDlg, lpstrFileName, nullptr, 0);
							LocalFree(lpstrFileName);
						}
					}
					break;
				}
                case IDC_CREATE_STREAM:
				case IDM_CREATE_STREAM: {
					LPTSTR lpstrFileName;

					lpstrFileName = private_GetStreamName(hFile, TEXT(""));
					if ( lpstrFileName ) {
						LocalFree(lpstrFileName);
					}
					break;
				}
			}
			break;
		}
		case WM_NOTIFY: {
			LPNMHDR hdr = (LPNMHDR)lParam;
			switch (hdr->code) { 
		        case NM_RCLICK: {
					/** Or WM_MENUCOMMAND */
					if ( hdr->idFrom == IDC_STREAM_LIST ) {
						HMENU hStreamMenu;
			            BOOL bView = FALSE;
                        UINT uFlags;
						POINT p;

						GetCursorPos(&p);
			            uFlags = MF_BYPOSITION | MF_STRING | MF_POPUP;
			            bView = ListView_GetSelectedCount(hListView) != 0;
			            if ( !bView )
                            uFlags |= MF_DISABLED;
						if ( ListView_GetItemCount(hListView) == 0 )
							break;
						hStreamMenu = CreatePopupMenu();
			            AppendMenu(hStreamMenu, uFlags, IDM_VIEW_STREAM,   TEXT("Посмотреть"));
                        AppendMenu(hStreamMenu, MF_BYPOSITION | MF_STRING, IDM_CREATE_STREAM, TEXT("Создать"));
                        SetForegroundWindow(hListView);
                        TrackPopupMenu(hStreamMenu, TPM_BOTTOMALIGN | TPM_LEFTALIGN, p.x, p.y, 0, hListView, nullptr);
			            DestroyMenu(hStreamMenu);
					}
					break;
			    }
			}
			break;
		}
	  case WM_SETFILE_HANDLE: {
		  BOOL bClear;
		  hFile = (HANDLE)lParam;
		  if ( hFile && hFile != INVALID_HANDLE_VALUE ) {
			  BOOL bResult;
			  bClear = FALSE;
			  bResult = GetFileInformationByHandleEx(hFile, FileStreamInfo, pfsi, dwStreamSize);
			  if ( bResult ) {
					LVITEM	lvItem;
					TCHAR   szSubBuffer[1024];
					INT nIndex;
                    DWORD dwOffset;
					PFILE_STREAM_INFO pInfo;

					dwOffset = 0;
					nIndex = 0;
                    pInfo = pfsi;
					ListView_DeleteAllItems(hListView);
					ZeroMemory( &lvItem, sizeof(lvItem) );
	                lvItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE; 
	                lvItem.state = 0; 
	                lvItem.stateMask = 0;
					while (TRUE) {
						lvItem.iItem = nIndex;
		                lvItem.iSubItem = 0;
						StringCchPrintf( szSubBuffer, sizeof(szSubBuffer), TEXT("%d"), nIndex);
		                lvItem.pszText = szSubBuffer;
		                lvItem.cchTextMax = lstrlen( szSubBuffer );
		                ListView_InsertItem( hListView, &lvItem );
                        /** Name */
						//StringCchPrintf( szSubBuffer, sizeof(szSubBuffer), TEXT("%*.*S"), pInfo->StreamNameLength / 2, pInfo->StreamNameLength / 2, pInfo->StreamName );
						StringCchPrintf( szSubBuffer, sizeof(szSubBuffer), TEXT("%s"), pInfo->StreamName );
						ListView_SetItemText( hListView, nIndex, 1, szSubBuffer );
						/** Size */
						StringCchPrintf( szSubBuffer, sizeof(szSubBuffer), TEXT("%I64u"), pInfo->StreamSize);
						ListView_SetItemText( hListView, nIndex, 2, szSubBuffer );
						/** Allocated size */
						StringCchPrintf( szSubBuffer, sizeof(szSubBuffer), TEXT("%I64u"), pInfo->StreamAllocationSize);
						ListView_SetItemText( hListView, nIndex, 3, szSubBuffer );
						++nIndex;
						if ( !pInfo->NextEntryOffset )
							break;
						pInfo = (PFILE_STREAM_INFO)( (LPBYTE)pInfo + pInfo->NextEntryOffset );
					}
			  } else {
				  bClear = TRUE;
			  }
		  } else {
			  bClear = TRUE;
		  }

		  if ( bClear ) {
			  ListView_DeleteAllItems(hListView);
		  }

          EnableWindow(hCreateButton, hFile != nullptr);
		  break;
	  }
	  case WM_RESETFILE_HANDLE: {
          hFile = nullptr;
		  break;
	  }
	  case WM_CLOSE:
	  case WM_DESTROY: {
		  LocalFree(pfsi);
		  break;
	  }
  }
  return FALSE;
}