http://blog.sina.com.cn/playeboy[订阅]
个人资料
分类
    内容读取中…
博文

由于经常写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(

这年头玩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

多事件类
在线程中经常要等待多个事件,每次创建很多事件很繁琐,所以写了这个类
你可以为按照事件序号为每个事件定义枚举,这样使用的时候很方便。这个代码能帮到你我很高兴,有什么问题请告诉我。

增加了事件命名,以便在进程间通讯.

增加了计数事件,触发多少次就严格响应多少次,在要求不丢数据的线程中使用.

//////////////////////////////////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地址类

这是一个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){