ä¸ãæå¼CD-ROM ãã
mciSendString("Set cdAudio door open wait",NULL,0,NULL); ãã
äºãå ³éCD_ROM ãã
mciSendString("Set cdAudio door closed wait",NULL,0,NULL);
ä¸ãå ³éè®¡ç®æº
OSVERSIONINFO OsVersionInfo;
//å 嫿ä½ç³»ç»çæ¬ä¿¡æ¯çæ°æ®ç»æ
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&OsVersionInfo);
//è·åæä½ç³»ç»çæ¬ä¿¡æ¯
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
//Windows98,è°ç¨ExitWindowsEx()彿°éæ°å¯å¨è®¡ç®æº
DWORD dwReserved;
ExitWindowsEx(EWX_REBOOT,dwReserved);
//å¯ä»¥æ¹å第ä¸ä¸ªåæ°ï¼å®ç°æ³¨éç¨æ·ã
//å ³æºãå ³éçµæºçæä½
// éåºåçä¸äºå¤çç¨åº
}
åãéå¯è®¡ç®æº
typedef int (CALLBACK *SHUTDOWNDLG)(int); //æ¾ç¤ºå ³æºå¯¹è¯æ¡å½æ°çæé
HINSTANCE hInst = LoadLibrary("shell32.dll"); //è£ å ¥shell32.dll
SHUTDOWNDLG ShutDownDialog; //æåshell32.dllåºä¸æ¾ç¤ºå ³æºå¯¹è¯æ¡å½æ°çæé
if(hInst != NULL)
{
//è·å¾å½æ°çå°åå¹¶è°ç¨ä¹
ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);
(*ShutDownDialog)(0);
}
äºãæä¸¾ææåä½
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
return 1;
} å ¶ä¸m_ctlFontListæ¯ä¸ä¸ªå表æ§ä»¶åé
å ã䏿¬¡åªè¿è¡ä¸ä¸ªç¨åºå®ä¾ï¼å¦æå·²è¿è¡åéåº ãã
if( FindWindow(NULL,"ç¨åºæ é¢"))
exit(0); ãã
ä¸ãå¾å°å½åé¼ æ æå¨ä½ç½® ãã
CPoint pt; ãã
GetCursorPos(&pt); //å¾å°ä½ç½® ãã
å «ãä¸ä¸æèåäºä»¶è§¦åäºä»¶ï¼OnContextMenuäºä»¶ ãã
ä¹ãæ¾ç¤ºåéèç¨åºèå
CWnd *pWnd=AfxGetMainWnd();
if(b_m) //éèèå
{
pWnd->SetMenu(NULL);
 pWnd->DrawMenuBar();
b_m=false;
}
 else
{
CMenu menu;
 menu.LoadMenu(IDR_MAINFRAME);
æ¾ç¤ºèå ä¹å¯æ¹åèå项Â
pWnd->SetMenu(&menu);
pWnd->DrawMenuBar();
b_m=true;
menu.Detach();
}
åãè·å坿§è¡æä»¶ç徿
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;
 if(iX < rcWA.left + DETASTEP && iX!=rcWA.left)
{
//è°æ´å·¦ //
pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);
lpRect->OffsetRect(rcWA.left-iX,0);
AdjustPos(lpRect);
return TRUE;
}
if(iY < rcWA.top + DETASTEP && iY!=rcWA.top)
{
//è°æ´ä¸ //
pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
 lpRect->OffsetRect(0,rcWA.top-iY);
AdjustPos(lpRect);
return TRUE;
}
 if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->W idth())
{
//è°æ´å³ //
pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);
lpRect->OffsetRect(rcWA.right-lpRect->right,0);
AdjustPos(lpRect);
return TRUE;
}
if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect ->Height())
{
//è°æ´ä¸ //
pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);
return TRUE;
}
return FALSE;
}
//ç¶åå¨ONMOVEINGäºä»¶ä¸ä½¿ç¨æä¸è¿ç¨è°ç¨
CRect r=*pRect;
 AdjustPos(&r);
*pRect=(RECT)r;
 åäºãç»ç³»ç»èåæ·»å ä¸ä¸ªèå项 ãã
