由于经常写ATL控件,而不能使用MFC,原来写过的位图类用不上,所以做了一些修改可以直接应用到非MFC的WINDOWS编程.
------------CPP--------------------------------
#include 'stdafx.h'
#include 'Lg_Com_Bitmap.h'
#include <assert.h>
#include <direct.h>
//构造
lg_Com_Bitmap::lg_Com_Bitmap()
{
//m_hDrawDib = DrawDibOpen();
memset(&m_bmi,0,sizeof(BITMAPINFO));
m_hBitmap = NULL;
}
//析构
lg_Com_Bitmap::~lg_Com_Bitmap()
{
DeleteObject();
}
void lg_Com_Bitmap::DeleteObject()
{
if(NULL != m_hBitmap)
{
::DeleteObject(m_hBitmap);
m_hBitmap = NULL;
memset(&m_bmi,0,sizeof(BITMAPINFO));
}
}
//DIB 数据 上下翻转
void lg_Com_Bitmap::OW_Rotate(BYTE *data, DWORD scanline, DWORD
height)
{
DWORD length = 0;
BYTE* Be
由于经常写ATL控件,而不能使用MFC,原来写过的位图类用不上,所以做了一些修改可以直接应用到非MFC的WINDOWS编程.
........H
#ifndef _LGLIB_COM_BITMAP_H_
#define _LGLIB_COM_BITMAP_H_
#include <windows.h>
class lg_Com_Bitmap
{
public:
// Constructors
lg_Com_Bitmap();
//bJpegOrBmp TRUE -> JPEG FALSE ->BMP
BOOL GetBMPBuffer(BYTE** pBmpBuf,DWORD &dwBmpLen);
BOOL SaveThis(LPCTSTR fn);
BOOL Save(LPBITMAPINFOHEADER lpIn,LPVOID lpBuf,LPCTSTR
fn);
//将载入的图像,直接画到指定窗口(适合大小)
BOOL Draw(HWND hWnd) const;
//将载入的图像,直接画到指定DC(固定大小)
BOOL Draw(HDC hDC,const int &Width,const int &Height)
const;
BOOL Draw(HDC hDC,LPCRECT pRect) const;
// Implementation
//载入位图的一部分内容
BOOL LoadBitmapWithHeadPart(
几个收藏的VC MACRO 代码(2008-05-07 03:59)
这年头玩MACRO 的不多了......基本上都是老头子了....
Sub AutoArrangeID()
'描述:ID号码自动排序
'方法:在Resource.h中选中开始排序的数字
'例如从#define IDC_BTN1 1000开始 则双击1000然后开始调用此宏
下面的ID会自动依次加一
'必须确保在停止排序的地方有一个空行,否则会一直排下去
Dim doc
set doc = ActiveDocument.Selection
Dim CurrentLine,PreLine
Dim Num
PreLine = ActiveDocument.Selection.CurrentLine
Num = ActiveDocument.Selection
If Len(Num) <= 0 Then
Exit Sub
End if
ActiveDocument.Selection.LineDown
ActiveDocument.Selection.EndOfLine
ActiveDocument.Selection.WordLeft
ActiveDocument.Selection.EndOfLine dsExtend
PreLine = CurrentLine
CurrentLine = ActiveDocument.Selection.CurrentLine
Do Un
代码库之四-多事件(1.1)(2008-04-29 16:13)
多事件类
在线程中经常要等待多个事件,每次创建很多事件很繁琐,所以写了这个类
你可以为按照事件序号为每个事件定义枚举,这样使用的时候很方便。这个代码能帮到你我很高兴,有什么问题请告诉我。
增加了事件命名,以便在进程间通讯.
增加了计数事件,触发多少次就严格响应多少次,在要求不丢数据的线程中使用.
//////////////////////////////////H///////////////////////////////////////////////////////////
#ifndef LGLIB_MULTIEVENT_H
#define LGLIB_MULTIEVENT_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#p
读取环境变量片段(2008-04-20 19:50)
环境变量研究备忘,编译环境VC6 WINXP
一,取得单独 某环境变量
const int BigValue = 1024*4;
char tcsCmd[BigValue];
GetEnvironmentVariable(_T('COMSPEC'), tcsCmd,
BigValue);
TRACE('COMSPEC-%s\n',tcsCmd);
二,查看所有环境变量
const int BigValue = 1024*4;
char tcsCmd[BigValue];
LPTSTR
lpszVariable;
LPVOID lpvEnv;
lpvEnv =
GetEnvironmentStrings();
int nIdx = 0;
for(lpszVariable = (LPTSTR) lpvEnv; *lpszVariable;
lpszVariable++)
{
while(*lpszVariable)
tcsCmd[nIdx++] = *lpszVariable++;
tcsCmd[nIdx] = 0;
TRACE('VAR = %s\n',tcsCmd);
nIdx = 0;
}
FreeEnvironmentStrings((LPTSTR) lpvEnv)
lg_Bitmap* PASCAL lg_Bitmap::FromHandle(HBITMAP hBitmap)
{
return (lg_Bitmap*) CGdiObject::FromHandle(hBitmap);
}
//构造
lg_Bitmap::lg_Bitmap()
{
m_hDrawDib = DrawDibOpen();
::ZeroMemory(&m_bmi,sizeof(BITMAPINFO));
}
//析构
lg_Bitmap::~lg_Bitmap()
{
CGdiObject::DeleteObject();
DrawDibClose(m_hDrawDib);
}
//DIB 数据 上下翻转
void lg_Bitmap::OW_Rotate(BYTE *data/**//*纯DIB数据*/, DWORD
scanline/**//*扫描行*/, DWORD height/**//*DIB 高度*/)
{
DWORD length = 0;
BYTE* Begin_line_data = new BYTE[scanline];
for(int i=0;(unsigned)i<height/2;i++){
memcpy(Begin_line_data,data + scanline*i,scanline);
memcpy(data + scanline*i,data +
(height-i-1)*scanline,scanline);
lg_Bitmap* PASCAL lg_Bitmap::FromHandle(HBITMAP hBitmap)
{
return (lg_Bitmap*) CGdiObject::FromHandle(hBitmap);
}
//构造
lg_Bitmap::lg_Bitmap()
{
m_hDrawDib = DrawDibOpen();
::ZeroMemory(&m_bmi,sizeof(BITMAPINFO));
}
//析构
lg_Bitmap::~lg_Bitmap()
{
CGdiObject::DeleteObject();
DrawDibClose(m_hDrawDib);
}
//DIB 数据 上下翻转
void lg_Bitmap::OW_Rotate(BYTE *data/**//*纯DIB数据*/, DWORD
scanline/**//*扫描行*/, DWORD height/**//*DIB 高度*/)
{
DWORD length = 0;
BYTE* Begin_line_data = new BYTE[scanline];
for(int i=0;(unsigned)i<height/2;i++){
memcpy(Begin_line_data,data + scanline*i,scanline);
memcpy(data + scanline*i,data +
(height-i-1)*scanline,scanline);
///////////////////////////CPP//////////////////////////////
#include 'stdafx.h'
#include 'Lg_Bitmap.h'
#include <memory.h>
#pragma comment(lib, 'ijl15.lib')
#pragma comment(lib,'vfw32.lib')
namespace lglib
{
IMPLEMENT_DYNAMIC(lg_Bitmap,CGdiObject);
//----------------------------------------------------------
// An example using the Intel(R) JPEG Library:
// -- 编码 DIB 为 JPEG 缓冲.
//----------------------------------------------------------
BOOL lg_Bitmap::EncodeToJPEGBuffer(
BYTE* lpRgbBuffer,
int32 nWidth,
int32 nHeight,
BYTE** lppJpgBuffer,
DWORD* lpdwJpgBufferSize)
{
BOOL bres;
IJLERR jerr;
DWORD dwRgbBufferSize;
BYTE* lpTemp;
上次的位图类,比较基本这回又增加了一些功能,从一幅图(BMP或者JPEG)中取得指定矩形区域,拼合(左右,上下),等功能,希望能帮到你,依旧希望大家的支持,能指出其中的BUG,谢谢。
//////////////////////////////////H////////////////////////////////////////////
[code] #ifndef _LGBITMAP_H_ #define _LGBITMAP_H_ #include 'ijl.h'
#include namespace lglib { class __LGLIB__ lg_Bitmap : public
CGdiObject { DECLARE_DYNAMIC(lg_Bitmap) public:
//将载入的图像,直接画到指定窗口(适合大小) BOOL Draw(HWND hWnd);
//将载入的图像,直接画到指定DC(固定大小) void Draw(HDC hDC,int Width,int Height); //
Constructors lg_Bitmap(); // Implementation //检查位图头是否合法
LPBITMAPFILEHEADER CheckBmpFileHead(BYTE* pBuf,uint32 dwLen);
//载入位图的一部分内容 BOOL LoadBitmapWithHeadPart(BYTE* lpRgbBuffer,uint32
dwBufLen,RECT rectPart,int32 nExten = 0); //根据输入图像调整矩形位置 BOOL
AdjustRect(RECT Rect,RECT &AdRect,int32 nWidth,int32
nHeight,int32 nExten = 0); //载入位图的一部分内容(纯数据) BOOL
LoadBitmapNoHeadPart(BYTE* l
代码库之十五-IPV4地址类(2006-12-17 03:57)
代码库之十五-IPV4地址类
这是一个IPV4协议地址族封装,具体也不多说了,看代码就知道了,觉得乱的朋友拷贝下来,贴到VC中看就好了,看到有的朋友贴代码还有折叠着色功能,不知道是用的什么工具,甚是羡慕,知道的告诉我一下吧,大家的支持是我的动力.
/////////////////////////////////////////H//////////////////////////////////////////////////////
#ifndef LGLIB_SOCKETADDRESS_H
#define LGLIB_SOCKETADDRESS_H
#include <winsock2.h>
#include'lg_SyncLock.h'
#include<string>
#include<vector>
//---------------------------------------------------------------------------
using namespace std;
namespace lglib {
class __LGLIB__ lg_SocketEnv
{
public:
lg_SocketEnv( void ) {
// Startup windows sockets
WSADATA wsaData;
int err;
err = WSAStartup( MAKEWORD( 2, 2 ), &wsaData );
if (err==0){