ä¸ãæå¼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), &rWorkArea, 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->Width())
  {
//è°æ´å³
//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);
  â¦
}
13ãè¿è¡å ¶å®ç¨åº
//è¿è¡EMAILæç½å
char szMailAddress[80];
strcpy(szMailAddress,"mailto:[email protected]");
ShellExecute(NULL, "open", szMailAddress, NULL, NULL, SW_SHOWNORMAL);
//2ãè¿è¡å¯æ§è¡ç¨åº
WinExec("notepad.exe",SW_SHOW); //è¿è¡è®¡äºæ¬
14ã卿å¢å æå é¤èå
(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;
  }
}
15ãæµè¯ALT鮿¯å¦æä¸ï¼
GetKeyState(VK_MENU);
GetAlt();
16ãæ£æ¥æ¯å¦æä¸é¼ æ å·¦é®
if((nFlags&MK_LBUTTON)==MK_LBUTTON)
17ãæ£æ¥é®çè¾å ¥
å¨OnKeyDownä¸çåæ°nCharæ¯ä¸ä¸ªæ°å¼ï¼å½æ¾ç¤ºçæ¶åï¼éè¦è½¬æ¢æå符ï¼ä½¿ç¨å¦ä¸çå½ä»¤ï¼
char lsChar;
lsChar=char(nChar);
if(lsChar=='A');
{
.......
}
18ãè°ç¨å¦ä¸ä¸ªå½æ°::GetKeyState()ï¼ç¨ä¸ä¸ªç¹å®çé®ä»£ç æ¥ç¡®å®æ³é®æ¯å¦è¢«æä¸ã妿::GetKeyState彿°çè¿å弿¯è´çï¼è¡¨ç¤ºè¯¥é®è¢«æä¸ã妿è¿å弿¯éè´çï¼è¡¨ç¤ºè¯¥çæªè¢«æä¸ãä¾å¦ï¼å¦æè¦ç¡®å®shift鮿¯å¦è¢«æä¸ï¼å¯ä»¥ä½¿ç¨ä¸é¢ç代ç ï¼
if(::GetKeyState(VK_SHIFT) <O)
{
  AfxMessageBox("shift is pressed");
}
19.å¦ä½å¨ç¼ç¨çè¿ç¨ä¸éæ¶ç»æåºç¨ç¨åº(常è§)
1)éè¦åçªå£åé WM_CLOSE/WM_QUITæ¶æ¯,
è°ç¨ CWnd::OnCloseæå彿°å¹¶å è®¸å¯¹ç¨æ·æç¤ºæ¯å¦ä¿åä¿®æ¹è¿çæ°æ®.
AfxGetMainWnd()->SendMessage(WM_CLOSE); //å«å¿äºå å¾å°å½åçªå£çæé
2)使ç¨å½æ°ï¼ void PostQuitMessage( int nExitCode // exit code );
3)ä½¿ç¨æ å彿°ï¼void exit( int status ); //å°½éä¸è¦å¨MFCä¸ä½¿ç¨
20.å¾å°å±å¹ç尺寸大å°
HWND hWnd;
CRect Rect;
hWnd = ::GetDesktopWindow();
::GetClientRect(hWnd, &Rect);
//---------------------------------------------------------
å¦ä½æ¥è¯¢å设置系ç»åæ°
  å¨Windows 3.1 SDKä¸ä»ç»è¿SDK彿°SystemParametersInfoï¼è°ç¨è¯¥å½æ°å¯ä»¥æ¥è¯¢å设置系ç»åæ°ï¼è¯¸å¦æé®çéå¤éç设置ãé¼ æ åå»å»¶è¿æ¶é´ã徿 åä½ä»¥åæ¡é¢è¦çä½å¾ççãÂ
//Create a font that is used for icon titles.Â
LOGFONT stFont; :: SystemParametersInfo (SPIF_GETICONTITLELOGFONT,   sizeof (LOGFONT), &stFont, SPIF_SENDWININICHANGE);Â
m_font.CreateFontIndirect (&stFont);Â //Change the wallpaper to leaves.bmp.Â
:: SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, _T("forest.bmp"),SPIF_UPDATEINIFILE);Â
//---------------------------------------------------------
å¦ä½ä½¿ç¨ä¸ä¸ªé¢å®ä¹çWindowså æ
   è°ç¨CWinApp:: LoadStandardCursorå¹¶ä¼ éå æ æ è¯ç¬¦ã
  BOOL CSampleDialog:: OnSetCursor (CWnd* pWnd, UINT nHitTest, UINT message) {   //Display wait cursor if busy.  Â
if (m_bBusy)Â Â Â {Â Â Â Â Â
SetCursor (AfxGetApp () ->LoadStandardCursor (IDC_WAIT));Â Â Â Â Â
return TRUE;Â Â Â }Â Â Â
return CDialog:: OnSetCursor (pWnd. nHitTest,message);Â }