随笔-1  评论-9  文章-16  trackbacks-0
这些技巧主要是在我的项目中用到的,为了达到记忆的目的:
1.实现目录选择
   使用API SHBrowseForFolder实现,实例代码如下:
 1UpdateData();
 2    char Buf[MAX_PATH];
 3    LPITEMIDLIST lp;
 4    BROWSEINFO bs;
 5    bs.hwndOwner=NULL;
 6    bs.pidlRoot=NULL;
 7    bs.pszDisplayName=Buf;
 8    bs.lpszTitle=_T("请选择存放目录");
 9    bs.ulFlags=BIF_RETURNONLYFSDIRS;//只选择文件系统目录
10    bs.lpfn=NULL;
11    bs.iImage=0;
12    lp=SHBrowseForFolder(&bs);
13    if(lp){
15        SHGetPathFromIDList(lp,Buf);
16        m_Path=Buf;//所需的目录名
17        }

18    UpdateData(FALSE);
19
2.一个好用的CPiture类
/Files/fenglinuestc/picture.rar
示例代码:
 1UpdateData();//取得图片路径,m_Picture 为CPicture对像
 2    CFileDialog cfd(TRUE,NULL,NULL,0,"All Image File(*.jpg,*.jpeg,*Gif,*BMP)|*.jpg;*.jpeg;*.gif;*.bmp;||");
 3    if(cfd.DoModal()==IDOK)
 4    {
 5      m_bkPath=cfd.GetPathName();
 6      UpdateData(FALSE);
 7      m_Picture.Load(m_bkPath);
 8      if(m_Picture)//如果可用
 9      {
10        GetDlgItem(IDC_FRMAE)->EnableWindow(TRUE);
11        UpdateData(TRUE);
12        BeginWaitCursor();
13        Invalidate();//重画
14        EndWaitCursor();
15      }

16    }
重画的时候只要使用.Render(CDC * dc,Crect rect)定位到一个rect就可以显示图片,接着上边的重画消息的示例代码如下:
 1//WM_PAINT
 2CPaintDC dc(this); // device context for painting
 3    if(m_Picture)
 4    {
 5        CRect rect;
 6        CWnd *previewwnd=GetDlgItem(IDC_FRMAE);//IDC_FRAME,通常为一个Groupbox
 7        previewwnd->GetWindowRect(rect);
 8        ScreenToClient(rect);
 9               //显示到rect中
10        m_Picture.Render(&dc,rect);
11    }
3.窗口添加ContextMenu的方法
//ON_WM_CONTEXTMENU..
::OnContextMenu(CWnd* pWnd, CPoint point) 
{
         CMenu menu;
       
//IDM_CHILDMENU为一ContextMenu
        VERIFY(menu.LoadMenu(MAKEINTRESOURCE(IDM_CHILDMENU)));
       
//Pull out the first popup menu from it
        CMenu* pPopup=menu.GetSubMenu(0);
       ASSERT(pPopup
!=NULL);
    
        CWnd 
* pWndPopupOwner=this;
      
while(pWndPopupOwner->GetStyle()&WS_CHILD)
         pWndPopupOwner
=pWndPopupOwner->GetParent();
        pPopup
->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pWndPopupOwner);
}
Continue..
posted on 2007-09-13 12:26 Lexili 阅读(431) 评论(0)  编辑 收藏 引用 所属分类: Win32

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理