Error

C++博客 首页 新随笔 联系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

#

GDI对象都必须调用相应的方法进行销毁。如下表

GDI对象

产生方法

销毁方法

位图(HBITMAP)

CreateBitmap,CreateBitmapIndirect,

CreateCompatibleBitmap,CreateDIBitmap,

CreateDIBSection,CreateDiscardableBitmap

DeleteObject

画刷(HBRUSH)

CreateBrushIndirect,CreateDIBPatternBrush,

CreateDIBPatternBrushPt,CreateHatchBrush,

CreatePatternBrush,CreateSolidBrush

DeleteObject

设备上下文(HDC)

CreateDC

DeleteDC,ReleaseDC

字体(HFONT)

CreateFont,CreateFontIndirect

DeleteObject

内存DC(HDC)

CreateCompatibleDC

DeleteDC

调色板(HPALETTE)

CreatePalette

DeleteObject

画笔(HPEN)

CreatePen,CreatePenIndirect

DeleteObject

区域(HRGN)

CombineRgn,CreateEllipticRgn,

CreateEllipticRgnIndirect,CreatePolygonRgn,

CreatePolyPolygonRgn,CreateRectRgn,

CreateRectRgnIndirect,CreateRoundRectRgn,

DeleteObject


posted @ 2015-01-16 11:51 Enic 阅读(249) | 评论 (0)编辑 收藏

VC编译选项为Release,但是_DEBUG宏一直设置为1


检测了代码没有问题
第一次是直接该工程文件搞定的,后来找了下原因:C++运行库选择了调试库,,,坑爹的,,,
posted @ 2015-01-15 12:55 Enic 阅读(304) | 评论 (0)编辑 收藏

