MFC 小知识总结五

时间:2022-06-01 18:47:38

1 移动无标题对话框

  响应WM_NCHITTEST 消息

  1. LRESULT CTimeJishiDlg::OnNcHitTest(CPoint point)
  2. {
  3. // TODO: 在此加入消息处理程序代码和/或调用默认值
  4. LRESULT res=CDialogEx::OnNcHitTest (point);
  5. if (res==HTCLIENT)        //HTclient  落在客户区
  6. {
  7. res=HTCAPTION;    //返回标题栏资源
  8. }
  9. return res;
  10. //return CDialogEx::OnNcHitTest(point);
  11. }

2 动态创建CButton 

  1. m_pButtonCheckBox = new CButton();
  2. m_pButtonCheckBox ->Create(_T(""), WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX, CRect(4,3,19,18), this, CHECK_BOX_BUTTON);

3 给父窗体发送消息

  1. ::PostMessage(::GetParent(this->m_hWnd),UM_SELECT_ALL_CHECKBOX,0,0);

4 CString 换行符

  1. m_banjiInfoStr.Format (
  2. _T("本班共同拥有:%d个学生\r\n\
  3. 当中男生:%d \r\n\
  4. 女生:%d \r\n"),
  5. count,
  6. boyCount,
  7. count-boyCount);

5 获得系统高亮颜色

  1. pDC->FillSolidRect(&rcTemp, GetSysColor(COLOR_HIGHLIGHT)) ;
  2. pDC->SetTextColor(GetSysColor(COLOR_HIGHLIGHTTEXT)) ;

获得缺省字体

  1. pDC->SelectObject(GetStockObject(DEFAULT_GUI_FONT));

6 获得行数

  1. //得到行数 使得垂直居中
  2. CString itemStr=lpBuffer;
  3. int iStrline=0;
  4. int nStart=0;
  5. while(nStart!=-1){
  6. nStart=itemStr.Find(L"\n",nStart+1);
  7. iStrline++;
  8. }

7 MoveWindow(x,y,cx,cy/)

   起始点 x,y

   宽度 cx

   高度 cy

8 响应右上角的关闭消息(X消息)

  X也是一个button他的ID是IDCANCEL 他向主窗体发送消息WM_CLOSE