MFC 小知识总结三
1 载入资源位图
|
1 获取程序实例 |
|
HINSTANCE m_hInst; m_hInst=AfxGetInstanceHandle(); //获取程序实例 |
|
2 载入图像 |
|
HBITMAP m_bmpTank; HBITMAP m_bmpBomb; m_bmpTank=LoadBitmap(m_hInst,MAKEINTRESOURCE(IDB_TANK)); m_bmpBomb=LoadBitmap(m_hInst,MAKEINTRESOURCE(IDB_BOMB)); |
|
3 将位图选入DC中 |
|
HDC m_TankDC; HDC m_BombDC; m_TankDC=CreateCompatibleDC(pDC->m_hDC); m_BombDC=CreateCompatibleDC(pDC->m_hDC); //选择图像 SelectObject(m_TankDC,m_bmpTank); SelectObject(m_BombDC,m_bmpBomb); |
|
4 绘图 |
|
BitBlt(pTankDC->m_hDC,0,0,TANK_WIDTH,TANK_WIDTH,m_TankDC,0,0,SRCCOPY); TransparentBlt2(pDC->m_hDC,0,0,nWidth,nHeight, m_TankDC, 0,0,nWidth,nHeight,RGB(255,0,0)); |
2 移动Pictutr控件
|
1 获得Picture的DC |
|
CDC* m_pMapDC=GetDlgItem(IDC_MAP)->GetDC(); CDC* m_pTankDC=GetDlgItem(IDC_TANK)->GetDC(); |
|
2 将Picture控件移到指定矩形区域 |
|
//设置客户区矩形 m_ClientRect[0]=CRect(20,10,7*WIDTH+20,WIDTH+10); //IDC_MAP m_ClientRect[1]=CRect(20,50,NUM*WIDTH+20,NUM*WIDTH+50); //IDC_FIELD m_ClientRect[2]=CRect(260,12,TANK_WIDTH+260,TANK_WIDTH+12); //IDC_TNAK //移动窗体 GetDlgItem(IDC_MAP)->MoveWindow(m_ClientRect[0]); //IDC_MAP GetDlgItem(IDC_FIELD)->MoveWindow(m_ClientRect[1]); //IDC_FIELD GetDlgItem(IDC_TANK)->MoveWindow(m_ClientRect[2]);
|
3 载入光标
|
1 载入光标
1)从文件载入光标 |
|
HCURSOR m_hCursor; //Load the Cursor m_hCursor=LoadCursorFromFile("res\\cursor.ani"); //.cur or .ani
|
|
2)从程序自己定义的资源光标载入 m_hCursor=AfxGetApp()->LoadCursor(IDR_CURSOR); 3)从默认资源载入 m_hCursor=LoadCursor(NULL,IDC_CROSS); |
|
2 设置光标 响应WM_SETCURSOR消息,显示适当的光标形状 if(m_hCursor) { SetCursor(m_hCursor); return TRUE; } else return CDialog::OnSetCursor(pWnd, nHitTest, message); |
4 播放背景音乐
|
构造函数: m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); |
|
初始化: HICON icon=LoadIcon(AfxGetInstanceHandle(),(LPCTSTR)IDR_MAINFRAME); SetIcon(icon,TRUE); SetIcon(icon,FALSE); MCI_OPEN_PARMS mciOpen; //背景音乐 mciOpen.lpstrDeviceType=0; mciOpen.lpstrElementName="./res/music.mp3"; mciSendCommand(NULL,MCI_OPEN, MCI_OPEN_ELEMENT,(DWORD)&mciOpen); MCI_PLAY_PARMS mciPlay; mciPlay.dwFrom = 0; mciSendCommand(mciOpen.wDeviceID,MCI_PLAY,MCI_NOTIFY | MCI_FROM,(DWORD)&mciPlay); SetTimer(1,210000,NULL); //用来循环播放背景音乐
|
|
OnTimer函数: OnTimer(UINT nIDEvent) {
} |
|
控制背景音乐的播放: void CMazeDlg::OnBnClickedBkmusic() { // TODO: 在此加入控件通知处理程序代码
}
|
5 线程操作
|
CWinThread *m_Thread; UINT Start(LPVOID pPar); //開始 m_Thread=AfxBeginThread(Start,GetSafeHwnd()); m_Thread->SuspendThread(); m_Thread->SuspendThread(); |
MFC 小知识总结三的更多相关文章
- MFC 小知识总结二
1 UpdateData 不能及时更新控件内容 原因: UpdateData是通过数据交换实现改变控件显示的.改变了之后必需要调用一次OnPaint才干实现刷新. 因此,若是在一个函数里重复多次调用有 ...
- MFC 小知识总结五
1 移动无标题对话框 响应WM_NCHITTEST 消息 [cpp] view plaincopy LRESULT CTimeJishiDlg::OnNcHitTest(CPoint point) ...
- MFC 小知识总结四
1 PlaySound 播放WAV格式的音乐 This function plays a sound specified by a file name, resource, or system ev ...
- 【C#小知识】C#中一些易混淆概念总结(三)---------结构,GC,静态成员,静态类
目录: [C#小知识]C#中一些易混淆概念总结 [C#小知识]C#中一些易混淆概念总结(二) ---------------------------------------分割线----------- ...
- Android简易实战教程--第三十四话《 自定义SeekBar以及里面的一些小知识》
转载本专栏文章,请注明出处尊重原创:博客地址http://blog.csdn.net/qq_32059827/article/details/52849676:小杨的博客 许多应用可能需要加入进度,例 ...
- HTML+CSS中的一些小知识
今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...
- web前端基础知识-(三)JavaScript基本操作
JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编程代码. JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行. JavaScrip ...
- Jquery:小知识;
Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器 上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理 ...
- 12个你未必知道的CSS小知识
虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过. 1.CSS的color属性并非只能用于文本显示 对于CSS ...
随机推荐
- perl:split函数用法
本文和大家重点讨论一下Perl split函数的用法,Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中.这个Perl split函数使用规则表达式( ...
- 常用模块之configpaser与shutil
configparser模块 定义:configparser翻译为配置解析,即它是用来解析配置文件的 配置文件:用于编写程序的配置信息的文件 配置文件编写格式 配置文件中只允许出现两种类型的数据 se ...
- CodeBlocks "no such file or directory
1但编译时还是会报错:no such file or directory;这是为什么呢? :在项目/构建选项/搜索路径 选项下,点击添加按钮,添加自己的头文件的存放文件夹,搞定... 2.code ...
- NYOJ 293 Sticks
Sticks 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 George took sticks of the same length and cut them r ...
- Leetcode 322.零钱兑换
零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: co ...
- 【Python】SyntaxError: Non-ASCII character '\xe8' in file
遇到的第一个问题: SyntaxError: Non-ASCII character '\xe8' in file D:/PyCharmProject/TempConvert.py on line 2 ...
- TOJ 3134: 渊子赛马修改版
3134: 渊子赛马修改版 Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal Submit: 458 ...
- HDU-5317 RGCDQ ,暴力打表!
RGCDQ 暴力水题,很可惜比赛时没有做出来,理清思路是很简单的. 题意:定义f(i)表示i的素因子个数,给你一段区间[l,r],求max_gcd(f(i),f(j)).具体细节参考题目. 思路:数据 ...
- DataTable排序
DataRow[] rows = dt.Select("", "name asc"); DataTable t = dt.Clone(); t.Clea ...
- Luogu【P2904】跨河(DP)
题目链接在这里 此题DP.用一个前缀和一样的东西,把载i个奶牛的时间求出来,然后DP代码如下: ;i<=n;++i){ f[i]=que[i]; ;j<i;++j) f[i]=min(f[ ...