LOGFONT lf; lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure strcpy(lf.lfFaceName,""); CClientDC dc(this); // Enumerate the font families ::EnumFontFamiliesEx((HDC) dc,&lf;, (FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0); //枚举函数 int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf, LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam) { // Create a pointer to the dialog window CDay7Dlg* pWnd = (CDay7Dlg*) lparam; // add the font name to the list box pWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName); // Return 1 to continue font enumeration return1; }
HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0); if (hIcon &&hIcon;!=(HICON)-1) { pDC->DrawIcon(10,10,hIcon);
} DestroyIcon(hIcon);
//十一、窗口自动靠边程序演示
BOOL AdjustPos(CRect* lpRect) {//自动靠边 int iSX=GetSystemMetrics(SM_CXFULLSCREEN); int iSY=GetSystemMetrics(SM_CYFULLSCREEN); RECT rWorkArea; BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkAre; a, 0); CRect rcWA; if(!bResult) {//如果调用不成功就利用GetSystemMetrics获取屏幕面积 rcWA=CRect(0,0,iSX,iSY); } else rcWA=rWorkArea; int iX=lpRect->left; int iY=lpRect->top;
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct) { //… //Make sure system menu item is in the right range. ASSERT(IDM_MYSYSITEM<0xF000); //Get pointer to system menu. CMenu* pSysMenu=GetSystemMenu(FALSE); ASSERT_VALID(pSysMenu); //Add a separator and our menu item to system menu. CString StrMenuItem(_T ("New menu item")); pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem); //… }
CMetaFileDC * m_pMetaDC = new CMetaFileDC(); m_pMetaDC->CreateEnhanced(GetDC(),NULL,NULL,"whatever"); //draw meta file //do what ever you want to do: bitmaps, lines, text... //close meta file dc and prepare for clipboard; HENHMETAFILE hMF = m_pMetaDC->CloseEnhanced(); //copy to clipboard OpenClipboard(); EmptyClipboard(); ::SetClipboardData(CF_ENHMETAFILE,hMF); CloseClipboard();
//DeleteMetaFile(hMF); delete m_pMetaDC;
//十八、剪切板上文本数据的传送把文本放置到剪接板上:
CString source; //put your text in source if(OpenClipboard()) { HGLOBAL clipbuffer; char * buffer; EmptyClipboard(); clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1); buffer = (char*)GlobalLock(clipbuffer); strcpy(buffer, LPCSTR(source)); GlobalUnlock(clipbuffer); SetClipboardData(CF_TEXT,clipbuffer); CloseClipboard(); }
//从剪接板上获取文本:
char * buffer; if(OpenClipboard()) { buffer = (char*)GetClipboardData(CF_TEXT); //do something with buffer here //before it goes out of scope } CloseClipboard();
//十九、将捕捉屏幕图像到剪切版中
void CShowBmpInDlgDlg::OnCutScreen() { ShowWindow(SW_HIDE); RECT r_bmp={0,0,::GetSystemMetrics(SM_CXSCREEN), ::GetSystemMetrics(SM_CYSCREEN)}; HBITMAP hBitmap; hBitmap=CopyScreenToBitmap(&r;_bmp);