⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dibtcl.cpp

📁 G729语音压缩的很好的离子和示范 大家来下载吧
💻 CPP
字号:
#include "DIBtcl.h"
#include <tkwinint.h>


CDibTcl::CDibTcl(const CString name,Tcl_Interp* interp,BOOL &ok,int w,int h) {
	tclname=name;
	tclinterp=interp;
	void * pthn=(void *)LPCSTR(tclname);
	tkwin=Tk_CreateWindowFromPath(tclinterp, Tk_MainWindow(interp),(char *)pthn, NULL);
	Tk_GeometryRequest(tkwin, w, h);
	Tk_MakeWindowExist(tkwin);
	tk_hwnd=Tk_GetHWND(Tk_WindowId(tkwin));
	_hdcDisplay = GetWindowDC(tk_hwnd);
	ok=tk_hwnd?TRUE:FALSE;
	AddDib(this);
	_selfInit();
	ok&=Open();
}

CDibTcl::~CDibTcl() {
	if (_open) {
		Close();
	}
	RemoveDib(this);
}

void CDibTcl::_selfInit() {
	_hdrawdib=0;
	_open=FALSE;
}
BOOL CDibTcl::Close() {
	_open=FALSE;
	if (_hdrawdib)
		return DrawDibClose(_hdrawdib);
	else
		return FALSE;
}
BOOL CDibTcl::Open() {
	if (_open) {
		Close();
	}
	_hdrawdib=DrawDibOpen();
	if (_hdrawdib) {
		_open=TRUE;
	} else {
		_open=FALSE;
	}
	return _open;
}

CDibTcl::cell*	CDibTcl::_allDIBs=0;
CDibTcl *CDibTcl::FindDib(const CString tclname) {
	cell *c=_allDIBs;
	while (c) {
		if (c->dib->tclname==tclname) {
			return c->dib;
		}
		c=c->suiv;
	}
	return NULL;
}
void CDibTcl::AddDib(CDibTcl* dib) {
	_allDIBs=new cell(dib,_allDIBs);
}
void CDibTcl::RemoveDib(const CDibTcl *dib) {
	cell *c=_allDIBs,*p=NULL;
	while (c) {
		if (c->dib==dib) {
			if (p) {
				p->suiv=c->suiv;
			} else {
				_allDIBs=c->suiv;
			}
			delete c;
			return;
		}
		p=c;
		c=c->suiv;
	}
}
BOOL CDibTcl::BeginDIB(LPBITMAPINFO lpb,UINT wFlags) {
	if (_open&&lpb) {
		lpbi=lpb->bmiHeader;
		bmpinfo=*lpb;
		return DrawDibBegin(_hdrawdib,_hdcDisplay,Tk_Width(tkwin),Tk_Height(tkwin),&lpbi,
			(UINT)lpbi.biWidth,(UINT)lpbi.biHeight, wFlags);
	} else {
		return FALSE;
	}
}
BOOL CDibTcl::EndDIB() {
	return DrawDibEnd(_hdrawdib);
}
BOOL CDibTcl::DrawDIB(LPVOID lpBits,UINT wFlags) {
	if (_open&&lpBits) {
		return DrawDibDraw(_hdrawdib,_hdcDisplay,0,0,Tk_Width(tkwin),Tk_Height(tkwin),
			&lpbi,lpBits,0,0,(UINT)lpbi.biWidth,(UINT)lpbi.biHeight,wFlags);
	} else {
		return FALSE;
	}
 }
BOOL CDibTcl::Refresh() {
	if (_open) {
		return DrawDibUpdate(_hdrawdib,_hdcDisplay,0,0);
	} else {
		return FALSE;
	}
}
CSize CDibTcl::GetSize() {
	CSize s;
	s.cx=Tk_Width(tkwin);
	s.cy=Tk_Height(tkwin);
	return s;
}
void CDibTcl::SetSize(CSize &s) {
	Tk_ResizeWindow(tkwin, s.cx, s.cy);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -