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

📄 vncacceptdialog.cpp

📁 realvnc是一个非常流行的远程控制程序
💻 CPP
字号:
//  Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.////  This file is part of the VNC system.////  The VNC system is free software; you can redistribute it and/or modify//  it under the terms of the GNU General Public License as published by//  the Free Software Foundation; either version 2 of the License, or//  (at your option) any later version.////  This program is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//  GNU General Public License for more details.////  You should have received a copy of the GNU General Public License//  along with this program; if not, write to the Free Software//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,//  USA.//// If the source code for the VNC system is not available from the place // whence you received this file, check http://www.uk.research.att.com/vnc or contact// the authors on vnc@uk.research.att.com for information on obtaining it.// vncAcceptDialog.cpp: implementation of the vncAcceptDialog class, used// to query whether or not to accept incoming connections.#include "stdhdrs.h"#include "vncAcceptDialog.h"#include "WinVNC.h"#include "vncService.h"#include "resource.h"// ConstructorvncAcceptDialog::vncAcceptDialog(UINT timeoutSecs, const char *ipAddress){	m_timeoutSecs = timeoutSecs;	m_ipAddress = strdup(ipAddress);}// DestructorvncAcceptDialog::~vncAcceptDialog(){	if (m_ipAddress)		free(m_ipAddress);}// Routine called to activate the dialog and, once it's done, delete itBOOL vncAcceptDialog::DoDialog(){	int retVal = DialogBoxParam(hAppInstance, MAKEINTRESOURCE(IDD_ACCEPT_CONN), 		NULL, (DLGPROC) vncAcceptDlgProc, (LONG) this);	delete this;	return retVal == IDACCEPT;}// Callback function - handles messages sent to the dialog boxBOOL CALLBACK vncAcceptDialog::vncAcceptDlgProc(HWND hwnd,											UINT uMsg,											WPARAM wParam,											LPARAM lParam) {	// This is a static method, so we don't know which instantiation we're 	// dealing with. But we can get a pseudo-this from the parameter to 	// WM_INITDIALOG, which we therafter store with the window and retrieve	// as follows:	vncAcceptDialog *_this = (vncAcceptDialog *) GetWindowLong(hwnd, GWL_USERDATA);	switch (uMsg) {		// Dialog has just been created	case WM_INITDIALOG:		{			// Save the lParam into our user data so that subsequent calls have			// access to the parent C++ object            SetWindowLong(hwnd, GWL_USERDATA, lParam);            vncAcceptDialog *_this = (vncAcceptDialog *) lParam;			// Set the IP-address string			SetDlgItemText(hwnd, IDC_ACCEPT_IP, _this->m_ipAddress);			if (SetTimer(hwnd, 1, 1000, NULL) == 0)				EndDialog(hwnd, IDREJECT);			_this->m_timeoutCount = _this->m_timeoutSecs;			// Attempt to mimic Win98/2000 dialog behaviour			if ((vncService::IsWinNT() && (vncService::VersionMajor() <= 4)) ||				(vncService::IsWin95() && (vncService::VersionMinor() == 0)))			{				// Perform special hack to display the dialog safely				if (GetWindowThreadProcessId(GetForegroundWindow(), NULL) != GetCurrentProcessId())				{					// We can't set our dialog as foreground if the foreground window					// doesn't belong to us - it's unsafe!					SetActiveWindow(hwnd);					_this->m_foreground_hack = TRUE;					_this->m_flash_state = FALSE;				}			}			if (!_this->m_foreground_hack) {				SetForegroundWindow(hwnd);			}			// Beep			MessageBeep(MB_ICONEXCLAMATION);                        // Return success!			return TRUE;		}		// Timer event	case WM_TIMER:		if ((_this->m_timeoutCount) == 0)			EndDialog(hwnd, IDREJECT);		_this->m_timeoutCount--;		// Flash if necessary		if (_this->m_foreground_hack) {			if (GetWindowThreadProcessId(GetForegroundWindow(), NULL) != GetCurrentProcessId())			{				_this->m_flash_state = !_this->m_flash_state;				FlashWindow(hwnd, _this->m_flash_state);			} else {				_this->m_foreground_hack = FALSE;			}		}		// Update the displayed count		char temp[256];		sprintf(temp, "AutoReject:%u", (_this->m_timeoutCount));		SetDlgItemText(hwnd, IDC_ACCEPT_TIMEOUT, temp);		break;		// Dialog has just received a command	case WM_COMMAND:		switch (LOWORD(wParam)) {			// User clicked Accept or pressed return		case IDACCEPT:		case IDOK:			EndDialog(hwnd, IDACCEPT);			return TRUE;		case IDREJECT:		case IDCANCEL:			EndDialog(hwnd, IDREJECT);			return TRUE;		};		break;		// Window is being destroyed!  (Should never happen)	case WM_DESTROY:		EndDialog(hwnd, IDREJECT);		return TRUE;	}	return 0;}

⌨️ 快捷键说明

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