• <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)

            搜索

            •  

            積分與排名

            • 積分 - 175054
            • 排名 - 151

            最新評(píng)論

            閱讀排行榜


            一、打開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)閉計(jì)算機(jī)?
            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ù)重新啟動(dòng)計(jì)算機(jī)?

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

            四、重啟計(jì)算機(jī)?
            typedef?int?(CALLBACK?*SHUTDOWNDLG)(int);?//顯示關(guān)機(jī)對(duì)話框函數(shù)的指針?
            HINSTANCE?hInst?=?LoadLibrary("shell32.dll");?//裝入shell32.dll?
            SHUTDOWNDLG?ShutDownDialog;?//指向shell32.dll庫中顯示關(guān)機(jī)對(duì)話框函數(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是一個(gè)列表控件變量?

            六、一次只運(yùn)行一個(gè)程序?qū)嵗绻堰\(yùn)行則退出?
            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);?////顯示菜單?也可改變菜單項(xiàng)?
            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);?

            十一、窗口自動(dòng)靠邊程序演示?
            BOOL?AdjustPos(CRect*?lpRect)?
            {//自動(dòng)靠邊?
            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)菜單添加一個(gè)菜單項(xiàng)?
            給系統(tǒng)菜單添加一個(gè)菜單項(xiàng)需要進(jìn)行下述三個(gè)步驟:?
            首先,使用Resource?Symbols對(duì)話(在View菜單中選擇Resource?Symbols...可以顯?
            示該對(duì)話)定義菜單項(xiàng)ID,該ID應(yīng)大于0x0F而小于0xF000;?
            其次,調(diào)用CWnd::GetSystemMenu獲取系統(tǒng)菜單的指針并調(diào)用CWnd::?Appendmenu將菜單?
            項(xiàng)添加到菜單中。下例給系統(tǒng)菜單添加兩個(gè)新的?
            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);?
            …?
            }?

            十三、運(yùn)行其它程序?
            //1、運(yùn)行EMAIL或網(wǎng)址?
            char?szMailAddress[80];?
            strcpy(szMailAddress,"mailto:netvc@21cn.com");?
            ShellExecute(NULL,?"open",?szMailAddress,?NULL,?NULL,?SW_SHOWNORMAL);?

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

            十四、動(dòng)態(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"));?//添加新的菜單項(xiàng)?
            DrawMenuBar();?//重畫菜單?
            2、?刪除菜單?
            //刪除?
            CMenu?*mainmenu;?
            mainmenu=AfxGetMainWnd()->GetMenu();?//得到主菜單?

            CString?str?;?
            for(int?i=(mainmenu->GetSubMenu?(0))->GetMenuItemCount()-1;i>=0;i--)?//取得菜?
            單的項(xiàng)數(shù)。?
            {?
            (mainmenu->GetSubMenu?(0))->GetMenuString(i,str,MF_BYPOSITION);?
            //將指定菜單項(xiàng)的標(biāo)簽拷貝到指定的緩沖區(qū)。MF_BYPOSITION的解釋見上。?
            if(str=="Always?on?&Top")?//如果是剛才我們?cè)黾拥牟藛雾?xiàng),則刪除。?
            {?
            (mainmenu->GetSubMenu?(0))->DeleteMenu(i,MF_BYPOSITION);?
            break;?
            }?

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

            2*32的,注意要一起修改。?
            動(dòng)態(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可以是一個(gè)CSt?
            ring類的變量。?

            十七、剪切板上通過增強(qiáng)元文件拷貝圖像數(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)建一個(gè)與屏幕設(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是我的一個(gè)文件名,用你的替換?
            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) 評(píng)論(0)  編輯 收藏 引用 所屬分類: MFC
            www.久久99| 99国产精品久久久久久久成人热| 久久乐国产综合亚洲精品| 国产成人无码精品久久久久免费| 亚洲精品无码久久久久sm| 久久亚洲精品国产亚洲老地址| 精品久久综合1区2区3区激情| 久久无码av三级| 亚洲国产成人久久综合碰碰动漫3d| 国产综合久久久久| 99国内精品久久久久久久| 亚洲国产精品久久久久久| 成人国内精品久久久久影院VR | 国产精品久久久久久久久软件| 国产成人久久精品二区三区| 久久久久国产一区二区三区| 日日狠狠久久偷偷色综合免费| 性做久久久久久久久久久| 久久精品国产2020| 99久久99这里只有免费的精品| 999久久久免费国产精品播放| 久久无码精品一区二区三区| 思思久久99热只有频精品66| 久久人人爽爽爽人久久久| 久久久久久综合网天天| 97久久天天综合色天天综合色hd| 97久久精品人妻人人搡人人玩| 欧美一区二区精品久久| 武侠古典久久婷婷狼人伊人| 亚洲AV日韩AV天堂久久| 精品久久久久久无码中文字幕 | 91精品国产91久久久久久青草 | 武侠古典久久婷婷狼人伊人| 无码日韩人妻精品久久蜜桃 | 久久国产精品-久久精品| 久久人与动人物a级毛片| 国内精品久久久人妻中文字幕| 久久人人爽人人澡人人高潮AV| 亚洲国产精品久久久天堂| 国产精自产拍久久久久久蜜| 亚洲av日韩精品久久久久久a|