关闭

消息机制的建立 MFC

361人阅读 评论(0) 收藏 举报
分类:

//头文件
#include "StdAfx.h"
#include "ATPC.h"
#include "TWinApp.h"
#include "MainWindow.h"
#include "SetMineWnd.h"

CMainWindow::CMainWindow()
{
 m_pMineListBox = NULL;
}

CMainWindow::~CMainWindow(void)
{
 if( m_pMineListBox )
 {
  delete m_pMineListBox;
  m_pMineListBox = NULL;
 }
}

//创建自己的消息映射表(放在类的实现进行定义拦截消息的)
BEGIN_MESSAGE_MAP(CMainWindow,CFrameWnd)
 ON_WM_CREATE()
 ON_WM_CLOSE()
 ON_WM_CTLCOLOR()
 ON_WM_ERASEBKGND()
 //ON_COMMAND()
END_MESSAGE_MAP()

int CMainWindow::MyInit()
{
 CSetMineWnd *c_pSetMineWindow = newCSetMineWnd();
 c_pSetMineWindow->SetMineWindow();
 
 if(!CMainWindow::Create(c_pSetMineWindow->m_RectWindow->lpszClass,c_pSetMineWindow->m_RectWindow->lpszName,\
                      c_pSetMineWindow->m_RectWindow->style,c_pSetMineWindow->m_RectWindow->rect,NULL,\
       c_pSetMineWindow->m_RectWindow->hMenu,c_pSetMineWindow->m_RectWindow->dwExStyle,NULL))//构造函数直接进行窗口的创建
 {
  _tprintf(_T("CMainWindow::Createfalse\r\n"));
  return false;
 }
 //m_brush.CreateSysColorBrush(COLOR_BACKGROUND);
 return true;
}

voidCMainWindow::OnClose()
{
 ::DestroyWindow(this->m_hWnd);//销毁活动的窗口(参数是获得当前活动窗口的句柄)
 //ExitProcess(1);//完成结束全部进程
 //TerminateThread( GetCurrentThread(),0 );
 ExitThread(-1);
}

intCMainWindow::OnCreate(LPCREATESTRUCTlpcreatestruct)
{
 if( !m_pMineListBox )
 {
  m_pMineListBox = newCListBox(); 
  m_pMineListBox->Create(WS_CHILD| WS_VISIBLE| WS_VSCROLL| WS_HSCROLL| WS_TABSTOP,CRect(10,10,(10+360),(10+235)), this, 1);
 }
 
 for(int i=0; i<50; ++i)
 {
  m_pMineListBox->AddString(_T("TESTTEST TEST TEST TEST TEST TEST TEST TEST"));
 }

 return false;
 //returnCFrameWnd::OnCreate(lpcreatestruct);
}

BOOLCMainWindow::OnEraseBkgnd(CDC* pDC)
{
 CBrush backBrush(RGB(255,0,0));//建立新的画刷

 //保存旧的brush
 CBrush* pOldBrush =pDC->SelectObject(&backBrush);
 CRect rect;
 pDC->GetClipBox(&rect);//取得矩形区域的边界

 //画需要的区域
 pDC->PatBlt(rect.left, rect.top,rect.Width(), rect.Height(), PATCOPY);
 pDC->SelectObject(pOldBrush);//画刷恢复

 return TRUE;
}

HBRUSHCMainWindow::OnCtlColor(CDC* pDC, CWnd* pWnd, UINTnCtlColor)
{

 if( CTLCOLOR_LISTBOX == nCtlColor&& pWnd == m_pMineListBox )
 {
  pDC->SetTextColor(RGB(255,0,0));
  pDC->SetBkColor(RGB(0,0,255));
  //pDC->SetBkMode(OPAQUE);
  HBRUSH B =::CreateSolidBrush(RGB(255,255,255));
  return B;
 }
 return CFrameWnd::OnCtlColor(pDC, pWnd,nCtlColor);//其实不返回父类,也可以成功创建窗口控件                                            
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:986507次
    • 积分:17701
    • 等级:
    • 排名:第540名
    • 原创:741篇
    • 转载:522篇
    • 译文:0篇
    • 评论:105条
    最新评论