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

📄 mainfrm.cpp

📁 对光驱说: 芝麻开门
💻 CPP
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "CDRomDoor.h"
#include "resource.h"

#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_COMMAND(ID_OPEN, OnOpen)
	ON_COMMAND(ID_CLOSE, OnClose)
	ON_COMMAND(ID_EXIT, OnExit)
	//}}AFX_MSG_MAP
	ON_MESSAGE(UM_ICONNOTIFY, OnIconNotify)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	m_bOpen = false;
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

	// Add icon onto the task bar ...
	AddIconOnTaskbar();
	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
	cs.cx = 0;
	cs.cy = 0;
	cs.x = 0;
	cs.y = 0;
	return TRUE;
}

void CMainFrame::OnDestroy() 
{
	DelIconFormTaskBar();

	CFrameWnd::OnDestroy();	
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG


BOOL CMainFrame::AddIconOnTaskbar()
{
	// Initialize notify icon data ...
	NOTIFYICONDATA nid;

	nid.cbSize = sizeof(NOTIFYICONDATA);
	nid.hIcon  = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	nid.hWnd   = m_hWnd;
	nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
	nid.uID    = IDR_MAINFRAME;
	nid.uCallbackMessage = UM_ICONNOTIFY;
	// nid.szTip
	lstrcpy(nid.szTip, _T("hasgone 的光驱 打开/关闭程序") );

	return Shell_NotifyIcon(NIM_ADD, &nid);
}

BOOL CMainFrame::DelIconFormTaskBar()
{
	NOTIFYICONDATA nid;
	nid.cbSize = sizeof(nid);
	nid.hWnd   = m_hWnd;
	nid.uID    = IDR_MAINFRAME;
	
	return Shell_NotifyIcon(NIM_DELETE, &nid);
}

void CMainFrame::PopMenu(const CPoint & point, UINT nFlags)
{
	CMenu popMenu;
	popMenu.LoadMenu(IDR_ICONUSE);

	CMenu * subMenu = popMenu.GetSubMenu(0);

	subMenu->TrackPopupMenu(nFlags, point.x, point.y, this);
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers

LRESULT CMainFrame::OnIconNotify(WPARAM wParam, LPARAM lParam)
{
	CPoint cursorPoint;

	switch ((UINT)lParam)
	{
		case WM_LBUTTONDBLCLK:
			 if(!m_bOpen)  // CDRom's door is close
			 {
				 mciSendString("Set cdAudio door open wait", NULL, 0, NULL);
				 m_bOpen = !m_bOpen;
			 }
			 else                     // CDRom's door is open
			 {
				 mciSendString("Set cdAudio door closed wait", NULL, 0, NULL);
				 m_bOpen = !m_bOpen;
			 }			
			 break;

		case WM_RBUTTONDOWN:
			 GetCursorPos(&cursorPoint);
			 PopMenu(cursorPoint, TPM_RIGHTALIGN | TPM_RIGHTBUTTON);
			 break;
	
		default:
			 break;
	}

	return 0;
}

BOOL CMainFrame::StartupOnceWhenReboot()
{	
	// write information in register =========================
	CString sDirectory = _T("Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce");
	
	HKEY hRegKey = NULL;

	// Open register key ...
	LONG bSuc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sDirectory, 0, KEY_WRITE, &hRegKey);
	if(bSuc != ERROR_SUCCESS)
		return FALSE;

	// Get the directory of the application ...
	TCHAR szFileName[255];
	GetModuleFileName(NULL, szFileName, 255);

	// Set value in register ...
	CONST BYTE * pData = (BYTE *)szFileName;  // save the old value ...
	DWORD cbData = 255;                       // the size of old value ...
	bSuc = RegSetValueEx(hRegKey, "CDRomDoor", 0, REG_SZ, pData, cbData);
	if(bSuc != ERROR_SUCCESS)
		return FALSE;

	// Close handle ...
	bSuc = RegCloseKey(hRegKey);
	if(bSuc != ERROR_SUCCESS)
		return FALSE;

	return TRUE;
}

void CMainFrame::OnOpen() 
{
	mciSendString("Set cdAudio door open wait", NULL, 0, NULL);
	m_bOpen = true;
}

void CMainFrame::OnClose() 
{
	mciSendString("Set cdAudio door closed wait", NULL, 0, NULL);
	m_bOpen = false; 
}

void CMainFrame::OnExit() 
{
	PostMessage(WM_CLOSE, 0, 0);
}

⌨️ 快捷键说明

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