下面,我简单地介绍一下这个框架的使用方法:
1>创建一个空项目(我这里是VS2010)
2>将这3个头文件以及2个cpp源文件添加到创建好的项目中
3>在 CWindow.h中添加消息响应函数(CCWindow类的成员函数)的声明
如:(名称还是遵循MFC的命名方式)
//================消息响应函数================ public: //注:在这里添加需要响应的消息处理函数的声明 void OnCreate();;4>CWindow.cpp中实现这些消息响应函数
5>在Main.cpp的窗口过程函数中调用响应的消息响应函数
如:
switch(msg)
{
case WM_CREATE:
wnd.OnCreate(); //窗口建立消息:进行一些初始化操作
return 0;
}
我还是为这个框架取一个艺名儿,名为:BCF
BC:我的csdn博客ID缩写——BlueCoder
F:frame——框架的意思
合起来就是BlueCoder的框架,当然,大家都可以用,只要你愿意,我也乐意^_^
三、一个简单的实例,教你熟悉这个框架
我做了一个简单的实例,来帮助大家熟悉这个框架
这个实例呢,就是简单的贴图、贴文字,不过你会看到有趣的部分:我使用了诸如CPaintDC、CFont、CString、CImage、CRect等MFC类库。对,没错,这就是这个框架的一大特点:可以使用MFC类库,这就方便了我们写代码
由于没什么复杂的原理,我就按照步骤贴出核心代码哈:
(1)项目、头文件、源文件已经相继处理好了
(2)在CCWindow类中添加如下的消息响应成员函数:
//================消息响应函数================ //注:在这里添加需要响应的消息处理函数 public: //处理WM_CREATE消息 void OnCreate(); //处理WM_SIZE消息 void OnSize(); //处理WM_PAINT消息 void OnPaint(); //处理WM_KEYDOWN消息 void OnKeyDown(WPARAM); //处理WM_DESTROY消息 void OnDestroy();
(3)这些消息响应函数的实现:
//---------------------------------------------------------- // 消息响应函数 //---------------------------------------------------------- //窗口建立消息:进行一些初始化操作 void CCWindow::OnCreate() { m_img.Load(res\bg.jpg); if(m_img.IsNull()) { AfxMessageBox(背景图片加载失败!); exit(0); } mciSendString(open res\bgm.mp3 alias bgm, 0, 0, 0); mciSendString(play bgm repeat, 0, 0, 0); } //窗口size消息:获取窗口大小 void CCWindow::OnSize() { ::GetClientRect(m_hwnd, m_rect); } //窗口Paint消息:绘制窗口客户区 void CCWindow::OnPaint() { CPaintDC dc(CWnd::FromHandle(m_hwnd)); //绘制背景图片 dc.SetStretchBltMode(COLORONCOLOR); m_img.StretchBlt(dc, 0, 0, m_rect.Width(), m_rect.Height(), 0, 0, m_img.GetWidth(), m_img.GetHeight(), SRCCOPY); //绘制文字 CFont font; font.CreatePointFont(150, 微软雅黑); dc.SelectObject(font); CString str1 = 给自己的梦想一次破茧而出的机会,创造属于自己的幸福; CString str2 = BlueCoder(黎小华); dc.SetBkMode(TRANSPARENT); dc.SetTextColor(RGB(163, 21, 21)); dc.TextOut(130, 220, str1); dc.SetTextColor(RGB(21, 155, 230)); dc.TextOut(500, 300, str2); } //按键消息:按下Esc键退出程序 void CCWindow::OnKeyDown(WPARAM wParam) { if(wParam == VK_ESCAPE) { DestroyWindow(m_hwnd); } } //窗口销毁消息:释放内存 void CCWindow::OnDestroy() { m_img.Destroy(); mciSendString(close bgm, 0, 0, 0); PostQuitMessage(0); }
(4)在Main.cpp中的窗口过程中调用响应的消息成员函数:
//窗口过程:处理消息 LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: wnd.OnCreate(); //窗口建立消息:进行一些初始化操作 return 0; case WM_SIZE: wnd.OnSize(); //窗口size消息:获取窗口大小 return 0; case W
