• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Welcome to ErranLi's Blog!

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(12)

            搜索

            •  

            積分與排名

            • 積分 - 174947
            • 排名 - 151

            最新評論

            閱讀排行榜


            一、打開CD-ROM?
            mciSendString("Set?cdAudio?door?open?wait",NULL,0,NULL);?

            二、關(guān)閉CD_ROM?
            mciSendString("Set?cdAudio?door?closed?wait",NULL,0,NULL);?

            三、關(guān)閉計算機?
            OSVERSIONINFO?OsVersionInfo;?//包含操作系統(tǒng)版本信息的數(shù)據(jù)結(jié)構(gòu)?
            OsVersionInfo.dwOSVersionInfoSize?=?sizeof(OSVERSIONINFO);?
            GetVersionEx(&OsVersionInfo);?//獲取操作系統(tǒng)版本信息?
            if(OsVersionInfo.dwPlatformId?==?VER_PLATFORM_WIN32_WINDOWS)?
            {?
            //Windows98,調(diào)用ExitWindowsEx()函數(shù)重新啟動計算機?

            DWORD?dwReserved;?
            ExitWindowsEx(EWX_REBOOT,dwReserved);?//可以改變第一個參數(shù),實現(xiàn)注銷用戶、?
            //關(guān)機、關(guān)閉電源等操作?
            //?退出前的一些處理程序?
            }?

            四、重啟計算機?
            typedef?int?(CALLBACK?*SHUTDOWNDLG)(int);?//顯示關(guān)機對話框函數(shù)的指針?
            HINSTANCE?hInst?=?LoadLibrary("shell32.dll");?//裝入shell32.dll?
            SHUTDOWNDLG?ShutDownDialog;?//指向shell32.dll庫中顯示關(guān)機對話框函數(shù)的指針?
            if(hInst?!=?NULL)?
            {?
            //獲得函數(shù)的地址并調(diào)用之?
            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);?
            //枚舉函數(shù)?
            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是一個列表控件變量?

            六、一次只運行一個程序?qū)嵗绻堰\行則退出?
            if(?FindWindow(NULL,"程序標(biāo)題"))?exit(0);?

            七、得到當(dāng)前鼠標(biāo)所在位置?
            CPoint?pt;?
            GetCursorPos(&pt);?//得到位置?

            八、上下文菜單事件觸發(fā)事件: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();?
            }?

            十、獲取可執(zhí)行文件的圖標(biāo)?
            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)?
            {//如果調(diào)用不成功就利用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)?
            {//調(diào)整左?
            //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)?
            {//調(diào)整上?
            //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())?
            {//調(diào)整右?
            //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())?
            {//調(diào)整下?
            //pWnd->SetWindowPos(NULL?,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);?
            lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);?
            return?TRUE;?
            }?
            return?FALSE;?
            }?
            //然后在ONMOVEING事件中使用所下過程調(diào)用?

            CRect?r=*pRect;?
            AdjustPos(&r);?
            *pRect=(RECT)r;?

            十二、給系統(tǒng)菜單添加一個菜單項?
            給系統(tǒng)菜單添加一個菜單項需要進行下述三個步驟:?
            首先,使用Resource?Symbols對話(在View菜單中選擇Resource?Symbols...可以顯?
            示該對話)定義菜單項ID,該ID應(yīng)大于0x0F而小于0xF000;?
            其次,調(diào)用CWnd::GetSystemMenu獲取系統(tǒng)菜單的指針并調(diào)用CWnd::?Appendmenu將菜單?
            項添加到菜單中。下例給系統(tǒng)菜單添加兩個新的?
            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或網(wǎng)址?
            char?szMailAddress[80];?
            strcpy(szMailAddress,"mailto:netvc@21cn.com");?
            ShellExecute(NULL,?"open",?szMailAddress,?NULL,?NULL,?SW_SHOWNORMAL);?

            //2、運行可執(zhí)行程序?
            WinExec("notepad.exe",SW_SHOW);?//運行計事本?

            十四、動態(tài)增加或刪除菜單?
            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--)?//取得菜?
            單的項數(shù)。?
            {?
            (mainmenu->GetSubMenu?(0))->GetMenuString(i,str,MF_BYPOSITION);?
            //將指定菜單項的標(biāo)簽拷貝到指定的緩沖區(qū)。MF_BYPOSITION的解釋見上。?
            if(str=="Always?on?&Top")?//如果是剛才我們增加的菜單項,則刪除。?
            {?
            (mainmenu->GetSubMenu?(0))->DeleteMenu(i,MF_BYPOSITION);?
            break;?
            }?

            十五、改變應(yīng)用程序的圖標(biāo)?
            靜態(tài)更改:?修改圖標(biāo)資源IDR_MAINFRAME。它有兩個圖標(biāo),一個是16*16的,另一個是3?

            2*32的,注意要一起修改。?
            動態(tài)更改:?向主窗口發(fā)送WM_SETICON消息.代碼如下:?
            HICON?hIcon=AfxGetApp()->LoadIcon(IDI_ICON);?
            ASSERT(hIcon);?
            AfxGetMainWnd()->SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);?

            十六、另一種改變窗口標(biāo)題的方法?
            使用語句?CWnd*?m_pCWnd?=?AfxGetMainWnd(?),然后,再以如下形式調(diào)用SetWindowTe?
            xt()函數(shù):?
            SetWindowText(?*m_pCWnd,(LPCTSTR)m_WindowText);//?m_WindowText可以是一個CSt?
            ring類的變量。?

            十七、剪切板上通過增強元文件拷貝圖像數(shù)據(jù)?
            下面代碼拷貝通過元文件拷貝圖像數(shù)據(jù)到任何應(yīng)用程序,其可以放置在CView派生類的函?

            數(shù)中。?
            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;?

            十八、剪切板上文本數(shù)據(jù)的傳送?
            把文本放置到剪接板上:?
            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?代表選定區(qū)域?
            {?
            HDC?hScrDC,?hMemDC;?
            //?屏幕和內(nèi)存設(shè)備描述表?
            HBITMAP?hBitmap,?hOldBitmap;?
            //?位圖句柄?
            int?nX,?nY,?nX2,?nY2;?
            //?選定區(qū)域坐標(biāo)?
            int?nWidth,?nHeight;?
            //?位圖寬度和高度?
            int?xScrn,?yScrn;?
            //?屏幕分辨率?

            //?確保選定區(qū)域不為空矩形?
            if?(IsRectEmpty(lpRect))?
            return?NULL;?
            //為屏幕創(chuàng)建設(shè)備描述表?
            hScrDC?=?CreateDC("DISPLAY",?NULL,?NULL,?NULL);?
            //為屏幕設(shè)備描述表創(chuàng)建兼容的內(nèi)存設(shè)備描述表?
            hMemDC?=?CreateCompatibleDC(hScrDC);?
            //?獲得選定區(qū)域坐標(biāo)?
            nX?=?lpRect->left;?
            nY?=?lpRect->top;?
            nX2?=?lpRect->right;?
            nY2?=?lpRect->bottom;?
            //?獲得屏幕分辨率?
            xScrn?=?GetDeviceCaps(hScrDC,?HORZRES);?
            yScrn?=?GetDeviceCaps(hScrDC,?VERTRES);?
            //確保選定區(qū)域是可見的?
            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;?
            //?創(chuàng)建一個與屏幕設(shè)備描述表兼容的位圖?
            hBitmap?=?CreateCompatibleBitmap?
            (hScrDC,?nWidth,?nHeight);?
            //?把新位圖選到內(nèi)存設(shè)備描述表中?
            hOldBitmap?=(HBITMAP)SelectObject(hMemDC,?hBitmap);?
            //?把屏幕設(shè)備描述表拷貝到內(nèi)存設(shè)備描述表中?
            BitBlt(hMemDC,?0,?0,?nWidth,?nHeight,?
            hScrDC,?nX,?nY,?SRCCOPY);?
            //得到屏幕位圖的句柄?
            hBitmap?=?(HBITMAP)SelectObject(hMemDC,?hOldBitmap);?

            //清除?
            DeleteDC(hScrDC);?
            DeleteDC(hMemDC);?
            //?返回位圖句柄?
            return?hBitmap;?
            }?
            }?

            二十、如何將位圖縮放顯示在Static控件中?
            //在Staic控件內(nèi)顯示位圖?
            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);?
            }
            posted on 2007-10-14 00:38 erran 閱讀(898) 評論(0)  編輯 收藏 引用 所屬分類: MFC
            国内精品久久久久久久久电影网 | 久久99国产精品久久久| 国产精品九九久久免费视频| 久久天天日天天操综合伊人av| 一本久久a久久精品综合香蕉| 国产亚洲精品美女久久久| 亚洲另类欧美综合久久图片区| 亚洲va久久久噜噜噜久久男同| 久久91精品综合国产首页| 亚洲AV无一区二区三区久久| 久久精品国产99久久香蕉| 色综合久久无码五十路人妻| 日韩十八禁一区二区久久| 久久99国产综合精品女同| 少妇被又大又粗又爽毛片久久黑人| 久久99精品久久久久婷婷| 国产精品久久久香蕉| 精品久久人人妻人人做精品 | 久久久久久人妻无码| 久久综合鬼色88久久精品综合自在自线噜噜| 久久久久人妻精品一区| 精品多毛少妇人妻AV免费久久 | 久久久久久久97| 久久久精品久久久久久| 91久久香蕉国产熟女线看| 精品久久久无码人妻中文字幕豆芽| 国产精品久久久久蜜芽| 久久这里只精品99re66| 天天综合久久一二三区| 久久露脸国产精品| 久久青青草原精品国产不卡| 国产精品九九久久免费视频 | 99久久国产精品免费一区二区| 无码8090精品久久一区| 欧美精品福利视频一区二区三区久久久精品| 久久久久久狠狠丁香| 青青青国产成人久久111网站| 丁香五月网久久综合| 久久99国产精品二区不卡| 热久久国产精品| 精品久久久无码中文字幕天天 |