VC
文章平均质量分 62
LiuYinChina
多年 VC++ 经验,擅长模板、调试
展开
-
保存 Bitmap
#include void BuildInfoHeader(LONG lWidth, LONG lHeight, BITMAPINFOHEADER &bitmapInfoHeader){ LONG lWidthStep = (((lWidth * 24) + 31) & (~31)) / 8; bitmapInfoHeader.biSize = sizeof(BITMAPINFOH原创 2015-07-28 22:34:13 · 1478 阅读 · 0 评论 -
使用非模态对话框的小技巧
使用非模态对话框的小技巧作者:刘胤工作上有用到非模态对话框,但是使用上有如下麻烦,所有者拥有一个非模态对话框指针,非模态对话框在关闭的时候要设置这个指针为空,这样一来,非模态对话框就必须"知道"所有者并且实现了这样的非模态对话框,就不能让它在栈上创建(因为是 delete this),也不能一次创建多个非模态对话框(当然,这种情况很少)。如果把非模态对话框声明为 CNonModal原创 2008-01-23 23:56:00 · 1015 阅读 · 0 评论 -
could not create /tmp
通常Cygwin的安装都是由Setup程序完成在线或离线安装。如果没有Setup程序,直接拷贝整个目录安装的话,就会出现不能正常运行的问题。通常会提示:bash.exe: warning: could not create /tmp!导致这一问题的原因是Cygwin不能正常挂载根文件系统 /Cygwin启动时,从注册表读取根文件系统挂载信息。该信息位于[HKEY_CURRENT_USE转载 2013-06-15 17:47:55 · 4008 阅读 · 1 评论 -
error LNK2005: already defined in libcmt.lib
链接时加入参数 /FORCE:MULTIPLE原创 2013-06-08 13:12:33 · 755 阅读 · 0 评论 -
VC 中的 EditBox 自动滚动到最后一行
CEdit *pEdit = (CEdit *) GetDlgItem(IDC_EDT_TEXT);pEdit->LineScroll(pEdit->GetLineCount(), 0);转载 2013-03-04 12:53:05 · 2425 阅读 · 0 评论 -
位图四字节对齐问题
每行像素字节数计算方法该算法为:biWidthBytes = (biWidth * biBitCount + 31) / 32 * 4biBitCount 为位图位宽,32位BMP,位宽为32、24位BMP位宽为23、256色位图位宽为8、纯黑白位图位宽为1、等等。这是一种对齐算法,对于BMP等位图来说,要求是4字节对齐,即每行字节数必须为4的整数倍。因为8bit等于1Byte,同转载 2013-03-03 18:24:44 · 1869 阅读 · 0 评论 -
COM Utility
COM 工具类,谁用谁知道!#ifndef COMUtility_H#define COMUtility_H ////////////////////////////////////////////////////////////////////////// #include /////////////////////////////////////////////////原创 2013-02-18 22:51:57 · 719 阅读 · 0 评论 -
Utility Filter
Utility Filter,谁用谁知道!#ifndef UtilityFilter_H#define UtilityFilter_H ////////////////////////////////////////////////////////////////////////// #include ////////////////////////////////////原创 2013-02-18 22:53:20 · 665 阅读 · 0 评论 -
DirectShow Utility
DirectShow 工具类,谁用谁知道!#ifndef DSUtility_H#define DSUtility_H ////////////////////////////////////////////////////////////////////////// #include #include #include ////////////////////////原创 2013-02-18 22:49:35 · 753 阅读 · 0 评论 -
浅析:setsockopt()改善socket网络程序的健壮性
1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(B转载 2013-02-06 13:12:31 · 479 阅读 · 0 评论 -
我的组件之HtmlCtrl
前一篇介绍了 Thread,这里再演示一下 OwnerPolicy 的妙用。以下是我的 HtmlCtrl 类(VS2005 及以上版本)。#ifndef HtmlCtrl_H#define HtmlCtrl_H//////////////////////////////////////////////////////////////////////////#include #i原创 2013-01-31 15:40:19 · 1449 阅读 · 0 评论 -
自己写远程控制软件之隐藏界面
对于服务器界面的隐藏,有很多种的办法,比如你用 Win32 API 写程序,ATL/MFC 程序也可以不用Dialog(这个不用我多说吧),甚至也可以写成 Service,这个我没机会也懒得学习,于是我用了我认为最简单也最方便的办法--写一个 Console 程序,吃惊吧,Console不是有个黑黑的界面吗?别急用下面这招一切都消失得无影无踪。在 cpp 里加上这样一句:#prag原创 2013-01-31 12:32:41 · 4942 阅读 · 1 评论 -
设置线程名称 - SetThreadName
以下为微软的"设置线程名称"代码,其利用 Windows 平台特有的 0x406D1388 异常设置线程名称,在 Windows 平台的 Debug 模式下都启作用(包括 VC环境和WinDbg),对于其他平台无效。//// Usage: SetThreadName (-1, "MainThread");//typedef struct tagTHREADNAME_INFO{ DWORD原创 2008-09-20 10:45:00 · 7006 阅读 · 0 评论 -
如何禁用HTML页面的上下文菜单
适用版本 VS2005.#ifndef HtmlCtrl_H#define HtmlCtrl_H//////////////////////////////////////////////////////////////////////////#include #include #include ////////////////////////////////////////原创 2008-01-23 23:52:00 · 2428 阅读 · 2 评论 -
The __if_exists Statement
The __if_exists Statement__if_exists allows you to conditionally include code depending on whether the specified symbol exists.__if_exists ( variable ) { statements }where:转载 2014-12-03 14:09:46 · 971 阅读 · 0 评论 -
简单的线程类
发布点代码// --------------------------------------------------------------// // Copyright (C) 2009 - All Rights Reserved.// // Author: LiuYin// File: Thread// Version: 1.0// Date: 2009-8-10原创 2014-09-13 12:31:53 · 609 阅读 · 0 评论 -
MediaXtreme
2014-09-05,开始,MediaXTreme工程.原创 2014-09-05 17:41:27 · 603 阅读 · 0 评论 -
读取控制台输出
#include #include //////////////////////////////////////////////////////////////////////////template BOOL ShellCommand(LPSTR lpszCmdLine, CallbackT funCallback, DWORD dwContext){ STARTUPINFOA原创 2014-09-18 14:45:32 · 941 阅读 · 0 评论 -
RTP发送H264
const uint8_t * FindNALHead(const uint8_t *lpStart, size_t nLength){ const uint8_t *lpBeg= lpStart + 0; const uint8_t *lpEnd= lpStart + nLength; uint32_t lValue = 0; for (; lpBeg != lpEnd; ++lpB原创 2014-04-09 11:38:08 · 3581 阅读 · 0 评论 -
判断大小端
#include //////////////////////////////////////////////////////////////////////////int main(){ int value = 0x12345678; char *byte = (char *) &value; if (0x78 == *byte) { printf("little endia转载 2014-05-12 00:58:15 · 593 阅读 · 0 评论 -
【流媒体】jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译
【流媒體】jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译SkySeraph Apr 7th 2012Email:zgzhaobo@gmail.com QQ:452728574一、JRTPLIB简介 老外用C++编写的开源RTP协议库,用来进行实时数据传输,可以运行在 Windows、Linux、 FreeBSD、Solaris、U转载 2014-04-04 09:18:51 · 893 阅读 · 0 评论 -
在浏览器中控制Office这类Ole Servers的打开方式
问题:如何在自己的浏览器中控制Office这类Ole Servers的打开方式? 答案:修改文件夹选项,或修改注册表。 方法1、如下所示,从控制面板中打开“文件夹”选项,在“文件类型”属性页上找到相应的文件后缀名,如“DOC”,点击“高级”按钮,在弹出的“编辑文件类型”对话框中有“在同一窗口中浏览”的选项,如果勾上,则以嵌入IE的方式打开文档,否则在独立窗口中打开。转载 2014-02-13 11:11:46 · 1413 阅读 · 0 评论 -
调试技巧
<br />Visual C++ 的 C 运行时刻函数库标识模板<br />0xCD 已经分配的数据(alloCated Data)<br />0xDD 已经释放的数据(Deleted Data)<br />0xFD 被保护的数据(Fence Data)<br />Visual C++ 的 C 运行时刻函数库内存块类型标识符<br />_NORMAL_BLOCK 由程序直接分配的内存<br />_CLIENT_BLOCK 由程序直接分配的内存,可以通过内存调试函数对其拥有特殊控原创 2011-04-25 16:34:00 · 4540 阅读 · 0 评论 -
开源 YUVViewer
https://github.com/LiuYinChina/YUVViewer原创 2013-11-22 10:15:14 · 2713 阅读 · 1 评论 -
Thunk 应用
Thunk 应用作者:RobertBaker在网上看到很多 Thunk 的介绍,但是很少有几个实际的 Demo,这里用一个实例说明Thunk的用法。以下是所使用的 Thunk。(CAuxStdThunk, 从网上找的,不知道作者,如有冒犯还请原谅。) // AUX Thunk, 全局函数 -> 类成员函数#pragma pack(push, 1)template cla原创 2008-01-23 23:57:00 · 1491 阅读 · 0 评论 -
我的组件之线程类
上一篇,我说到了 OwnerPolicy 很重要,究竟它有什么样的表现呢?请看下面,Thread 类的实现。// --------------------------------------------------------------// // Copyright (C) 2009 - All Rights Reserved.// // Author: LiuYin// F原创 2013-01-31 15:25:58 · 647 阅读 · 0 评论 -
SoundPlay & SoundRecord
// --------------------------------------------------------------// // Copyright (C) 2009 - All Rights Reserved.// // Author: LiuYin// File: SoundBase// Version: 1.0// Date: 2009-8-10//原创 2013-01-31 14:39:33 · 1573 阅读 · 1 评论 -
自己写远程控制软件之总览
一直想自己做点什么事情,终于有时间可以写些的软件了。凭心而论,我爱这一行,不过由于各种原因,或多或少的会感受到自己的才能没有被用到,所以我以这样的方式实现我的软件梦。以下便是开发一个简易远程控制程序的历程。稍后我会把代码发布到 CSDN 上。好,进入正题。很明显要实现一个远程控制程序必须有以下功能:一、捕捉屏幕 捕捉屏幕,也就是抓屏,一般有三种方式,分别是原创 2013-01-30 17:58:54 · 7685 阅读 · 3 评论 -
通过 ID 数组设置子窗口的状态
<br />#include <functional>#include <algorithm>using std::bind1st;using std::binary_function;using std::for_each;template <bool bEnable>struct EnableWnd : public binary_function<CWnd *, int, int>{public: int operator()(CWnd *pWnd, i原创 2011-05-27 14:52:00 · 695 阅读 · 0 评论 -
隐藏控制台程序
<br />// Hide your console#include <windows.h>#include <mmsystem.h> #pragma comment(lib, "winmm.lib")#pragma comment(linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"")int main(){ PlaySound("SystemStart", NULL, SND_ALIAS|SND_SYN原创 2011-05-27 14:48:00 · 1414 阅读 · 0 评论 -
DirectDraw 示例
DirectDraw 在显示YUV图像的时候,由于 YUV 格式很多,显示不同格式的YUV图像都要针对不同格式专门写一些代码,这样很麻烦,同时也增加代码量。在网上看了一些 DirectDraw 示例以后,发现都是针对某一种格式的显示。我用最基本的 DirectDraw 显示方法,封装了几种格式的显示方法,我的显示器只支持示例中的 YUV 格式,所以只实现了几种格式,如有朋友还需要显示别的 YUV原创 2010-03-15 10:58:00 · 6316 阅读 · 11 评论 -
枚举系统中的串口
#ifndef EnumPortsEx_H#define EnumPortsEx_H ////////////////////////////////////////////////////////////////////////// #include #include #include //////////////////////////////////////////原创 2010-02-06 11:29:00 · 807 阅读 · 0 评论 -
~_AFX_CTL3D_THREAD 问题的解决
VC6 写 DirectShow 应用的时候,发现程序退出的时候老是在 ~_AFX_CTL3D_THREAD() 崩溃,网上基本没说清楚原因,于是用 VC2005 编译,编译不过,说 new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)delete(void *)" (??3@YAXPAX@Z原创 2009-09-09 12:29:00 · 862 阅读 · 0 评论 -
多线程 Trace
利用线程局部存储保存栈深实现函数间的缩进,输出使用 OutputDebugString API 便于用 DebugView 查看,这样本机和远程(DebugView可远程)都可看到调用栈了。 #ifndef TraceEx_H#define TraceEx_H////////////////////////////////////////////////////////////原创 2009-06-16 11:05:00 · 1312 阅读 · 0 评论 -
判别对象是否动态创建
#ifndef DynamicCreate_H#define DynamicCreate_H ////////////////////////////////////////////////////////////////////////// class DynamicCreate{public: DynamicCreate(); void * operator new(siz原创 2009-06-16 11:01:00 · 672 阅读 · 0 评论 -
ShowPicture
#include #include #include ////////////////////////////////////////////////////////////////////////// #pragma comment(lib, "Shlwapi");HRESULT ShowPicture(LPVOID pImageData, DWORD dwLengt原创 2009-04-29 16:04:00 · 3594 阅读 · 0 评论 -
UDP 多播
#ifndef MulticastSocket_H#define MulticastSocket_H//////////////////////////////////////////////////////////////////////////#include /////////////////////////////////////////////////////////////原创 2009-03-04 09:38:00 · 3637 阅读 · 1 评论 -
UDP广播
发送#include #include ////////////////////////////////////////////////////////////////////////// struct AfxInitSocket{ AfxInitSocket() { WSADATA wsaData; WSAStartup(MAKEWORD(1, 1), &wsaDat原创 2009-02-26 16:00:00 · 1071 阅读 · 0 评论 -
Windows Media Service 嵌入网页的写法
在网页中嵌入Windows Media Player,只需加入如下Html即可 codeBase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,5转载 2011-07-30 11:16:27 · 560 阅读 · 0 评论 -
软件项目成功的秘诀
软件项目成功的秘诀 黄国强 2010-8-61 只做小项目;2 遇到了大项目,先切成小项目;3 每个任务要在一个月内看到结果;4 如果不能在一个月内看到结果,任务需要拆细;5 先做功能性的需求;6 功能性需求太多的话,挑最重要的;7 只做重要的事情转载 2011-10-14 10:53:10 · 479 阅读 · 0 评论