一
mciSendString(
二
mciSendString(
三
OSVERSIONINFO OsVersionInfo; //包含操作系統版本信息的數據結構
OsVersionInfo
GetVersionEx(&OsVersionInfo); //獲取操作系統版本信息
if(OsVersionInfo
{
//Windows
DWORD dwReserved;
ExitWindowsEx(EWX_REBOOT
//關機
// 退出前的一些處理程序
}
四
typedef int (CALLBACK *SHUTDOWNDLG)(int); //顯示關機對話框函數的指針
HINSTANCE hInst = LoadLibrary(
SHUTDOWNDLG ShutDownDialog; //指向shell
if(hInst != NULL)
{
//獲得函數的地址並調用之
ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst
(*ShutDownDialog)(
}
五
LOGFONT lf;
lf
strcpy(lf
CClientDC dc (this);
// Enumerate the font families
::EnumFontFamiliesEx((HDC) dc
(FONTENUMPROC) EnumFontFamProc
//枚舉函數
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf
LPNEWTEXTMETRIC lpntm
{
// Create a pointer to the dialog window
CDay
// add the font name to the list box
pWnd
// Return
return
}
其中m_ctlFontList是一個列表控件變量
六
if( FindWindow(NULL
七
CPoint pt;
GetCursorPos(&pt); //得到位置
八
九
CWnd *pWnd=AfxGetMainWnd();
if(b_m) //隱藏菜單
{
pWnd
pWnd
b_m=false;
}
else
{
CMenu menu;
menu
pWnd
pWnd
b_m=true;
menu
}
十
HICON hIcon=::ExtractIcon(AfxGetInstanceHandle()
if (hIcon &&hIcon!=(HICON)
{
pDC
}
DestroyIcon(hIcon);
十一
BOOL AdjustPos(CRect* lpRect)
{//自動靠邊
int iSX=GetSystemMetrics(SM_CXFULLSCREEN);
int iSY=GetSystemMetrics(SM_CYFULLSCREEN);
RECT rWorkArea;
BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA
CRect rcWA;
if(!bResult)
{//如果調用不成功就利用GetSystemMetrics獲取屏幕面積
rcWA=CRect(
}
else
rcWA=rWorkArea;
int iX=lpRect
int iY=lpRect
if(iX < rcWA
{//調整左
//pWnd
lpRect
AdjustPos(lpRect);
return TRUE;
}
if(iY < rcWA
{//調整上
//pWnd
lpRect
AdjustPos(lpRect);
return TRUE;
}
if(iX + lpRect
{//調整右
//pWnd
lpRect
AdjustPos(lpRect);
return TRUE;
}
if(iY + lpRect
{//調整下
//pWnd
lpRect
return TRUE;
}
return FALSE;
}
//然後在ONMOVEING事件中使用所下過程調用
CRect r=*pRect;
AdjustPos(&r);
*pRect=(RECT)r;
十二
給系統菜單添加一個菜單項需要進行下述三個步驟
首先
其次
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)
{
…
//Make sure system menu item is in the right range
ASSERT(IDM_MYSYSITEM<
//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 (
pSysMenu
pSysMenu
…
}
十三
//
char szMailAddress[
strcpy(szMailAddress
ShellExecute(NULL
//
WinExec(
十四
//添加
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()
(mainmenu
(mainmenu
&Top
DrawMenuBar(); //重畫菜單
//刪除
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()
CString str ;
for(int i=(mainmenu
單的項數
{
(mainmenu
//將指定菜單項的標簽拷貝到指定的緩沖區
if(str==
{
(mainmenu
break;
}
十五
靜態更改
動態更改
HICON hIcon=AfxGetApp()
ASSERT(hIcon);
AfxGetMainWnd()
十六
使用語句 CWnd* m_pCWnd = AfxGetMainWnd( )
SetWindowText( *m_pCWnd
十七
下面代碼拷貝通過元文件拷貝圖像數據到任何應用程序
CMetaFileDC * m_pMetaDC = new CMetaFileDC();
m_pMetaDC
//draw meta file
//do what ever you want to do: bitmaps
//close meta file dc and prepare for clipboard;
HENHMETAFILE hMF = m_pMetaDC
//copy to clipboard
OpenClipboard();
EmptyClipboard();
::SetClipboardData(CF_ENHMETAFILE
CloseClipboard();
//DeleteMetaFile(hMF);
delete m_pMetaDC;
十八
把文本放置到剪接板上
CString source;
//put your text in source
if(OpenClipboard())
{
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT
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={
::GetSystemMetrics(SM_CYSCREEN)};
HBITMAP hBitmap;
hBitmap=CopyScreenToBitmap(&r_bmp);
//hWnd為程序窗口句柄
if (OpenClipboard())
{
EmptyClipboard();
SetClipboardData(CF_BITMAP
CloseClipboard();
}
ShowWindow(SW_SHOW);
}
HBITMAP CShowBmpInDlgDlg::CopyScreenToBitmap(LPRECT lpRect)
{
//lpRect 代表選定區域
{
HDC hScrDC
// 屏幕和內存設備描述表
HBITMAP hBitmap
// 位圖句柄
int nX
// 選定區域坐標
int nWidth
// 位圖寬度和高度
int xScrn
// 屏幕分辨率
// 確保選定區域不為空矩形
if (IsRectEmpty(lpRect))
return NULL;
//為屏幕創建設備描述表
hScrDC = CreateDC(
//為屏幕設備描述表創建兼容的內存設備描述表
hMemDC = CreateCompatibleDC(hScrDC);
// 獲得選定區域坐標
nX = lpRect
nY = lpRect
nX
nY
// 獲得屏幕分辨率
xScrn = GetDeviceCaps(hScrDC
yScrn = GetDeviceCaps(hScrDC
//確保選定區域是可見的
if (nX<
nX =
if (nY<
nY =
if (nX
nX
if (nY
nY
nWidth = nX
nHeight = nY
// 創建一個與屏幕設備描述表兼容的位圖
hBitmap = CreateCompatibleBitmap
(hScrDC
// 把新位圖選到內存設備描述表中
hOldBitmap =(HBITMAP)SelectObject(hMemDC
// 把屏幕設備描述表拷貝到內存設備描述表中
BitBlt(hMemDC
hScrDC
//得到屏幕位圖的句柄
hBitmap = (HBITMAP)SelectObject(hMemDC
//清除
DeleteDC(hScrDC);
DeleteDC(hMemDC);
// 返回位圖句柄
return hBitmap;
}
}
二十
//在Staic控件內顯示位圖
void CShowBmpInDlgDlg::ShowBmpInStaic()
{
CBitmap hbmp;
HBITMAP hbitmap;
//將pStatic指向要顯示的地方
CStatic *pStaic;
pStaic=(CStatic*)GetDlgItem(IDC_IMAGE);
//裝載資源 MM
hbitmap=(HBITMAP)::LoadImage (::AfxGetInstanceHandle()
IMAGE_BITMAP
hbmp
//獲取圖片格式
BITMAP bm;
hbmp
CDC dcMem;
dcMem
CBitmap *poldBitmap=(CBitmap*)dcMem
CRect lRect;
pStaic
//顯示位圖
pStaic
&dcMem
dcMem
}
From:http://tw.wingwit.com/Article/program/net/201311/12627.html