📄 helperdlg.cpp
字号:
// TODO: Add your message handler code here and/or call default
CWnd::OnLButtonDown(nFlags, point);
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x,point.y));
}
BOOL CHelperDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
// return TRUE;
CRect rect;
GetWindowRect(&rect);
CDC memDC;
CBitmap* pOldMemBmp = NULL;
memDC.CreateCompatibleDC(pDC);
pOldMemBmp = memDC.SelectObject(&m_bmpFrame);
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
if (pOldMemBmp) memDC.SelectObject( pOldMemBmp );
return TRUE;
}
void CHelperDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
BCMenu m_menu;
BCMenu *pMenu;
LPPOINT lpoint = new POINT;
::GetCursorPos(lpoint);//得到鼠标位置
m_menu.LoadMenu(IDR_MENU_POPUP);
// m_menu.LoadToolbar(IDR_MAINFRAME);
m_menu.LoadToolbar(IDR_TOOLBAR);
pMenu = (BCMenu*)m_menu.GetSubMenu(0);
pMenu->SetMenuDrawMode(BCMENU_DRAWMODE_XP);
m_bShow?(pMenu->CheckMenuItem(ID_MENU_SHOW, MF_CHECKED|MF_BYCOMMAND)):
pMenu->CheckMenuItem(ID_MENU_SHOW, MF_UNCHECKED|MF_BYCOMMAND);
(GetExStyle() & WS_EX_TOPMOST) ? (pMenu->CheckMenuItem(ID_MENU_ALWAYSONTOP, MF_CHECKED|MF_BYCOMMAND)):
(pMenu->CheckMenuItem(ID_MENU_ALWAYSONTOP, MF_UNCHECKED|MF_BYCOMMAND));
pMenu->TrackPopupMenu (TPM_LEFTALIGN,lpoint->x,lpoint->y,this);
// m_menu.Detach()
m_menu.DestroyMenu();
delete lpoint;
}
void CHelperDlg::OnMenuSettimer()
{
// TODO: Add your command handler code here
CSettimerDlg dlg;
if(dlg.DoModal()==IDOK)
{
ReadArrayThingFromFile();
}
}
//********************************************************************************
// LoadBMPImage - Loads a BMP file and creates a bitmap GDI object
// also creates logical palette for it.
// Returns - TRUE for success
// sBMPFile - Full path of the BMP file
// bitmap - The bitmap object to initialize
// pPal - Will hold the logical palette. Can be NULL
//********************************************************************************
BOOL CHelperDlg::LoadBMPImage(LPCTSTR sBMPFile, CBitmap &bitmap, CPalette *pPal)
{
CFile file;
if( !file.Open( sBMPFile, CFile::modeRead) )
return FALSE;
BITMAPFILEHEADER bmfHeader;
// Read file header
if (file.Read((LPSTR)&bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader))
return FALSE;
// File type should be 'BM'
if (bmfHeader.bfType != ((WORD) ('M' << 8) | 'B'))
return FALSE;
// Get length of the remainder of the file and allocate memory
DWORD nPackedDIBLen = file.GetLength() - sizeof(BITMAPFILEHEADER);
HGLOBAL hDIB = ::GlobalAlloc(GMEM_FIXED, nPackedDIBLen);
if (hDIB == 0)
return FALSE;
// Read the remainder of the bitmap file.
if (file.ReadHuge((LPSTR)hDIB, nPackedDIBLen) != nPackedDIBLen )
{
::GlobalFree(hDIB);
return FALSE;
}
BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB ;
BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ;
// If bmiHeader.biClrUsed is zero we have to infer the number
// of colors from the number of bits used to specify it.
int nColors = bmiHeader.biClrUsed ? bmiHeader.biClrUsed :
1 << bmiHeader.biBitCount;
LPVOID lpDIBBits;
if( bmInfo.bmiHeader.biBitCount > 8 )
lpDIBBits = (LPVOID)((LPDWORD)(bmInfo.bmiColors + bmInfo.bmiHeader.biClrUsed) +
((bmInfo.bmiHeader.biCompression == BI_BITFIELDS) ? 3 : 0));
else
lpDIBBits = (LPVOID)(bmInfo.bmiColors + nColors);
// Create the logical palette
if( pPal != NULL )
{
// Create the palette
if( nColors <= 256 )
{
UINT nSize = sizeof(LOGPALETTE) + (sizeof(PALETTEENTRY) * nColors);
LOGPALETTE *pLP = (LOGPALETTE *) new BYTE[nSize];
pLP->palVersion = 0x300;
pLP->palNumEntries = nColors;
for( int i=0; i < nColors; i++)
{
pLP->palPalEntry[i].peRed = bmInfo.bmiColors[i].rgbRed;
pLP->palPalEntry[i].peGreen = bmInfo.bmiColors[i].rgbGreen;
pLP->palPalEntry[i].peBlue = bmInfo.bmiColors[i].rgbBlue;
pLP->palPalEntry[i].peFlags = 0;
}
pPal->CreatePalette( pLP );
delete[] pLP;
}
}
CClientDC dc(NULL);
CPalette* pOldPalette = NULL;
if( pPal )
{
pOldPalette = dc.SelectPalette( pPal, FALSE );
dc.RealizePalette();
}
HBITMAP hBmp = CreateDIBitmap( dc.m_hDC, // handle to device context
&bmiHeader, // pointer to bitmap size and format data
CBM_INIT, // initialization flag
lpDIBBits, // pointer to initialization data
&bmInfo, // pointer to bitmap color-format data
DIB_RGB_COLORS); // color-data usage
bitmap.Attach( hBmp );
if( pOldPalette )
dc.SelectPalette( pOldPalette, FALSE );
::GlobalFree(hDIB);
return TRUE;
}
void CHelperDlg::OnMenuQuickremind()
{
// TODO: Add your command handler code here
CQuickRemindDlg dlg;
if(dlg.DoModal()==IDOK)
{
CTime time;
time = CTime::GetCurrentTime();
int hour = time.GetHour();
int minute = time.GetMinute();
int second = time.GetSecond();
m_nSettimerBegin = hour*3600+minute*60+second;
m_nSetTime = dlg.m_nSetHour*3600 + dlg.m_nSetMinute*60 + dlg.m_nSetSecond;
// int time = (dlg.m_nSetHour*3600 + dlg.m_nSetMinute*60 + dlg.m_nSetSecond) * 1000;
m_strThingToRemind = dlg.m_strThingToRemind;
// SetTimer(HELPER_TIMER_QUICKREMIND, time, NULL);
SetTimer(HELPER_TIMER_QUICKREMIND, HELPER_TIMER_QUICKREMIND, NULL);
}
}
void CHelperDlg::OnMenuShow()
{
// TODO: Add your command handler code here
if(m_bShow)
{
ShowWindow(SW_HIDE);
m_bShow = FALSE;
}
else
{
ShowWindow(SW_SHOW);
m_bShow = TRUE;
}
}
void CHelperDlg::OnMenuAbout()
{
// TODO: Add your command handler code here
CAboutDlg dlg;
dlg.DoModal();
}
void CHelperDlg::WriteArrayThingToFile()
{
// <THINGTOREMIND, THINGTOREMIND>
CFile file;
char filename[_MAX_PATH];
// char buf[256];
// sprintf(buf, "m_arrayThing.GetSize() = %d", m_arrayThing.GetSize());
// DebugOut(buf);
MakePathName(filename, "joblist", "dat");
if(file.Open(filename, CFile::modeCreate | CFile::modeWrite)==NULL)
{
MessageBox("file not open");
return;
}
int nTotal;
nTotal = m_arrayThing.GetSize();
for(int i = 0; i<nTotal; i++)
{
m_arrayThing[i].nTotal = nTotal;
file.Write(&m_arrayThing[i], sizeof(THINGTOREMIND));
}
}
void CHelperDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=this->m_hWnd;
tnid.uID=IDR_MAINFRAME;//保证删除的是我们的图标
Shell_NotifyIcon(NIM_DELETE,&tnid);
CWnd::OnClose();
}
BOOL DebugOut(LPCTSTR lpTxt)
{
#ifdef _DEBUG
HANDLE hInfoFile;
DWORD len;
hInfoFile = CreateFile("e:\\work\\info.txt",
GENERIC_WRITE,//壜幨
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hInfoFile == INVALID_HANDLE_VALUE)
return FALSE;
SetFilePointer(hInfoFile, 0, NULL, FILE_END);
WriteFile(hInfoFile, lpTxt, strlen(lpTxt), &len, NULL);
WriteFile(hInfoFile, "\r\n", 2, &len, NULL);//?峴
CloseHandle(hInfoFile);
#endif
return TRUE;
}
void CHelperDlg::OnMenuAlwaysontop()
{
// TODO: Add your command handler code here
SetWindowPos(
(GetExStyle() & WS_EX_TOPMOST) ? &CWnd::wndNoTopMost : &CWnd::wndTopMost,
0,0,0,0,
SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
}
void CHelperDlg::ReadArrayThingFromFile()
{
CFile file; // file to joblist
char filename[_MAX_PATH];
MakePathName(filename, "joblist", "dat");
if(file.Open(filename, CFile::modeRead)==NULL)
return;
int nBytesRead = file.Read(&m_structThing, sizeof(THINGTOREMIND));
int nTemp = sizeof(THINGTOREMIND);
if(nBytesRead < sizeof(THINGTOREMIND))
{
//file not found
return;
}
else
{
int nTotal = m_structThing.nTotal;
m_arrayThing.RemoveAll();
m_arrayThing.SetSize(nTotal);
for(int i=0; i<nTotal; i++)
{
m_arrayThing.SetAt(i, m_structThing);
file.Read(&m_structThing, sizeof(THINGTOREMIND));
}
}
}
LRESULT CHelperDlg::OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu)
{
// TODO: Add your message handler code here and/or call default
LRESULT lresult;
if(BCMenu::IsMenu(pMenu))
lresult=BCMenu::FindKeyboardShortcut(nChar, nFlags, pMenu);
else
lresult=CWnd::OnMenuChar(nChar, nFlags, pMenu);
return(lresult);
}
void CHelperDlg::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
// TODO: Add your message handler code here and/or call default
/* BOOL setflag=FALSE;
if(lpMeasureItemStruct->CtlType==ODT_MENU){
if(IsMenu((HMENU)lpMeasureItemStruct->itemID)&&BCMenu::IsMenu((HMENU)lpMeasureItemStruct->itemID))
{
// m_menu.MeasureItem(lpMeasureItemStruct);
setflag=TRUE;
}
}
if(!setflag)CWnd::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
*/
CWnd::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}
void CHelperDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
CWnd::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
// TODO: Add your message handler code here
if(!bSysMenu){
if(BCMenu::IsMenu(pPopupMenu)) BCMenu::UpdateMenu(pPopupMenu);
}
}
void CHelperDlg::OnDestroy()
{
CWnd::OnDestroy();
// TODO: Add your message handler code here
// m_menu.DestroyMenu();
}
/************************************************************
*
*
*
*
**************************************************************/
BOOL CHelperDlg::GetSourceHtml(CString theUrl, CString theFile)
{
CInternetSession session;
CInternetFile* file = NULL;
try
{
file = (CInternetFile*) session.OpenURL(theUrl);
}
catch (CInternetException* m_pException)
{
file = NULL;
m_pException->Delete();
return FALSE;
}
CStdioFile dataStore;
if (file)
{
CString somecode;
BOOL bIsOk = dataStore.Open(theFile,
CFile::modeCreate | CFile::modeWrite
| CFile::shareDenyWrite | CFile::typeText);
if (!bIsOk)
return FALSE;
// 读写网页文件,直到为空
while (file->ReadString(somecode) != NULL)
{
dataStore.WriteString(somecode);
dataStore.WriteString("\r\n");
}
file->Close();
delete file;
}
else
{
dataStore.WriteString(_T("connect fail..."));
return FALSE;
}
return TRUE;
}
void CHelperDlg::OnMenuDownload()
{
// TODO: Add your command handler code here
CDownloadDlg dlg;
if(dlg.DoModal()==IDOK)
{
char filename[MAX_PATH];
MakePathName(filename, "temp", "htm");
GetSourceHtml(dlg.m_strAddress, filename);
ShellExecute(this->GetSafeHwnd(), _T("open"), filename, NULL, NULL, SW_MAXIMIZE);
}
}
void CHelperDlg::MakePathName(LPSTR pathname, LPCTSTR filename, LPCTSTR ext)
{
char exe_pathname[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char exe_ext[_MAX_EXT];
GetModuleFileName(NULL, exe_pathname, _MAX_PATH);
_splitpath(exe_pathname, drive, dir, fname, exe_ext);
_makepath(pathname, drive, dir, filename, ext);
}
void CAboutDlg::OnMyhomepage()
{
// TODO: Add your control notification handler code here
// m_clsMyHomepage.SetURL("http://xiaogi.diy.163.com");
// m_clsMyHomepage.GotoURL("http://xiaogi.diy.163.com", SW_SHOWNORMAL);
}
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_clsMyHomepage.SetURL("http://xiaogi.diy.163.com");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -