📄 mainfrm.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 + -