新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 计算机科学论坛计算机技术与应用『 C/C++编程思想 』 → [求助]C++程序注释(哪位大虾能帮忙把程序详细注释一下?) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5589 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]C++程序注释(哪位大虾能帮忙把程序详细注释一下?) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     catchwind 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:66
      门派:XML.ORG.CN
      注册:2006/12/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给catchwind发送一个短消息 把catchwind加入好友 查看catchwind的个人资料 搜索catchwind在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看catchwind的博客楼主
    发贴心情 [求助]C++程序注释(哪位大虾能帮忙把程序详细注释一下?)

    CPlayListDlg::CPlayListDlg(CWnd* pParent /*=NULL*/)
     : CDialog(CPlayListDlg::IDD, pParent)
    {
     //{{AFX_DATA_INIT(CPlayListDlg)
     m_dirname = _T("");
     //}}AFX_DATA_INIT
    }


    void CPlayListDlg::DoDataExchange(CDataExchange* pDX)
    {
     CDialog::DoDataExchange(pDX);
     //{{AFX_DATA_MAP(CPlayListDlg)
     DDX_Control(pDX, IDC_PLAYLIST, m_playlist);
     DDX_Control(pDX, IDC_FILELIST, m_fileslist);
     DDX_Text(pDX, IDC_DIR, m_dirname);
     //}}AFX_DATA_MAP
    }


    BEGIN_MESSAGE_MAP(CPlayListDlg, CDialog)
     //{{AFX_MSG_MAP(CPlayListDlg)
     ON_BN_CLICKED(IDC_BROW, OnBrow)
     ON_BN_CLICKED(IDC_CLEAN_ALL, OnCleanAll)
     ON_BN_CLICKED(IDC_SELECT_ALL, OnSelectAll)
     ON_BN_CLICKED(IDC_TO, OnTo)
     ON_BN_CLICKED(IDC_DEL, OnDel)
     //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CPlayListDlg message handlers
    static int WINAPI BrowseProc(HWND hwnd,UINT msg,LPARAM lParam,LPARAM lpData)
    {
     switch( msg)
     {
      case BFFM_INITIALIZED:
       SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)"TORONTO");
       SendMessage(hwnd,BFFM_SETSELECTION,1,(LPARAM)"C:\\");
       break ;
      case BFFM_SELCHANGED:
       SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)"TORONTO");
       break ;
     }
     return FALSE ;
    }

    void CPlayListDlg::OnBrow()
    {
     // TODO: Add your control notification handler code here
     ITEMIDLIST *m_dirs,*m_suc;
     SHGetSpecialFolderLocation(GetSafeHwnd(),CSIDL_DESKTOP,&m_dirs);
     BROWSEINFO m_info;
     m_info.hwndOwner=GetSafeHwnd();
     m_info.pidlRoot=m_dirs;
     m_info.pszDisplayName="c:\\";
     m_info.lpszTitle="请您选择目录:";
     m_info.ulFlags=0;
     m_info.lpfn=BrowseProc;
     m_info.lParam=0;
     m_info.iImage=0;
     
     m_suc=SHBrowseForFolder(&m_info);
     if(m_suc)
     {
      char m_buffer[MAX_PATH];
      if(SHGetPathFromIDList(m_suc,m_buffer)){
       m_dirname=_T(m_buffer);
       UpdateData(FALSE);
       if(m_dirname.GetAt(m_dirname.GetLength()-1)!='\\')
        m_dirname += "\\" ;
       DirToFileList(m_dirname);
       m_fileslist.EnableWindow(TRUE);
      }
     }
    }

    void CPlayListDlg::DirToFileList(CString m_dir)
    {
     m_fileslist.ResetContent();
     if(!IsDirExist(m_dir))
      return;

     struct _finddata_t FileBlock;
     CString m_thisdir=m_dir;
     int  m_len=m_dir.GetLength();
     char * m_buffer=m_dir.GetBuffer(m_len);
     if(m_buffer[m_len-1]=='\\')
      m_thisdir+=_T("*.mp?");
     else
      m_thisdir+=_T("\\*.mp?");
     long handle=_findfirst(m_thisdir,&FileBlock);
     int  m_ret=0;
     while(handle>0 && m_ret==0)
     {
      if(!(FileBlock.attrib&_A_SUBDIR))
       m_fileslist.AddString(FileBlock.name);
      m_ret=_findnext(handle,&FileBlock);
     }
     if(m_fileslist.GetCount()>0)
      m_fileslist.SetCurSel(0);

     UpdateData(FALSE);
    }

    BOOL CPlayListDlg::IsDirExist(CString m_dir)
    {
     if(m_dir==_T(""))
      return FALSE;

     struct _finddata_t FileBlock;
     CString m_thisdir=m_dir;
     int  m_len=m_dir.GetLength();
     char * m_buffer=m_dir.GetBuffer(m_len);
     if(m_buffer[m_len-1]=='\\')
      m_thisdir+=_T("*.*");
     else
      m_thisdir+=_T("\\*.*");
     long handle=_findfirst(m_thisdir,&FileBlock);
     if(handle>0)
      return TRUE;
     return FALSE;
    }

    void CPlayListDlg::OnCleanAll()
    {
     // TODO: Add your control notification handler code here
     m_playlist.ResetContent();
    }

    void CPlayListDlg::OnSelectAll()
    {
     // TODO: Add your control notification handler code here
     int count = m_fileslist.GetCount ();
     for(int i=0; i< count ; i++)
      m_fileslist.SetSel(i,TRUE);
    }

    void CPlayListDlg::OnTo()
    {
     // TODO: Add your control notification handler code here
     int count = m_fileslist.GetCount ();
     CString str ;
     for(int i=0; i< count ; i++)
     {
      if(m_fileslist.GetSel(i)==TRUE)
      {
       m_fileslist.GetText(i,str);
       str = m_dirname+str ;
       m_playlist.AddString(str);
      }
     }
     m_playlist.EnableWindow();
    }

    void CPlayListDlg::OnDel()
    {
     // TODO: Add your control notification handler code here
     int count = m_playlist.GetCount();
     for(int i=count; i>=0 ; i--)
      if(m_playlist.GetSel(i))
       m_playlist.DeleteString(i);
    }

    BOOL CPlayListDlg::OnInitDialog()
    {
     CDialog::OnInitDialog();
     
     // TODO: Add extra initialization here
     LoadPlayList("PlayList.ini");
     return TRUE;  // return TRUE unless you set the focus to a control
                   // EXCEPTION: OCX Property Pages should return FALSE
    }


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/26 20:49:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客2
    发贴心情 
    CPlayListDlg::CPlayListDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CPlayListDlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CPlayListDlg)
    m_dirname = _T("");
    //}}AFX_DATA_INIT
    }


    void CPlayListDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CPlayListDlg)
    DDX_Control(pDX, IDC_PLAYLIST, m_playlist);
    DDX_Control(pDX, IDC_FILELIST, m_fileslist);
    DDX_Text(pDX, IDC_DIR, m_dirname);
    //}}AFX_DATA_MAP
    }


    BEGIN_MESSAGE_MAP(CPlayListDlg, CDialog)
    //{{AFX_MSG_MAP(CPlayListDlg)
    ON_BN_CLICKED(IDC_BROW, OnBrow)//5个按钮
    ON_BN_CLICKED(IDC_CLEAN_ALL, OnCleanAll)
    ON_BN_CLICKED(IDC_SELECT_ALL, OnSelectAll)
    ON_BN_CLICKED(IDC_TO, OnTo)
    ON_BN_CLICKED(IDC_DEL, OnDel)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CPlayListDlg message handlers
    static int WINAPI BrowseProc(HWND hwnd,UINT msg,LPARAM lParam,LPARAM lpData)
    {
    switch( msg)
    {
      case BFFM_INITIALIZED:
       SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)"TORONTO");//打开列表目录操作
       SendMessage(hwnd,BFFM_SETSELECTION,1,(LPARAM)"C:\\");
       break ;
      case BFFM_SELCHANGED:
       SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)"TORONTO");
       break ;
    }
    return FALSE ;
    }

    void CPlayListDlg::OnBrow()
    {
    // TODO: Add your control notification handler code here
    ITEMIDLIST *m_dirs,*m_suc;
    SHGetSpecialFolderLocation(GetSafeHwnd(),CSIDL_DESKTOP,&m_dirs);//列表菜单
    BROWSEINFO m_info;
    m_info.hwndOwner=GetSafeHwnd();
    m_info.pidlRoot=m_dirs;
    m_info.pszDisplayName="c:\\";//初始化打开目录
    m_info.lpszTitle="请您选择目录:";
    m_info.ulFlags=0;
    m_info.lpfn=BrowseProc;
    m_info.lParam=0;
    m_info.iImage=0;

    m_suc=SHBrowseForFolder(&m_info);//打开目录对话框
    if(m_suc)
    {
      char m_buffer[MAX_PATH];
      if(SHGetPathFromIDList(m_suc,m_buffer)){
       m_dirname=_T(m_buffer);
       UpdateData(FALSE);
       if(m_dirname.GetAt(m_dirname.GetLength()-1)!='\\')
        m_dirname += "\\" ;
       DirToFileList(m_dirname);
       m_fileslist.EnableWindow(TRUE);
      }
    }
    }

    void CPlayListDlg::DirToFileList(CString m_dir)
    {
    m_fileslist.ResetContent();
    if(!IsDirExist(m_dir))
      return;

    struct _finddata_t FileBlock;
    CString m_thisdir=m_dir;
    int  m_len=m_dir.GetLength();
    char * m_buffer=m_dir.GetBuffer(m_len);
    if(m_buffer[m_len-1]=='\\')
      m_thisdir+=_T("*.mp?");
    else
      m_thisdir+=_T("\\*.mp?");
    long handle=_findfirst(m_thisdir,&FileBlock);//更新所选择目录到对话框显示
    int  m_ret=0;
    while(handle>0 && m_ret==0)
    {
      if(!(FileBlock.attrib&_A_SUBDIR))
       m_fileslist.AddString(FileBlock.name);
      m_ret=_findnext(handle,&FileBlock);
    }
    if(m_fileslist.GetCount()>0)
      m_fileslist.SetCurSel(0);

    UpdateData(FALSE);
    }

    BOOL CPlayListDlg::IsDirExist(CString m_dir)
    {
    if(m_dir==_T(""))
      return FALSE;

    struct _finddata_t FileBlock;
    CString m_thisdir=m_dir;
    int  m_len=m_dir.GetLength();
    char * m_buffer=m_dir.GetBuffer(m_len);
    if(m_buffer[m_len-1]=='\\')//判断目录
      m_thisdir+=_T("*.*");
    else
      m_thisdir+=_T("\\*.*");
    long handle=_findfirst(m_thisdir,&FileBlock);
    if(handle>0)
      return TRUE;
    return FALSE;
    }

    void CPlayListDlg::OnCleanAll()
    {
    // TODO: Add your control notification handler code here
    m_playlist.ResetContent();//重置
    }

    void CPlayListDlg::OnSelectAll()
    {
    // TODO: Add your control notification handler code here
    int count = m_fileslist.GetCount ();//全选
    for(int i=0; i< count ; i++)
      m_fileslist.SetSel(i,TRUE);
    }

    void CPlayListDlg::OnTo()
    {
    // TODO: Add your control notification handler code here
    int count = m_fileslist.GetCount ();
    CString str ;
    for(int i=0; i< count ; i++)
    {
      if(m_fileslist.GetSel(i)==TRUE)//转向
      {
       m_fileslist.GetText(i,str);
       str = m_dirname+str ;
       m_playlist.AddString(str);
      }
    }
    m_playlist.EnableWindow();
    }

    void CPlayListDlg::OnDel()
    {
    // TODO: Add your control notification handler code here
    int count = m_playlist.GetCount();//删除
    for(int i=count; i>=0 ; i--)
      if(m_playlist.GetSel(i))
       m_playlist.DeleteString(i);
    }

    BOOL CPlayListDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();

    // TODO: Add extra initialization here
    LoadPlayList("PlayList.ini");//从ini文件初始化该程序
    return TRUE;  // return TRUE unless you set the focus to a control
                   // EXCEPTION: OCX Property Pages should return FALSE
    }

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/27 8:24:00
     
     catchwind 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:66
      门派:XML.ORG.CN
      注册:2006/12/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给catchwind发送一个短消息 把catchwind加入好友 查看catchwind的个人资料 搜索catchwind在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看catchwind的博客3
    发贴心情 
    谢谢这为大哥了。不过小弟还有个程序段,能为小弟再详细注释一下不?
    4设计程序模拟系统菜单界面主要内容和功能-----BMP图形及计算
    #include "stdafx.h"
    #include "TigerPlay.h"
    #include "BmpSize.h"

    #ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif

    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
    /***************************************************************/
    //FuncName: CBmpSize
    //Class: CBmpSize
    //Function: construction with the ID of bitmap
    //Author: Bill Yuan
    //Para:  uID  :  bitmap ID
    //Return: bool
    //Date:  Feb/04/1998
    /***************************************************************/
    CBmpSize::CBmpSize(UINT uID /*= 0*/)
    {
     m_iWidth = 0;
     m_iHeight = 0;

     if (uID != 0)
      LoadBitmap(uID);
    }
    CBmpSize::~CBmpSize()
    {
     //Delete the bitmap
     m_cBmp.DeleteObject();
     m_wndRgn.DeleteObject();
     ::DeleteObject(hBitmap);
    }
    BOOL CBmpSize::LoadBitmap(LPCTSTR lpszBmpFile)
    {
     hBitmap=(HBITMAP)LoadImage( NULL, lpszBmpFile, IMAGE_BITMAP, 0,0,
      LR_DEFAULTCOLOR |
      LR_LOADFROMFILE |
      LR_CREATEDIBSECTION);
     if (hBitmap==NULL)
      return FALSE;
     if (m_cBmp.Attach(hBitmap)==FALSE)
      return FALSE;
     if (m_cBmp.GetBitmap(&m_sBmp)==0)
      return FALSE;
     m_iWidth = m_sBmp.bmWidth;
     m_iHeight = m_sBmp.bmHeight;
     return TRUE;
    }
    /***************************************************************/
    //FuncName: LoadBitmap
    //Class: CBmpSize
    //Function: Init the class with the bitmap ID.
    //   Load the bitmap to get the width and height
    //Author: Bill Yuan
    //Para:  uID  :  bitmap ID
    //Return: bool
    //Date:  Feb/04/1998
    /***************************************************************/
    BOOL CBmpSize::LoadBitmap(UINT uID)
    {
     //Load the bitmap from the ID resource
     //Get the size of the loaded bitmap
     if ( m_cBmp.LoadBitmap(uID) &&
      m_cBmp.GetBitmap(&m_sBmp) ) {
      //Set the public value
      m_iWidth = m_sBmp.bmWidth;
      m_iHeight = m_sBmp.bmHeight;
      return TRUE;
     }
     return FALSE;
    }
    /***************************************************************/
    //FuncName: BmpBlt
    //Class: CBmpSize
    //Function: blt the bitmap
    //Author: Bill Yuan
    //Para:  pWnd :  parent
    //   xDest :  the 'x' of target.
    //   yDest :  the 'y' of target.
    //   iDx  :  the delta of 'x' coord, default = the width of bitmap
    //   iDy  :  the delta of 'y' coord, default = the height of bitmap
    //   iFromWhereX: the 'x' coord of the source to copy, default = 0
    //   iFromWhereY: the 'y' coord of the source to copy, default = 0
    //Return: bool
    //Date:  Feb/04/1998
    /***************************************************************/
    BOOL CBmpSize::BmpBlt(BOOL IsPaint, CWnd *pWnd, int xDest, int yDest, int iDx, int iDy, int iFromWhereX, int iFromWhereY)
    {
     CDC dcMem;
     CPaintDC dcPaint(pWnd);
     CClientDC dcClient(pWnd);

     if ( IsPaint ) {
      if( !dcMem.CreateCompatibleDC(&dcPaint) )
       return FALSE;
      dcMem.SelectObject(&m_cBmp);
      return( dcPaint.BitBlt(xDest, yDest,
      (iDx==0) ? m_iWidth : iDx,
      (iDy==0) ? m_iHeight : iDy,
      &dcMem,
      (iFromWhereX==-1) ? 0 : iFromWhereX,
      (iFromWhereY==-1) ? 0 : iFromWhereY,
      SRCCOPY) );
     } else {
      if ( !dcMem.CreateCompatibleDC(&dcClient) )
       return FALSE;
      dcMem.SelectObject(&m_cBmp);
      return( dcClient.BitBlt(xDest, yDest,
      (iDx==0) ? m_iWidth : iDx,
      (iDy==0) ? m_iHeight : iDy,
      &dcMem,
      (iFromWhereX==-1) ? 0 : iFromWhereX,
      (iFromWhereY==-1) ? 0 : iFromWhereY,
      SRCCOPY) );
     }
    }
    /***************************************************************/
    //FuncName: MakeRegion
    //Class: CBmpSize
    //Function: Make region according to the bitmap
    //Author: Bill Yuan
    //Para:  NONE
    //Return: HRGN : region
    //Date:  Aug/07/1998
    /***************************************************************/
    CRgn& CBmpSize::MakeRegion()
    {
     CRgn rgnTemp ;
     COLORREF tc,col ;
     int x, y;
     CDC cMemDC;
     cMemDC.CreateCompatibleDC(NULL);
     cMemDC.SelectObject(m_cBmp);
     m_wndRgn.CreateRectRgn(0, 0, m_iWidth, m_iHeight);
     tc = cMemDC.GetPixel(0,0);
     for(x=0; x<m_iWidth; x++)
     {
      for(y=0; y<m_iHeight ; y++)
      {
       col = cMemDC.GetPixel(x, y);
       if(col == tc)
       {
        rgnTemp.CreateRectRgn(x, y, x+1, y+1);
        m_wndRgn.CombineRgn(&m_wndRgn, &rgnTemp, RGN_XOR);
        rgnTemp.DeleteObject();
       }
      }
     }
     return m_wndRgn ;

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/27 14:34:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客4
    发贴心情 
    #include "stdafx.h"
    #include "TigerPlay.h"
    #include "BmpSize.h"

    #ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif

    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
    /***************************************************************/
    //FuncName: CBmpSize
    //Class: CBmpSize
    //Function: construction with the ID of bitmap
    //Author: Bill Yuan
    //Para:  uID  :  bitmap ID
    //Return: bool
    //Date:  Feb/04/1998
    /***************************************************************/
    CBmpSize::CBmpSize(UINT uID /*= 0*/)
    {
    m_iWidth = 0;
    m_iHeight = 0;

    if (uID != 0)
      LoadBitmap(uID);//load位图 构造
    }
    CBmpSize::~CBmpSize()
    {
    //Delete the bitmap
    m_cBmp.DeleteObject();
    m_wndRgn.DeleteObject();
    ::DeleteObject(hBitmap);//析构
    }
    BOOL CBmpSize::LoadBitmap(LPCTSTR lpszBmpFile)
    {
    hBitmap=(HBITMAP)LoadImage( NULL, lpszBmpFile, IMAGE_BITMAP, 0,0,
      LR_DEFAULTCOLOR |
      LR_LOADFROMFILE |
      LR_CREATEDIBSECTION);
    if (hBitmap==NULL)
      return FALSE;
    if (m_cBmp.Attach(hBitmap)==FALSE)
      return FALSE;
    if (m_cBmp.GetBitmap(&m_sBmp)==0)
      return FALSE;
    m_iWidth = m_sBmp.bmWidth;
    m_iHeight = m_sBmp.bmHeight;//load 位图
    return TRUE;
    }
    /***************************************************************/
    //FuncName: LoadBitmap
    //Class: CBmpSize
    //Function: Init the class with the bitmap ID.
    //   Load the bitmap to get the width and height
    //Author: Bill Yuan
    //Para:  uID  :  bitmap ID
    //Return: bool
    //Date:  Feb/04/1998
    /***************************************************************/
    BOOL CBmpSize::LoadBitmap(UINT uID)//多态
    {
    //Load the bitmap from the ID resource
    //Get the size of the loaded bitmap
    if ( m_cBmp.LoadBitmap(uID) &&
      m_cBmp.GetBitmap(&m_sBmp) ) {
      //Set the public value
      m_iWidth = m_sBmp.bmWidth;
      m_iHeight = m_sBmp.bmHeight;
      return TRUE;
    }
    return FALSE;
    }
    /***************************************************************/
    //FuncName: BmpBlt
    //Class: CBmpSize
    //Function: blt the bitmap
    //Author: Bill Yuan
    //Para:  pWnd :  parent
    //   xDest :  the 'x' of target.
    //   yDest :  the 'y' of target.
    //   iDx  :  the delta of 'x' coord, default = the width of bitmap
    //   iDy  :  the delta of 'y' coord, default = the height of bitmap
    //   iFromWhereX: the 'x' coord of the source to copy, default = 0
    //   iFromWhereY: the 'y' coord of the source to copy, default = 0
    //Return: bool
    //Date:  Feb/04/1998
    /***************************************************************/
    BOOL CBmpSize::BmpBlt(BOOL IsPaint, CWnd *pWnd, int xDest, int yDest, int iDx, int iDy, int iFromWhereX, int iFromWhereY)
    {
    CDC dcMem;
    CPaintDC dcPaint(pWnd);
    CClientDC dcClient(pWnd);

    if ( IsPaint ) {
      if( !dcMem.CreateCompatibleDC(&dcPaint) )//变换位图
       return FALSE;
      dcMem.SelectObject(&m_cBmp);
      return( dcPaint.BitBlt(xDest, yDest,
      (iDx==0) ? m_iWidth : iDx,
      (iDy==0) ? m_iHeight : iDy,
      &dcMem,
      (iFromWhereX==-1) ? 0 : iFromWhereX,
      (iFromWhereY==-1) ? 0 : iFromWhereY,
      SRCCOPY) );
    } else {
      if ( !dcMem.CreateCompatibleDC(&dcClient) )
       return FALSE;
      dcMem.SelectObject(&m_cBmp);
      return( dcClient.BitBlt(xDest, yDest,
      (iDx==0) ? m_iWidth : iDx,
      (iDy==0) ? m_iHeight : iDy,
      &dcMem,
      (iFromWhereX==-1) ? 0 : iFromWhereX,
      (iFromWhereY==-1) ? 0 : iFromWhereY,
      SRCCOPY) );
    }
    }
    /***************************************************************/
    //FuncName: MakeRegion
    //Class: CBmpSize
    //Function: Make region according to the bitmap
    //Author: Bill Yuan
    //Para:  NONE
    //Return: HRGN : region
    //Date:  Aug/07/1998
    /***************************************************************/
    CRgn& CBmpSize::MakeRegion()
    {
    CRgn rgnTemp ;
    COLORREF tc,col ;
    int x, y;
    CDC cMemDC;
    cMemDC.CreateCompatibleDC(NULL);
    cMemDC.SelectObject(m_cBmp);
    m_wndRgn.CreateRectRgn(0, 0, m_iWidth, m_iHeight);//变换位图尺寸
    tc = cMemDC.GetPixel(0,0);
    for(x=0; x<m_iWidth; x++)
    {
      for(y=0; y<m_iHeight ; y++)
      {
       col = cMemDC.GetPixel(x, y);
       if(col == tc)
       {
        rgnTemp.CreateRectRgn(x, y, x+1, y+1);
        m_wndRgn.CombineRgn(&m_wndRgn, &rgnTemp, RGN_XOR);
        rgnTemp.DeleteObject();
       }
      }
    }
    return m_wndRgn ;

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/27 16:15:00
     
     catchwind 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:66
      门派:XML.ORG.CN
      注册:2006/12/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给catchwind发送一个短消息 把catchwind加入好友 查看catchwind的个人资料 搜索catchwind在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看catchwind的博客5
    发贴心情 
    小弟现在对MFC编程C++类库的调用不是很了解。能否再详细的解释下??


    [此贴子已经被作者于2006-12-27 18:54:24编辑过]
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/27 18:07:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客6
    发贴心情 
    这里没有用到什么高深的东西啊,都是普通的vc常用函数,会基本的vc这些都应该能看懂的。建议你从基本的MFC编程看起,不然没办法深入,这些不是一两句话就能学会的东西。

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/28 9:44:00
     
     一分之千 帅哥哟,离线,有人找我吗?射手座1984-11-30
      
      
      威望:1
      等级:研一(随老板参加了WWW大会还和Tim Berners-Lee合了影^_^)
      文章:632
      积分:4379
      门派:XML.ORG.CN
      注册:2006/12/31

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给一分之千发送一个短消息 把一分之千加入好友 查看一分之千的个人资料 搜索一分之千在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看一分之千的博客7
    发贴心情 

    小弟现在对MFC编程C++类库的调用不是很了解。能否再详细的解释下??
    ===================================================
    这个东西不是一句话两句话能看明白的,建议看看《深入浅出MFC》,对win32消息函数机制和MFC框架明白了以后应该就简单多了~

    ----------------------------------------------
    越学越无知

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/31 20:58:00
     
     catchwind 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:66
      门派:XML.ORG.CN
      注册:2006/12/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给catchwind发送一个短消息 把catchwind加入好友 查看catchwind的个人资料 搜索catchwind在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看catchwind的博客8
    发贴心情 
    多谢大哥的指点..
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/1/13 17:30:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/23 1:01:28

    本主题贴数8,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    2,453.125ms