隐藏的BUG——SetDisplayMode()
来源:互联网 发布:使命召唤 ol命运数据 编辑:程序博客网 时间:2024/05/21 19:33
最近用Direct Draw进行窗口的绘图,发现一运行到某处,就会出现异常。如lpdd是nullptr。
说明该指针指向了空地址。
百思不得其解,于是乎一遍一遍地调试该函数块,还是没发现如何解决问题。然后再像“栈”一样,后入先出地慢慢地调试,终于找到了这个隐藏的小BUG——SetDisplayMode().
Code:
//........LPDIRECTDRAW7 lpdd=NULL;//Create IDirectDraw interface 7.0 objectif(FAILED(DirectDrawCreateEx(NULL,(void **)&lpdd,IID_IDirectDraw7,NULL))){ ::MessageBox(NULL,"DirectDraw object created error","Tips",NULL); return 0;}//set the cooperative level with Windows OSif(FAILED(lpdd->SetCooperativeLevel(handle,DDSCL_NORMAL))){ return 0;}//set display modeif(FAILED(lpdd->SetDisplayMode(640,480,8,0,0))){ return 0;}
多次调试都是到SetDisplayMode处,直接就return 0了。
MSDN中SetDisplayMode的函数原型:
HRESULT SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags);//一般后面两个参数默认为0
然后把宽度和高度分别改了改,(800,600),(1024,768),(1280,1024)还是一样直接return 0。
几经测试,把dwBPP第三个参数变为32即可,每个像素32bit.
经别人提示使用GetDisplayMode函数也可以达到一样的效果,不过要先进行设置DDSURFACEDESC2 的对象参数,再进行调用。
以前写该程序时,不会出现如此问题,想了想应该是最近显卡进行了更新,使得电脑不得不放弃一些落后的东西。
阅读全文
0 0
- 隐藏的BUG——SetDisplayMode()
- 隐藏在内部的Bug KsMarketDataRepatchInterfaceReceiver
- 一个隐藏多年的bug
- 隐藏的BUG探讨——从“Y2K”问题到“2038”年问题
- Lua5.1.1的一个隐藏BUG
- 发现一隐藏多年的Bug?
- 查找一个隐藏很深的bug
- Android lint发现隐藏的Bug
- 《Windows游戏编程大师技巧》里SetDisplayMode()设置色深为8位所出现的问题
- 学生信息管理系统———隐藏窗体——BUG调试
- SWT GC的drawLine方法的一个隐藏Bug
- XNA中Texture2D的格式中隐藏的BUG
- iOS开发笔记之二十六——使用系统相册或相机导致状态栏隐藏的问题(bug总结四)
- 如何快速捕获.NET代码中隐藏的BUG
- topdesk 图标隐藏 后无法显示的BUG
- magento -- 隐藏国家语言列表带来的bug及解决
- 惊人发现,ie6下的select隐藏有bug
- WebBrowser隐藏后自动销毁的BUG以及解决办法
- 在ajax交互时出现的缓存的问题如何解决?
- 在学习Mybatis一对一关联查询时遇到的疑问【待解决】
- C++之尽量不要重载&&,||或者,运算符(7)---《More Effective C++》
- QML之TabBar
- JavaWeb技术内幕学习笔记二:java I/O工作机制基础知识
- 隐藏的BUG——SetDisplayMode()
- CodeForces
- python基础学习四——控制结构与异常
- char* char[] 区别
- iOS 键盘框架IQKeyboardManager使用
- 使用js实现读取csv文件内容解析到html页面中
- 菜鸟开始学习汇编--序章
- 【English】八月英语总结
- S5PV210的地址映射