ç»ç³»ç»èåæ·»å ä¸ä¸ªèå项éè¦è¿è¡ä¸è¿°ä¸ä¸ªæ¥éª¤ï¼ ãã
é¦å ï¼ä½¿ç¨Resource Symbols对è¯ï¼å¨Viewèåä¸éæ©Resource Symbolsï¼ï¼ï¼å¯ä»¥æ¾ç¤ºè¯¥å¯¹è¯ï¼å®ä¹èå项IDï¼è¯¥IDåºå¤§äº0x0Fèå°äº0xF000ï¼ ãã
å ¶æ¬¡ï¼è°ç¨CWnd::GetSystemMenuè·åç³»ç»èåçæéå¹¶è°ç¨CWnd:: Appendmenuå°èå项添å å°èåä¸ãä¸ä¾ç»ç³»ç»èåæ·»å 两个æ°ç
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);
â¦
}
åä¸ãè¿è¡å ¶å®ç¨åº ãã
1ãè¿è¡EMAILæç½å
char szMailAddress[80];
strcpy(szMailAddress,mailto:[email protected]);
ShellExecute(NULL, "open", szMailAddress, NULL, NULL, SW_SHOWNORMAL);
2ãè¿è¡å¯æ§è¡ç¨åº
WinExec("notepad.exe",SW_SHOW); //è¿è¡è®¡äºæ¬
ååã卿å¢å æå é¤èå ãã
1ã å¢å èå
//æ·»å
CMenu *mainmenu; mainmenu=AfxGetMainWnd()->GetMenu(); //å¾å°ä¸»èå
(mainmenu->GetSubMenu (0))->AppendMenu (MF_SEPARATOR); //æ·»å åé符
(mainmenu->GetSubMenu (0))->AppendMenu(MF_STRING,ID_APP_ABOUT,_T("Always on &Top")); //æ·»å æ°çèå项
DrawMenuBar(); //éç»èå
2ã å é¤èå
//å é¤
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //å¾å°ä¸»èå
CString str ;
 for(int i=(mainmenu->GetSubMenu (0))->GetMenuItemCount()-1;i>=0;i--) //åå¾è åç项æ°ã
{
(mainmenu->GetSubMenu (0))->GetMenuString(i,str,MF_BYPOSITION); //å°æå®èåé¡¹çæ ç¾æ·è´å°æå®çç¼å²åºãMF_BYPOSITIONçè§£éè§ä¸ã
if(str=="Always on &Top") //妿æ¯åææä»¬å¢å çèå项ï¼åå é¤ã
{
(mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION);
break;
}
}
åäºãæ¹ååºç¨ç¨åºç徿 ãã
éææ´æ¹ï¼ ä¿®æ¹å¾æ èµæºIDR_MAINFRAMEãå®æä¸¤ä¸ªå¾æ ï¼ä¸ä¸ªæ¯16*16çï¼å¦ä¸ä¸ªæ¯32*32çï¼æ³¨æè¦ä¸èµ·ä¿®æ¹ã ããå¨ææ´æ¹ï¼ å主çªå£åéWM_SETICONæ¶æ¯.代ç å¦ä¸ï¼
HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICON); ASSERT(hIcon);
AfxGetMainWnd()->SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);
åå ãå¦ä¸ç§æ¹åçªå£æ é¢çæ¹æ³
使ç¨è¯å¥ CWnd* m_pCWnd = AfxGetMainWnd( )ï¼ç¶åï¼å以å¦ä¸å½¢å¼è°ç¨SetWindowText()彿°ï¼ SetWindowText( *m_pCWnd,(LPCTSTR)m_WindowText)ï¼// m_WindowTextå¯ä»¥æ¯ä¸ä¸ªCStringç±»çåéã ããåä¸ãåªåæ¿ä¸éè¿å¢å¼ºå æä»¶æ·è´å¾åæ°æ® ãã
ä¸é¢ä»£ç æ·è´éè¿å æä»¶æ·è´å¾åæ°æ®å°ä»»ä½åºç¨ç¨åºï¼å ¶å¯ä»¥æ¾ç½®å¨CViewæ´¾çç±»ç彿°ä¸ã
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); //hWnd为ç¨åºçªå£å¥æ
if (OpenClipboard())
{
EmptyClipboard();
SetClipboardData(CF_BITMAP, hBitmap);
CloseClipboard();
}
ShowWindow(SW_SHOW);
}
HBITMAP CShowBmpInDlgDlg::CopyScreenToBitmap(LPRECT lpRect)
{
//lpRect 代表éå®åºå
{
HDC hScrDC, hMemDC; // å±å¹åå åè®¾å¤æè¿°è¡¨
HBITMAP hBitmap, hOldBitmap; // ä½å¾å¥æ
int nX, nY, nX2, nY2; // éå®åºååæ
int nWidth, nHeight; // ä½å¾å®½åº¦åé«åº¦
int xScrn, yScrn; // å±å¹å辨ç
// ç¡®ä¿éå®åºåä¸ä¸ºç©ºç©å½¢
if (IsRectEmpty(lpRect))
return NULL;
//为å±å¹åå»ºè®¾å¤æè¿°è¡¨
hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
//为å±å¹è®¾å¤æè¿°è¡¨åå»ºå ¼å®¹çå åè®¾å¤æè¿°è¡¨
hMemDC = CreateCompatibleDC(hScrDC);
// è·å¾éå®åºååæ
nX = lpRect->left;
nY = lpRect->top;
nX2 = lpRect->right;
nY2 = lpRect->bottom;
// è·å¾å±å¹å辨ç
xScrn = GetDeviceCaps(hScrDC, HORZRES);
yScrn = GetDeviceCaps(hScrDC, VERTRES);
//ç¡®ä¿éå®åºåæ¯å¯è§ç
if (nX<0)
nX = 0;
if (nY<0)
nY = 0;
if (nX2>xScrn)
nX2 = xScrn;
if (nY2>yScrn)
nY2 = yScrn;
nWidth = nX2 - nX;
nHeight = nY2 - nY;
// å建ä¸ä¸ªä¸å±å¹è®¾å¤æè¿°è¡¨å ¼å®¹çä½å¾
hBitmap = CreateCompatibleBitmap (hScrDC, nWidth, nHeight);
// ææ°ä½å¾éå°å åè®¾å¤æè¿°è¡¨ä¸
hOldBitmap =(HBITMAP)SelectObject(hMemDC, hBitmap);
// æå±å¹è®¾å¤æè¿°è¡¨æ·è´å°å åè®¾å¤æè¿°è¡¨ä¸
BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, nX, nY, SRCCOPY);
//å¾å°å±å¹ä½å¾ç奿
hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);
//æ¸ é¤
DeleteDC(hScrDC);
DeleteDC(hMemDC);
// è¿åä½å¾å¥æ
return hBitmap;
}
}
äºåãå¦ä½å°ä½å¾ç¼©æ¾æ¾ç¤ºå¨Staticæ§ä»¶ä¸ ãã
//å¨Staicæ§ä»¶å æ¾ç¤ºä½å¾
void CShowBmpInDlgDlg::ShowBmpInStaic()
{
CBitmap hbmp;
 HBITMAP hbitmap;
//å°pStaticæåè¦æ¾ç¤ºçå°æ¹
CStatic *pStaic; pStaic=(CStatic*)GetDlgItem(IDC_IMAGE);
//è£ è½½èµæº MM.bmpæ¯æçä¸ä¸ªæä»¶åï¼ç¨ä½ çæ¿æ¢
hbitmap=(HBITMAP)::LoadImage (::AfxGetInstanceHandle(),"MM.bmp", IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
hbmp.Attach(hbitmap);
//è·åå¾çæ ¼å¼
BITMAP bm;
hbmp.GetBitmap(&bm);
CDC dcMem;
dcMem.CreateCompatibleDC(GetDC());
CBitmap *poldBitmap=(CBitmap*)dcMem.SelectObject(hbmp);
CRect lRect;
pStaic->GetClientRect(&lRect);
//æ¾ç¤ºä½å¾
pStaic->GetDC()->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Heigh t(), &dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
dcMem.SelectObject(&poldBitmap);
}
Â