﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-bobokids-随笔分类-程序语言</title><link>http://www.cppblog.com/bobokids/category/8510.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 02 Nov 2008 19:25:05 GMT</lastBuildDate><pubDate>Sun, 02 Nov 2008 19:25:05 GMT</pubDate><ttl>60</ttl><item><title>使用VS2005制作安装包</title><link>http://www.cppblog.com/bobokids/archive/2008/11/01/65659.html</link><dc:creator>情趣所致</dc:creator><author>情趣所致</author><pubDate>Fri, 31 Oct 2008 16:35:00 GMT</pubDate><guid>http://www.cppblog.com/bobokids/archive/2008/11/01/65659.html</guid><wfw:comment>http://www.cppblog.com/bobokids/comments/65659.html</wfw:comment><comments>http://www.cppblog.com/bobokids/archive/2008/11/01/65659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bobokids/comments/commentRss/65659.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bobokids/services/trackbacks/65659.html</trackback:ping><description><![CDATA[<p><span><font size=3>下面只是最基本的操作。</font></span></p>
<p><span><font size=3><font face="Times New Roman">&nbsp;</font></font></span></p>
<p><span><font size=3>程序环境：</font></span></p>
<p><span><font face="Times New Roman" size=3>VS 2005 </font></span></p>
<p><span><font face="Times New Roman" size=3>C# </font></span></p>
<p><span><font face="Times New Roman" size=3>WINFORM</font></span></p>
<p><span><font size=3><font face="Times New Roman">&nbsp;</font></font></span></p>
<p><font size=3><span>在源程序中</span><span>：</span></font></p>
<p><font size=3><span><font face="Times New Roman">1.</font></span><span>程序完成后，点击生成，生成成功后，系统会在工程文件夹的</span><span><font face="Times New Roman">DEBUG</font></span><span>目录里产生相应的</span><span><font face="Times New Roman">EXE</font></span><span>文档及</span><span><font face="Times New Roman">DLL</font></span><span>。</span></font></p>
<p><font size=3><span><font face="Times New Roman">2.</font></span><span>不要点击发布，因为发布后会在工程文件夹的</span><span><font face="Times New Roman">DEBUG</font></span><span>目录里产生一个</span><span><font face="Times New Roman">setup.exe</font></span><span>等文档，而这些是安装程序所</span><font face="Times New Roman"> </font><span>不需要的。</span></font></p>
<p><font size=3><span><font face="Times New Roman">3.</font></span><span>建议删除工程文件夹的</span><span><font face="Times New Roman">DEBUG</font></span><span>目录里的内容，再点击重新生成。</span></font></p>
<p><span><font size=3>对源程序进行部署：</font></span></p>
<p><font size=3><span><font face="Times New Roman">1.</font></span><span>创建一个部署的工程文件：文件</span><span><font face="Times New Roman">-</font></span><span>新建项目</span><span><font face="Times New Roman">-</font></span><span>其他项目类型</span><span><font face="Times New Roman">-</font></span><span>安装和部署</span><span><font face="Times New Roman">-</font></span><span>安装项目</span><span>（没研究过这几个模板的区</span><font face="Times New Roman"> </font><span>别）</span><span><font face="Times New Roman">-</font></span><span>给工程命名</span></font></p>
<p><font size=3><span><font face="Times New Roman">2.</font></span><span>添加一个新文件夹：右键单击应用程序文件夹</span><span><font face="Times New Roman">-</font></span><span>添加</span><span><font face="Times New Roman">-</font></span><span>文件夹，这样便会在应用程序文件夹下产生一个新的文</span><font face="Times New Roman"> </font><span>件夹，请给他命名（也可以不用添加这个文件夹而直接添加程序必需的文件，这样做的目的主要是为了方便</span><font face="Times New Roman"> </font><span>管理包含其他文件（如：图片）的一些程序）</span></font></p>
<p><font size=3><span><font face="Times New Roman">3.</font></span><span>添加必要的文件：右键单击上一步产生的新建文件夹</span><span><font face="Times New Roman">-</font></span><span>添加</span><span><font face="Times New Roman">-</font></span><span>文件</span><span><font face="Times New Roman">-</font></span><span>选择工程文件夹的</span><span><font face="Times New Roman">DEBUG</font></span><span>目录里所有的文件</span><font face="Times New Roman"> </font><span>并添加</span></font></p>
<p><span><font size=3><font face="Times New Roman"></font></font></span></p>
<p><font size=3><span><font face="Times New Roman">4.</font></span><span>添加程序快捷方式：右键单击用户的&#8220;程序&#8221;菜单</span><span><font face="Times New Roman">-</font></span><span>添加</span><span><font face="Times New Roman">-</font></span><span>文件</span><span><font face="Times New Roman">-</font></span><span>选择工程文件夹的</span><span><font face="Times New Roman">DEBUG</font></span><span>目录里程序的执行文</span><font face="Times New Roman"> </font><span>件（程序名</span><span><font face="Times New Roman">.exe</font></span><span>）并添加</span><span><font face="Times New Roman">-</font></span><span>右键单击添加的执行文件</span><span><font face="Times New Roman">-</font></span><span>创建快捷方式</span><span><font face="Times New Roman">-</font></span><span>删除刚才添加的执行文件</span><span><font face="Times New Roman">-</font></span><span>修改属性里的</span><span><font face="Times New Roman"> target</font></span><span>值并将他指向程序的执行文件（程序名</span><span><font face="Times New Roman">.exe</font></span><span>）</span><span><font face="Times New Roman">-</font></span><span>添加快捷方式的</span><span><font face="Times New Roman">ICON</font></span></font></p>
<p><span><font size=3><font face="Times New Roman"></font></font></span></p>
<p><font size=3><span>说明：这一步主要是添加一个指向程序执行文件的快捷方式，在上面的操作步骤中先添加这个执行文件，后来</span><font face="Times New Roman"> </font><span>又把他删除了，看起来很麻烦和不可思议，实际我也是这么想的，但是我找不到一下子就添加指向程序执行</span><font face="Times New Roman"> </font><span>文件快捷方式的方法，我也是不得以而为之</span><span><font face="Times New Roman">,</font></span><span>希望有人能贡献出更好的办法。</span></font></p>
<p><span><font size=3><font face="Times New Roman"></font></font></span></p>
<p><font size=3><span><font face="Times New Roman">5.</font></span><span>添加桌面快捷方式：与第</span><span><font face="Times New Roman">4</font></span><span>步操作方法相同。</span></font></p>
<p><font size=3><span><font face="Times New Roman">6.</font></span><span>生成安装包：点击生成，系统会在工程文件夹的</span><span><font face="Times New Roman">DEBUG</font></span><span>目录里产生相应的安装程序，有两个，但安装效果是等</span><font face="Times New Roman"> </font><span>同的。</span></font></p>
<p><font size=3><span><font face="Times New Roman">7.</font></span><span>安装应用程序：点击安装包，按系统提示就行。</span></font></p>
<p><span><font size=3><font face="Times New Roman"></font></font></span></p>
<p><span><font size=3>说明：</font></span></p>
<p><span><font size=3><font face="Times New Roman"></font></font></span></p>
<p><font size=3><span><font face="Times New Roman">1.</font></span><span>关于</span><span><font face="Times New Roman">.NET FRAMEWORK</font></span><span>的问题：一般的</span><span><font face="Times New Roman">winxp</font></span><span>下都没有安装</span><span><font face="Times New Roman">.NET FRAMEWORK</font></span><span>，所以要运行用</span><span><font face="Times New Roman">VS2005</font></span><span>开发出来的程</span><font face="Times New Roman"> </font><span>序，必须安装这个运行库，这个运行库可以到微软的网站上下载（</span><span><font face="Times New Roman">dotnetfx.exe</font></span><span>文件），程序按上述步骤打</span><font face="Times New Roman"> </font><span>完包后，在安装时，安装程序会自动检查操作系统是否具备运行条件，如果缺少这个文件，安装程序会有相</span><font face="Times New Roman"> </font><span>应的提示的，我现在的做法是先安装</span><span><font face="Times New Roman">.NET FRAMEWORK</font></span><span>，再安装程序包。也有人先用</span><span><font face="Times New Roman">INSTALLSHIED</font></span><span>来打包，这</span><font face="Times New Roman"> </font><span>样就可以实现无人值守安装而不用安装两次。</span></font></p>
<p><font size=3><span><font face="Times New Roman">2.</font></span><span>如果要编辑注册表，用户界面，以及自定义操作，在部署工程时要对相应的编辑器进行修改。</span></font></p>
<img src ="http://www.cppblog.com/bobokids/aggbug/65659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bobokids/" target="_blank">情趣所致</a> 2008-11-01 00:35 <a href="http://www.cppblog.com/bobokids/archive/2008/11/01/65659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PC com 串口通讯--基于api函数编写串口通信程序简介</title><link>http://www.cppblog.com/bobokids/archive/2008/10/31/65610.html</link><dc:creator>情趣所致</dc:creator><author>情趣所致</author><pubDate>Fri, 31 Oct 2008 03:52:00 GMT</pubDate><guid>http://www.cppblog.com/bobokids/archive/2008/10/31/65610.html</guid><wfw:comment>http://www.cppblog.com/bobokids/comments/65610.html</wfw:comment><comments>http://www.cppblog.com/bobokids/archive/2008/10/31/65610.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bobokids/comments/commentRss/65610.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bobokids/services/trackbacks/65610.html</trackback:ping><description><![CDATA[<div>用于串口通信的函数和结构在Winbase.h头文件中定义。 <br>函数 描述 <br>CreateFile 打开串行口 <br>GetCommState 用指定通信设备的当前控制设置填充设备控制块（DCB结构） <br>SetCommState 按照DCB结构的说明配置通信设备。这个函数重新初始化所有硬件 <br>和控制设备，但不清空I/O队列 <br>GetCommTimeouts 获得指定通信设备上所有读/写操作的超时参数 <br>SetCommTimeouts 设置指定通信设备上所有读/写操作的超时参数 <br>WriteFile 向串行口写数据，这样将把数据传送给串行连接另一端的设备 <br>ReadFile 从串行口读数据，这样将从串行连接另一端的设备接收数据 <br>SetCommMask 指定为通信设备监视的一组事件 <br>GetCommMask 获得指定通信设备的事件掩码值 <br>WaitCommEvent 等待指定通信设备的事件的发生。WaitCommEvent函数监视的事件 <br>包含在与设备句柄相关联的事件掩码中 <br>EscapeCommFunction 指导指定通信设备执行扩展功能。通常用于将串行口设置为IR模式 <br>ClearCommBreak 恢复指定通信设备的字符传输，并设置传输线路为不可中断状态 <br>ClearCommError 获得通信错误数据，并报告指定通信设备的当前状态 <br><br>打开端口 <br>CreateFile函数用于打开串行口，因为硬件供应商和设备驱动程序开发者可以随意命名端口，所以应用程序应该列出所有可用端口，从而使用户能够指定要打开的端口。如果端口不存在，则CreateFile函数返回ERROR_FILE_NOT_FOUND，而且应该通知用户端口不可用。 <br>打开串行口 <br>1 在第一个参数lpzPortName指向的通信口后插入一个冒号。例如，指定&#8220;COM1：&#8221;为通信端口。 <br>2 指定dwShareMode参数为0。通信端口不能像文件一样被共享。 <br>3 在dwCreationDisposition参数中指定OPEN_EXISTING。这个标志是必须的。 <br>4 指定dwFlagsAndAttributes参数为0。Windows CE只支持非重叠I/0. <br>下面的代码段说明了如何打开串行通信端口。 <br>hPort=CreateFile(lpszPortName, //指出通信端口 <br>GENERIC_READ|GENERIC_WRITE, //读写模式 <br>0， //共享模式 <br>NULL, //安全属性 <br>OPEN_EXISTING, //如何打开服务端口 <br>0, //端口属性 <br>NULL); //端口属性句柄的拷贝 <br>配置串行口 <br>打开串行口后，一般情况下，应用程序需要改变缺省设置。用GetCommState函数可以获得缺省设置，用SetCommState函数可以设置新的端口设置。 <br>另外，端口配置还包括用COMMTIMEOUTS结构设置读/写操作的超时值。当发生超时时，ReadFile或WriteFile函数返回成功传输的具体字符数。 <br>配置串行口 <br>DCB PortDCB; <br>PortDCB.DCBlength=sizeof(DCB); <br>GetCommState(hPort,&amp;PortDCB); <br><br>PortDCB.BaudRate=9600; //波特率 <br>PortDCB.fBinary=TRUE; //只支持二进制串行传输模式 <br>PortDCB.fParity=TRUE; //启用奇偶校验 <br>PortDCB.fOutxCtsFlow=FALSE; //TRUE是由CTS线来控制端口的输出 <br>PortDCB.fOutxDsrFlow=FALSE; //TRUE是由DSR线来控制端口的输出 <br>PortDCB.fDtrControl=DTR_CONTROL_ENABLE; //DTR_CONTROL_DISABLE: <br>禁用DTR（Data Terminal Ready）线并保持此状态； <br>DTR_CONTROL_ENABLE; <br>启用DTR（Data Terminal Ready）线 <br>DTR_CONTROL_HANDSHAKE <br>根据接收缓冲区数据的数量告诉串行驱动程序切换DTR线状态 <br>PortDCB.fDsrSensitivity=FALSE; //TRUE为端口将忽略任何输入的字节，除非端口DSR线被启用 <br>PortDCB.fTXContinueOnXoff=TRUE; //TRUE为如接收缓冲区已满且驱动程序已传送XOFF字符， <br>将使驱动程序停止传输字符 <br>PortDCB.fOutX=FALSE; //TRUE为指定XON/XOFF控制被用于控制串行输出 <br>PortDCB.fInX=FALSE; //TRUE为指定XON/XOFF控制由输入串行流使用 <br>PortDCB.fErrorChar=FALSE; //Windows CE串行驱动程序默认忽略该字段 <br>PortDCB.fNull=FALSE; //TRUE为使串行驱动程序忽略接收到的空字节 <br>PortDCB.fRtsControl=RTS_CONTROL_ENABLE; //RTS_CONTROL_DISABLE表示当端口打开时RTS(Request and Send)行 <br>将禁用 <br>//RTS_CONTROL_ENABLE表示当端口打开时RTS行将启用 <br>//RTS_CONTROL_HANDSHAKE表示RTS线由驱动程序控制，输入缓冲区 <br>不到半满，则RTS线将被启用，否则将被禁用 <br>//RTS_CONTROL_TOGGLE表示如果在输出缓冲区有字节要被传输，则 <br>驱动程序将启用RTS线，否则将禁用该线 <br>PortDCB.fAbortOnError=FALSE; //出现读/写错误并不终止 <br>PortDCB.ByteSize=8; //指定每字节的位数 <br>PortDCB.Parity=NOPARITY; //奇偶字段，EVENPARITY、MARKPARITY、NOPARITY、ODDPARITY、SPACERITY <br>PortDCB.StopBits=ONESTOPBIT; //停止位，每字节一位（ONESTOPBIT）、一位半（ONE5STOPBITS）、 <br>两位（TWOSTOPBITS）。 <br>if(!SetCommState(hPort,&amp;PortDCB)) <br>{ <br>MessageBox(hMainWnd,TEXT("Unable to configure the serial port"),TEXT("Error"),MB_OK); <br>dwError=GetLastError(); <br>return FALSE; <br>} <br><br>配置超时值 <br>每次打开通信端口时应用程序都必须用COMMTIMEOUTS结构设置通信超时值。如果不配置这个结构，则端口使用驱动程序提供的缺省超时值，或者使用上一个通信应用程序的超时值。通过假定特殊的与实际设置不同的超时设置，应用程序可以执行永远不能完成的读/写操作，或者执行完成过于频繁的读/写操作。 <br>当读/写操作发生超时时，操作结束。而且ReadFile和WriteFile函数并不返回错误值。若想确定某个操作是否发生了超时，可以验证实际传输的字节数是否小于请求的字节数。例如，如果ReadFile函数返回TRUE，但读的字节数小于请求的字节数，则这个操作发生了超时。 <br>配置串行口的超时值 <br>1 调用GetCommTimeouts函数或者手工设置成员来初始化COMMTIMEOUTS结构。 <br>2 用ReadIntervalTimeout成员指定在不发生超时的情况下两个字符间允许经过的最大毫秒数。 <br>3 用ReadTotalTimeoutMultiplier成员指定读超时乘子。对于每个读操作，这个乘子被乘以读操作期望接收到的字节数。 <br>4 用ReadTotalTimeoutConstant成员指定读超时常数。这个成员表示的毫秒数被加到读取的总字节数与 ReadTotalTimeoutMultiplier的乘积上。最后得到的结果是读操作发生超时前必须经过的毫秒数。 <br>5 用WriteTotalTimeoutMultiplier成员指定写超时乘子。对于每个写操作，这个乘子被乘以写操作期望接收的字节数。 <br>6 用WriteTotalTimeoutConstant成员指定写超时常数。这个成员表示的毫秒数被加到总字节数与WriteTotalTimeoutMultiplier的 乘积上。最后得到的结果是写操作发生超时前必须经过的毫秒数。 <br>7 调用SetCommTimeouts函数激活端口超时设置。 <br>为了有助于多任务处理，通常需要配置COMMTIMEOUTS结构，以便ReadFile函数能够立即返回读到的字符。要做到这一点，可以设置ReadIntervalTimeout为MAXWORD，设置ReadTotalTimeoutMultiplier和ReadTotalTimeoutMultiplier为0。 <br><br>写串行口 <br>WriteFile函数通过串行连接向另一台设备传输数据。调用这个函数之前，应用程序必须打开和配置串行口。 <br>因为Windows CE不支持重叠I/O（也称为异步I/O），所以主线程或者任何创建窗口的线程都不应该试图向串行口写大量数据。这样的线程将被阻塞，因而不能管理消息队列。应用程序可以通过创建多个线程处理读/写操作以模拟重叠I/O。为了协调多个线程，应用程序可以调用WaitCommEvent函数阻塞线程，直至发生特定的通信事件。 <br>写串行口 <br>1 用CreateFile函数返回的句柄。 <br>2 用lpBuffer参数指定要写的数据的指针。这一数据通常是二进制数据或者字符数据。 <br>3 用nNumberOfBytesToWrite参数指定要写的字符数。对于基于Windows CE的设备，通常写一个字符，因为应用程序必须将Unicode 字符转换为ASCII字符，以便将文本传输到串行连接另一端的设备。 <br>4 用lpNumberOfBytesWritten参数指定实际写的字节数的指针。WriteFile函数填充这个变量，以便应用程序能够确定数据是否已 被传输。 <br>5 lpOverlapped参数必须是NULL。 <br>读串行口 <br>ReadFile函数从串行连接另一端的设备获取数据。参数与WriteFile相同。 <br>通常情况下，读操作是一个独立的线程，他总是随时准备处理到达串行口的数据。通信事件通知读线程串行口有数据可读。读线程通常一次读一个字节（每读一个字节调用一次ReadFile函数），直至读完所有数据，然后读线程等待下一个通信事件。 <br><br>使用通信事件 <br>通信事件是当发生重要事件时Windows CE向应用程序发送的通知：应用程序可以用WaitCommEvent函数阻塞线程，直至特定事件发生；用SetCommMask函数可以指定继续处理前必须发生的事件。如果指定了多个事件，则任何一个指定事件的发生将导致WaitCommEvent函数返回。 <br>例如，这种机制使应用程序能够知道数据何时到达串行口。通过等待表示数据到达的通信事件，应用程序可以避免因调用ReadFile函数等待数据到达而阻塞串行口。只有当有数据可读时才应该调用ReadFile函数。 <br>事件 描述 <br>EV_BREAK 输入中发生中断 <br>EV_CTS CTS信号状态发生变化 <br>EV_DSR DSR信号状态发生变化 <br>EV_ERR 发生线路状态错误，线路状态错误包括CE_FRAME,CE_OVERRUN和CE_RXPARITY <br>EV_RING 检测到振铃指示 <br>EV_RLSD 接收线路信号检测的信号状态发生变化 <br>EV_RXCHAR 接收到字符，并置于输入缓冲区中 <br>EV_RXFLAG 接收到事件字符，并置于输入缓冲区中 <br>EV_TXEMPTY 输出缓冲区中的最后一个字符已被发送 <br><br>使用通信事件 <br>1 调用SetCommMask函数指定要查找的事件。 <br>2 调用WaitCommEvent函数，并指定导致这个函数返回的事件。当应用程序指定多个事件时，lpEvtMask参数指向表示导致 WaitCommEvent函数返回的事件的变量。 <br>3 WaitCommEvent函数返回后，循环调用ReadFile函数，直至读完所有接收到的数据。 <br>4 再次调用SetCommMask函数，指定要查找的事件。 <br>SetCommMask函数通常是应用程序在监视串行口和读数据的循环中第一个调用的函数。下面的代码说明了如何将通信事件用于这个目的。 <br>BYTE Byte; <br>DWORD dwBytesTransferred; <br><br>SetCommMask(hPort,EV_RXCHAR|EV_CTS|EV_DSR|EV_RLSD|EV_RING); <br>while(hPort!=INVALID_HANDLE_VALUE) <br>{ <br>WaitCommEvent(hPort,&amp;dwCommModemStatus,0); <br>SetCommMask(hPort,EV_RXCHAR|EV_CTS|EV_DSR|EV_RING); <br>if(dwCommModemStatus &amp; EV_RXCHAR) <br>{ <br>do <br>{ <br>ReadFile(hPort,&amp;Byte,1,&amp;dwBytesTransferred,0); <br>if(dwBytesTransferred==1) <br>ProcessChar(Byte); <br>}while(dwBytesTransferred==1); <br>} <br>} <br><br>最后关闭串行口 <br>CloseHandle(hPort);</ca></div>
<img src ="http://www.cppblog.com/bobokids/aggbug/65610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bobokids/" target="_blank">情趣所致</a> 2008-10-31 11:52 <a href="http://www.cppblog.com/bobokids/archive/2008/10/31/65610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>长时间运行，“获取所需资源失败”报错BUG调试</title><link>http://www.cppblog.com/bobokids/archive/2008/10/22/64707.html</link><dc:creator>情趣所致</dc:creator><author>情趣所致</author><pubDate>Wed, 22 Oct 2008 09:20:00 GMT</pubDate><guid>http://www.cppblog.com/bobokids/archive/2008/10/22/64707.html</guid><wfw:comment>http://www.cppblog.com/bobokids/comments/64707.html</wfw:comment><comments>http://www.cppblog.com/bobokids/archive/2008/10/22/64707.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bobokids/comments/commentRss/64707.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bobokids/services/trackbacks/64707.html</trackback:ping><description><![CDATA[<span style="FONT-FAMILY: 新宋体">软件中有大量的鼠标交互过程，程序运行一段时间后，出现&#8220;获取所需资源失败&#8221;故障退出程序。<br><br>开始估计是程序界面修改时资源ID不匹配所导致的，经过详对比**.rc文件，没有找到答案。无意间发现程序所占内存极大，进一步发现程序初始化完成后所占内存较小，程序中有内存泄露之处。运行程序、操作发现鼠标移动时内存急速增长。调试发现在View之OnMouseMove()中 <br>CDC *pDC=GetDC();处是导致内存增长的原因。在OnMouseMove()结束处加入ReleaseDC(pDC); 问题解决。（魔鬼都在细节里哈）</span> 
<img src ="http://www.cppblog.com/bobokids/aggbug/64707.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bobokids/" target="_blank">情趣所致</a> 2008-10-22 17:20 <a href="http://www.cppblog.com/bobokids/archive/2008/10/22/64707.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>About BCGControlBar Library (v. 9.56) - 学习。  将融合到MS2008中</title><link>http://www.cppblog.com/bobokids/archive/2008/10/21/64553.html</link><dc:creator>情趣所致</dc:creator><author>情趣所致</author><pubDate>Mon, 20 Oct 2008 16:12:00 GMT</pubDate><guid>http://www.cppblog.com/bobokids/archive/2008/10/21/64553.html</guid><wfw:comment>http://www.cppblog.com/bobokids/comments/64553.html</wfw:comment><comments>http://www.cppblog.com/bobokids/archive/2008/10/21/64553.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bobokids/comments/commentRss/64553.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bobokids/services/trackbacks/64553.html</trackback:ping><description><![CDATA[<strong style="COLOR: red">十分漂亮，方变得界面库。<br><br></strong><a href="http://www.bcgsoft.com/samples/Screeshots/BCGPGridExample.jpg" target=_blank><img height=200 src="http://www.bcgsoft.com/samples/Screeshots/BCGPGridExample_s.jpg" width=183 align=top border=0></a><a href="http://www.bcgsoft.com/samples/Screeshots/DrawCli.jpg" target=_blank><img height=257 src="http://www.bcgsoft.com/samples/Screeshots/DrawCli_s.jpg" width=183 border=0></a><br><br><a href="http://www.bcgsoft.com/samples/Screeshots/reportdemo.jpg" target=_blank><img src="http://www.bcgsoft.com/samples/Screeshots/reportdemo_s.jpg" border=0></a><a href="http://www.bcgsoft.com/samples/Screeshots/BCGPMSOffice2007Demo.jpg" target=_blank><img src="http://www.bcgsoft.com/samples/Screeshots/BCGPMSOffice2007Demo_s.jpg" border=0></a>
<img src ="http://www.cppblog.com/bobokids/aggbug/64553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bobokids/" target="_blank">情趣所致</a> 2008-10-21 00:12 <a href="http://www.cppblog.com/bobokids/archive/2008/10/21/64553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DShowLib与COM的冲突</title><link>http://www.cppblog.com/bobokids/archive/2008/10/15/64051.html</link><dc:creator>情趣所致</dc:creator><author>情趣所致</author><pubDate>Wed, 15 Oct 2008 11:16:00 GMT</pubDate><guid>http://www.cppblog.com/bobokids/archive/2008/10/15/64051.html</guid><wfw:comment>http://www.cppblog.com/bobokids/comments/64051.html</wfw:comment><comments>http://www.cppblog.com/bobokids/archive/2008/10/15/64051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bobokids/comments/commentRss/64051.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bobokids/services/trackbacks/64051.html</trackback:ping><description><![CDATA[DShowLib是IMAGE CONTROL提供的1394接口相机开发库。在使用该库时出现了与COM控件（比如：WEB控件）的冲突，OLE初始化失败，导致所有基于COM技术的控件无法使用，出现运行时错误（控件窗口创建失败）。调试分析结果为DShowLib的initial过程其实也是OLE的初始化，但其修改了一些设置导致其它COM控件无法使用。<br><br>解决办法：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 优先初始化OLE，将DShowLib的initial放在后边，等所有其它COM控件创建完成后再进行DShowLib之grabber等的创建。这样既可以避免如上所述之问题。<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span>&nbsp;<span style="COLOR: #000000">DShowLib::Grabber&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p_Grabber;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">必须定义成指针</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;2</span>&nbsp;<span style="COLOR: #008000"></span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">WinApp&nbsp;theApp;<br></span><span style="COLOR: #008080">&nbsp;3</span>&nbsp;<span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;4</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;C</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">WinApp::Initialize()<br></span><span style="COLOR: #008080">&nbsp;5</span>&nbsp;<span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;6</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;7</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">AfxOleInit())<br></span><span style="COLOR: #008080">&nbsp;8</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br></span><span style="COLOR: #008080">&nbsp;9</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">DShowLib::initial(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">))<br></span><span style="COLOR: #008080">10</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br></span><span style="COLOR: #008080">11</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//<br></span><span style="COLOR: #008080">12</span>&nbsp;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;p_Grabber</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;DShowLib::Grabber();<br></span><span style="COLOR: #008080">13</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//<br></span><span style="COLOR: #008080">14</span>&nbsp;<span style="COLOR: #008000"></span><span style="COLOR: #000000">}</span></div>
<img src ="http://www.cppblog.com/bobokids/aggbug/64051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bobokids/" target="_blank">情趣所致</a> 2008-10-15 19:16 <a href="http://www.cppblog.com/bobokids/archive/2008/10/15/64051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>