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

📄 helperdlg.cpp

📁 希望这个对大家有所帮助
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	// 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 + -