mysql居然只能在存储过程中使用declare定义变量,DECLARE CONTINUE HANDLER FOR SQLEXCEPTION也只能在存储过程中用?
begin TRANSACTION
SET XACT_ABORT on  --sql异常事物自动回归
--mysql中等价的语句: declare continue handler for sqlexception begin rollback; end;
--0 金币
IF(1 = @ItemId)
BEGIN
update QPTreasureDB.dbo.GameScoreInfo SET Score = Score + @ItemCount WHERE UserID = @UserId;
END
--test
INSERT INTO QPAccountsDB.dbo.AccountsInfo(UserId) VALUES(1);
COMMIT TRANSACTION 
CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_Test`()
BEGIN
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
SELECT 'SQLEXCEPTION handler was activated' AS msg;
BEGIN -- inner block
    DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02'
SELECT 'SQLSTATE handler was activated' AS msg;
END;
  
select * from test_table;
END
posted @ 2015-01-12 10:05 Enic 阅读(494) | 评论 (0)编辑 收藏

Apache配置多站点后:连接失败 You don't have permission to access 
连接失败是应为没有在全局配置中添加监听端口
You don't have permission to access 是应为在全局配置的"/"目录权限问题
Listen 81
<VirtualHost *:81>
  ServerName Test
  Options All ExecCGI FollowSymLinks Includes IncludesNOEXEC Indexes MultiViews SymLinksIfOwnerMatch
  DirectoryIndex index.html index.htm index.php index.php3 index.php4 index.phtml index.shtml index.shtm
  DocumentRoot "E:/enic/MoleWeb/"
    <Directory "E:/enic/MoleWeb/">
        Options Indexes FollowSymLinks ExecCGI
        Order Deny,allow
        Allow from all
    </Directory>
</VirtualHost>
<Directory "/">
  # explicitly permit access to web content directories in other
  # <Directory> blocks below.
  AllowOverride None
  #Require all denied
</Directory>
posted @ 2015-01-08 17:46 Enic 阅读(237) | 评论 (1)编辑 收藏

XAMPP Apache 443端口占用的解决方案:
现象:启动Apache服务时提示433端口被占用
结果过程:
操作1:修改http-ssl.con和httpd.conf中443端口到8443
结果1:无效,任然提示443端口占用打不开
分析1:可能改错了位置,或者有其他位置配置了
操作2:修改XAMPP根目录下的“properties.ini xampp-control.ini”中配置的ssl端口433到8443
结果2:无效,而且重启XAMPP后这一次修改的端口还被XAMPP改回443了
分析2:尼玛,应该是别的位置改,或者不会是写死了的吧,,,
操作3:
  1.从XAMPP主面板[Config]进入[Configuration of Control Panel]。
  2.从[Service and Port Settings]进入[Service Settings]可以看到真相再此了
  3.修改[Service Settings]上的SSL Port端口到8433
结果3:Apache起来了
分析3:以后高明白之前劲量少手动修改配置文件
posted @ 2015-01-08 16:04 Enic 阅读(285) | 评论 (0)编辑 收藏

说明:此问题只出现在cocos2d-x 3.0和3.1.0版本上,3.1.1已经将此bug修复 
         不知为何,看了代码,appActivity.jave 继承了Cocos2dxActivity.java在OnCreatView()函数中,新创建了一个view,在init中新创建的view调用了 
         this.mGLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0);  
         似乎重置了参数,所以我们在AppActivity.java 中重构public Cocos2dxGLSurfaceView onCreateView()函数 
         改写为 
         public Cocos2dxGLSurfaceView onCreateView(){ Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this); glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);  return glSurfaceView; } 


int Application::runEx()
{
PVRFrameEnableControlWindow(false);
// Main message loop:
LARGE_INTEGER nFreq;
QueryPerformanceFrequency(&nFreq);
QueryPerformanceCounter(&_nLast);
initGLContextAttrs();
posted @ 2014-12-16 23:42 Enic 阅读(288) | 评论 (0)编辑 收藏

Windows下使用VS2008编译时经常遇到macro redefinition警告或错误,如:

 

 

c:\programme\microsoft sdks\windows\v6.0a\include\ws2def.h(91) : warning C4005: 'AF_IPX' : macro redefinition

 

 

解决方法:打开编译选项 /showIncludes

Use the compiler option /showIncludes to find out how they are getting included.

 

看程序直接或者间接Include了哪些头文件,通过调整头文件顺序等办法解决。

posted @ 2014-12-10 15:23 Enic 阅读(3096) | 评论 (0)编辑 收藏

一:ttf不显示的bug,难搞,一点头绪都没有,只知道别人电脑上能显示,到我这就不行了。其实迅雷的客户端在我的电脑上显示的也不正常。后来发现居然是桌面设置的问题,之前设置的16位,实际上设置32位真彩图就一点问题也没有了。
网上找了下,按照下面的修改,即时设置是16位也能正常了。
一句话描述就是:cocos2dx使用的是32位的帧缓存,创建bitmap的时候使用的dc不是,创建dib的时候也没有设置32位,所以就乱码了。

修改 win32/ccimage.cpp 文件
1.
m_hBmp = CreateBitmap(nWidth, nHeight, 1, 32, NULL);
改成 :
m_hBmp = CreateCompatibleBitmap(m_hDC, nWidth, nHeight);

2.
填加
bi.bmiHeader.biBitCount = 32;搜索
在下面这句话之前
GetDIBits(dc.getDC(), dc.getBitmap(), 0, m_nHeight, m_pData, (LPBITMAPINFO)&bi, DIB_RGB_COLORS);
完美解决





二:无法在xp上运行,现象是先提示什么 无法定位GetTickCount64于Kernel32.dll,然后又无法定位inet_ntop于Kernel32.dll
起初怀疑是控制帧率或者定时器的时候使用了GetTickCount64,后来看了下,用的是多媒体高精度定时器那一套,然后有尝试使用windbg下api断点,也没断到。
在然后老老实实一个dll 一个dll的去看导入函数列表,后来发现是libwebsocket.dll使用了GetTickCount64,从官网重新搞一个回来自己编译。
接下来提示inet_ntop了,思维局限倒是我还以为是在websocket上除了问题,但是实际上最后找到的是在libcocos2dx里边用到了这个函数,所以,还是要有全局意识,不能自己钻到角落里边去了,盯着一个点不放。
if (!WSAAddressToStringA((struct sockaddr*)&sin->sin6_addr, sizeof(sin->sin6_addr), 0, buf, &nLen))
   cocos2d::log("Console: listening on %s : %d", buf, ntohs(sin->sin6_port));
//if( inet_ntop(res->ai_family, &sin->sin6_addr, buf, sizeof(buf)) != nullptr )
// cocos2d::log("Console: listening on %s : %d", buf, ntohs(sin->sin6_port));



posted @ 2014-12-08 19:26 Enic 阅读(350) | 评论 (0)编辑 收藏

WinDBG 提供了多种设断点的命令:bp, bu, bm, ba
bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)WinDBG 不会把bp断点保存工作空间中 。  所以,我比较喜欢用bu 命令。
bu 命令是针对某个符号下断点。 比如 bu MyApp!SomeFunction 。 在代码被修改之后, 该断点可以随着函数地址改变而自动更新到最新位置。  而且bu 断点会保存在WinDbg工作空间中, 下次启动 Windbg 的时候该断点会自动设置上去。
另外,在模块没有被加载的时候,bp 断点会失败(因为函数地址不存在),而bu 断点则可以成功。 新版的WinDBG中 bp失败后会自动被转成bu 。
bm 命令也是针对符号下断点。 但是它支持匹配表达式。 很多时候你下好几个断点。 比如,把MyClass 所有的成员函数都下断点: bu MyApp!MyClass::* , 或者把所有以CreateWindow开头的函数都下断点: bu user32!CreateWindow* 。
以上三个命令是对代码下断点, 我们还可以对数据下断点。
ba 命令就是针对数据下断点的命令, 该断点在指定内存被访问时触发。 命令格式为
ba Access Size [地址]
Access 是访问的方式, 比如 e (执行), r (读/写), w (写)
Size 是监控访问的位置的大小,以字节为单位。 值为 1、2或4,还可以是 8(64位机)。
比如要对内存0x0483DFE进行写操作的时候下断点,可以用命令 ba w4 0x0483DFE
这里顺便提以下其他断点命令:
bl  列出所有断点
bc  清除断点
bd 禁用断点
be 启动被bd 命令经用的断点
posted @ 2014-12-01 09:40 Enic 阅读(269) | 评论 (0)编辑 收藏

PUD
APDU ApplicationProtocolDataUnit )是指对等层次之间传递的数据单位。协议数据单元(ProtocolDataUnit)物理层的PDU是数据位(bit),数据链路层的PDU是数据帧(frame),网络层的PDU是数据包(packet),传输层的PDU是数据段(segment),其他更高层次的PDU是数据(data)。   
 
在分层网络结构,例如在开放式系统互联(OSI)模型中,在传输系统的每一层都将建立协议数据单元(PDU)的一点是,每一层附加到PDU上的信息,是指定给另一个系统的同等层的。这就是对等层如何进行一次通信会话协调的。
 
posted @ 2014-11-30 21:56 Enic 阅读(95) | 评论 (0)编辑 收藏

仅列出标题
共22页: First 4 5 6 7 8 9 10 11 12 Last