www.pudn.com > 1.rar > i2elec.cpp


#include "stdafx.h" 
#include "resource.h" 
 
#include "iaspwb.h" 
  
#define INITGUID 
#include  
 
//electronic set ID 
// {2AF2B6EA-DBC4-4662-B04A-7F4DB1AD95B2} 
DEFINE_GUID(CSID_Elec,  
0x2af2b6ea, 0xdbc4, 0x4662, 0xb0, 0x4a, 0x7f, 0x4d, 0xb1, 0xad, 0x95, 0xb2); 
 
INT g_direction; 
 
CI2WBElec::CI2WBElec(INT cid,VOID* pwb) 
{ 
 
m_cid=cid; 
m_csid=CSID_Elec; 
m_state=0; 
 
m_wb=(CI2WBBaseWB *)pwb; 
 
//m_wb->get_LineWidth(&cinfo.m_linewidth); 
cinfo.m_linewidth=1; 
//m_wb->get_LineStyle(&cinfo.m_linestyle); 
cinfo.m_linestyle=0; 
m_wb->get_Color(&cinfo.m_color); 
m_wb->get_BKColor(&cinfo.m_bkcolor); 
m_wb->get_Font(&cinfo.m_font,WB_FONT_ALL); 
 
m_property=0; 
 
switch(cid) 
{ 
case 0: 
  m_type=dtBattery; 
	break; 
case 1: 
  m_type=dtLamp; 
  break; 
case 2: 
  m_type=dtRes; 
  break; 
case 3: 
  m_type=dtKey; 
	break; 
case 4: 
  m_type=dtCap; 
  break; 
case 5: 
  m_type=dtInd; 
  break; 
} 
 
m_name[0]='\0'; 
m_grpname[0]='\0'; 
m_direction=0; 
} 
 
CI2WBElec::~CI2WBElec() 
{ 
} 
 
void CI2WBElec::OnLButtonDown(DWORD fwKeys,SHORT x,SHORT y,HWND hwnd,INT* fend) 
{ 
} 
 
BOOL CI2WBElec::OnLButtonUp(DWORD fwKeys,SHORT x,SHORT y,HWND hwnd,INT* fend) 
{ 
  HDC hdc=GetDC(hwnd); 
	switch(m_type) 
	{ 
	  case dtBattery: 
      paintBattery(hdc,x,y-10); 
      SetRect(&cinfo.m_rect,x,y-10,x+20,y+20-10); 
      *fend=1; 
      break; 
 
	  case dtLamp: 
      paintLamp(hdc,x,y-10); 
      SetRect(&cinfo.m_rect,x,y-10,x+30,y+20-10); 
	    *fend=1; 
	    break; 
 
	  case dtRes: 
      paintRes(hdc,x,y-10); 
      SetRect(&cinfo.m_rect,x,y-10,x+30,y+20-10); 
      *fend=1; 
      break; 
 
	  case dtKey: 
      paintKey(hdc,x,y-10); 
      SetRect(&cinfo.m_rect,x,y-10,x+30,y+20-10); 
      *fend=1; 
      break; 
 
	  case dtCap: 
      paintCap(hdc,x,y-10); 
      SetRect(&cinfo.m_rect,x,y-10,x+20,y+20-10); 
	    *fend=1; 
	    break; 
 
	  case dtInd: 
      paintInd(hdc,x,y-10); 
      SetRect(&cinfo.m_rect,x,y-10,x+30,y+20-10); 
      *fend=1; 
      break; 
       
    default: 
		  throw new I2BaseException(I2E_NOTSUPPORT); 
		  break; 
	} 
  ReleaseDC(hwnd,hdc); 
  return 0; 
} 
 
void CI2WBElec::OnMouseMove(DWORD fwKeys,SHORT x,SHORT y,HWND hwnd,INT* fend) 
{ 
} 
 
void CI2WBElec::OnRButtonDown(DWORD fwKeys,SHORT x,SHORT y,HWND hwnd,INT* fend) 
{ 
} 
 
void CI2WBElec::OnRButtonUp(DWORD fwKeys,SHORT x,SHORT y,HWND hwnd,INT* fend) 
{ 
} 
 
BOOL CI2WBElec::OnLButtonDBLCLK(DWORD fwKeys,SHORT x,SHORT y,HWND hwnd) 
{ 
  m_wb->m_dlgexist=1; 
  CElecProp* dlg; 
  I2Rect r1,r2; 
  _g_i2hresinst=GetModuleHandle("iaspwb.dll"); 
  g_direction=m_direction; 
  dlg=new CElecProp(this); 
  m_wb->m_propdlg=dlg; 
  dlg->showModal(IDD_ELEC_PROP,hwnd); 
  if(dlg->m_pressok==1) 
  { 
    getControlRect(r1); 
    m_direction=g_direction; 
    switch(m_type) 
    { 
      case dtBattery: 
      case dtCap: 
        break; 
      case dtLamp: 
      case dtRes: 
      case dtKey: 
      case dtInd: 
        switch(m_direction) 
        { 
          case 0: 
          case 2: 
            SetRect(&cinfo.m_rect,cinfo.m_rect.left,cinfo.m_rect.top, 
              cinfo.m_rect.left+30,cinfo.m_rect.top+20); 
           break; 
          case 1: 
          case 3: 
            SetRect(&cinfo.m_rect,cinfo.m_rect.left,cinfo.m_rect.top, 
              cinfo.m_rect.left+20,cinfo.m_rect.top+30); 
            break; 
        } 
    } 
    getControlRect(r2); 
    InvalidateRect(hwnd,&r1,TRUE); 
    InvalidateRect(hwnd,&r2,TRUE); 
    m_wb->m_dlgexist=0; 
    m_wb->m_propdlg=NULL; 
    delete dlg; 
    return 0; 
  } 
  delete dlg; 
  return -1; 
} 
 
VOID CI2WBElec::moveTo(INT xoffset,INT yoffset) 
{ 
	cinfo.m_rect.left+=xoffset; 
	cinfo.m_rect.top+=yoffset; 
	cinfo.m_rect.right+=xoffset; 
	cinfo.m_rect.bottom+=yoffset; 
} 
 
VOID CI2WBElec::OnInplaceEditorNeedText(LPWB32FONT pfont,LPSTR* ptext) 
{ 
} 
 
VOID CI2WBElec::OnInplaceEditorReturnText(POINT pos,LPSTR text) 
{ 
} 
 
BOOL CI2WBElec::OnDragFile(LPSTR filename,POINT p,CHAR* ptr,HWND hwnd) 
{ 
  return TRUE; 
} 
 
VOID CI2WBElec::OnChangeData(RECT& rect) 
{ 
} 
 
VOID CI2WBElec::set_Font(WB32FONT* pfont,INT mask) 
{ 
} 
 
VOID CI2WBElec::getControlRect(I2Rect& Value) 
{ 
Value=cinfo.m_rect; 
} 
 
VOID CI2WBElec::paintControl(HDC hdc) 
{ 
switch(m_type) 
{ 
  case dtBattery: 
    paintBattery(hdc,cinfo.m_rect.left,cinfo.m_rect.top); 
    break; 
 
  case dtLamp: 
    paintLamp(hdc,cinfo.m_rect.left,cinfo.m_rect.top); 
    break; 
 
  case dtRes: 
    paintRes(hdc,cinfo.m_rect.left,cinfo.m_rect.top); 
    break; 
 
  case dtKey: 
    paintKey(hdc,cinfo.m_rect.left,cinfo.m_rect.top); 
    break; 
 
  case dtCap: 
    paintCap(hdc,cinfo.m_rect.left,cinfo.m_rect.top); 
    break; 
 
  case dtInd: 
    paintInd(hdc,cinfo.m_rect.left,cinfo.m_rect.top); 
    break; 
 
  default: 
    throw new I2BaseException(I2E_NOTSUPPORT); 
    break; 
} 
} 
 
VOID CI2WBElec::writeToStream(I2MemoryFileStream *stm,BOOL fdata) 
{ 
WB32CONTROLDATA wcd; 
wcd.cid=m_cid; 
wcd.csid=m_csid; 
wcd.len=sizeof(WB32CONTROLATTRIB)+sizeof(INT); 
lstrcpy(wcd.idname,m_name); 
lstrcpy(wcd.idgrpname,m_grpname); 
getControlRect(wcd.rect); 
 
stm->writeFile((CHAR*)&wcd,sizeof(WB32CONTROLDATA)); 
if(fdata) 
{ 
stm->writeFile((CHAR*)&cinfo,sizeof(WB32CONTROLATTRIB)); 
stm->writeFile((CHAR*)&m_direction,sizeof(INT)); 
}//end if(fdata) 
} 
 
VOID CI2WBElec::readFromStream(I2MemoryFileStream *stm,INT len,const I2Rect& r) 
{ 
if(len) 
{ 
  stm->readFile((CHAR*)&cinfo,sizeof(WB32CONTROLATTRIB)); 
  stm->readFile((CHAR*)&m_direction,sizeof(INT)); 
} 
} 
 
VOID CI2WBElec::OnAttribChange(INT type,INT mask,BOOL flocal) 
{ 
if(flocal) 
{ 
  if(type == WBAT_COLOR) 
    m_wb->get_Color(&cinfo.m_color); 
  if(type == WBAT_BKCOLOR) 
	  m_wb->get_BKColor(&cinfo.m_bkcolor); 
 
  if(type == WBAT_FONT) 
	  m_wb->get_Font(&cinfo.m_font,mask); 
} 
} 
 
VOID CI2WBElec::paintBattery(HDC hdc,INT cx,INT cy) 
{ 
HPEN holdpen,hpen; 
hpen=CreatePen(0,1,cinfo.m_color); 
holdpen=(HPEN)SelectObject(hdc,hpen); 
 
SHORT x,y; 
switch(m_direction) 
{ 
  case 0: 
    x=cx+8; 
    y=cy+5; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+8,cy+15); 
 
    x=cx+12; 
    y=cy+2; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+12,cy+18); 
 
    x=cx+0; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+8,cy+10); 
 
    x=cx+12; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+20,cy+10); 
    break; 
 
  case 1: 
    x=cx+5; 
    y=cy+8; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+15,cy+8); 
 
    x=cx+2; 
    y=cy+12; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+18,cy+12); 
 
    x=cx+10; 
    y=cy+0; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+8); 
 
    x=cx+10; 
    y=cy+12; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+20); 
    break; 
 
  case 2: 
    x=cx+8; 
    y=cy+2; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+8,cy+18); 
 
    x=cx+12; 
    y=cy+5; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+12,cy+15); 
 
    x=cx+0; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+8,cy+10); 
 
    x=cx+12; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+20,cy+10); 
    break; 
 
  case 3: 
    x=cx+5; 
    y=cy+12; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+15,cy+12); 
 
    x=cx+2; 
    y=cy+8; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+18,cy+8); 
 
    x=cx+10; 
    y=cy+0; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+8); 
 
    x=cx+10; 
    y=cy+12; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+20); 
    break; 
 
 
} 
SelectObject(hdc,holdpen); 
DeleteObject(hpen); 
} 
 
VOID CI2WBElec::paintLamp(HDC hdc,INT cx,INT cy) 
{ 
HPEN holdpen,hpen; 
hpen=CreatePen(0,1,cinfo.m_color); 
holdpen=(HPEN)SelectObject(hdc,hpen); 
SHORT x,y; 
 
switch(m_direction) 
{ 
  case 0: 
  case 2: 
    Arc(hdc, cx+7,cy+2,cx+23,cy+18,cx+7,8,cx+7,8); 
    x=cx+11; 
    y=cy+6; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+20,cy+15); 
 
    x=cx+11; 
    y=cy+14; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+20,cy+5); 
 
    x=cx+0; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+7,cy+10); 
 
    x=cx+23; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+30,cy+10); 
    break; 
 
  case 1: 
  case 3: 
    Arc(hdc, cx+2,cy+7,cx+18,cy+23,cx+2,8,cx+2,8); 
    x=cx+6; 
    y=cy+11; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+15,cy+20); 
 
    x=cx+14; 
    y=cy+11; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+5,cy+20); 
 
    x=cx+10; 
    y=cy+0; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+7); 
 
    x=cx+10; 
    y=cy+23; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+30); 
    break; 
} 
SelectObject(hdc,holdpen); 
DeleteObject(hpen); 
} 
 
VOID CI2WBElec::paintRes(HDC hdc,INT cx,INT cy) 
{ 
HPEN holdpen,hpen; 
hpen=CreatePen(0,1,cinfo.m_color); 
holdpen=(HPEN)SelectObject(hdc,hpen); 
SHORT x,y; 
switch(m_direction) 
{ 
  case 0: 
  case 2: 
    Rectangle(hdc, cx+6,cy+7,cx+24,cy+14); 
    x=cx+0; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+6,cy+10); 
 
    x=cx+24; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+30,cy+10); 
    break; 
 
  case 1: 
  case 3: 
    Rectangle(hdc, cx+7,cy+6,cx+14,cy+24); 
    x=cx+10; 
    y=cy+0; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+6); 
 
    x=cx+10; 
    y=cy+24; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+30); 
    break; 
 
} 
SelectObject(hdc,holdpen); 
DeleteObject(hpen); 
} 
 
VOID CI2WBElec::paintKey(HDC hdc,INT cx,INT cy) 
{ 
HPEN holdpen,hpen; 
hpen=CreatePen(0,1,cinfo.m_color); 
holdpen=(HPEN)SelectObject(hdc,hpen); 
SHORT x,y; 
switch(m_direction) 
{ 
  case 0: 
  case 2: 
    Arc(hdc, cx+6,cy+8,cx+10,cy+12,cx+6,2,cx+6,2); 
    Arc(hdc, cx+20,cy+8,cx+24,cy+12,cx+20,2,cx+20,2); 
 
    x=cx+0; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+6,cy+10); 
 
    x=cx+24; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+30,cy+10); 
 
    x=cx+8; 
    y=cy+8; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+15,cy+1); 
    break; 
  case 1: 
    Arc(hdc, cx+8,cy+6,cx+12,cy+10,cx+8,2,cx+8,2); 
    Arc(hdc, cx+8,cy+20,cx+12,cy+24,cx+8,2,cx+8,2); 
 
    x=cx+10; 
    y=cy+0; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+6); 
 
    x=cx+10; 
    y=cy+24; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+30); 
 
    x=cx+12; 
    y=cy+8; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+19,cy+15); 
    break; 
 
  case 3: 
    Arc(hdc, cx+8,cy+6,cx+12,cy+10,cx+8,2,cx+8,2); 
    Arc(hdc, cx+8,cy+20,cx+12,cy+24,cx+8,2,cx+8,2); 
 
    x=cx+10; 
    y=cy+0; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+6); 
 
    x=cx+10; 
    y=cy+24; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+30); 
 
    x=cx+8; 
    y=cy+18; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+1,cy+11); 
    break; 
} 
SelectObject(hdc,holdpen); 
DeleteObject(hpen); 
} 
 
VOID CI2WBElec::paintCap(HDC hdc,INT cx,INT cy) 
{ 
HPEN holdpen,hpen; 
hpen=CreatePen(0,1,cinfo.m_color); 
holdpen=(HPEN)SelectObject(hdc,hpen); 
 
SHORT x,y; 
switch(m_direction) 
{ 
  case 0: 
  case 2: 
    x=cx+8; 
    y=cy+2; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+8,cy+18); 
 
    x=cx+12; 
    y=cy+2; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+12,cy+18); 
 
    x=cx+0; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+8,cy+10); 
 
    x=cx+12; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+20,cy+10); 
    break; 
 
  case 1: 
  case 3: 
    x=cx+2; 
    y=cy+8; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+18,cy+8); 
 
    x=cx+2; 
    y=cy+12; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+18,cy+12); 
 
    x=cx+10; 
    y=cy+0; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+8); 
 
    x=cx+10; 
    y=cy+12; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+20); 
    break; 
} 
SelectObject(hdc,holdpen); 
DeleteObject(hpen); 
} 
 
VOID CI2WBElec::paintInd(HDC hdc,INT cx,INT cy) 
{ 
HPEN holdpen,hpen; 
hpen=CreatePen(0,1,cinfo.m_color); 
holdpen=(HPEN)SelectObject(hdc,hpen); 
 
SHORT x,y; 
switch(m_direction) 
{ 
  case 0: 
  case 2: 
    x=cx+0; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+5,cy+10); 
 
    Arc(hdc, cx+5,cy+5,cx+15,cy+15,cx+15,cy+10,cx+5,cy+11); 
    Arc(hdc, cx+10,cy+5,cx+20,cy+15,cx+20,cy+10,cx+10,cy+11); 
    Arc(hdc, cx+15,cy+5,cx+25,cy+15,cx+25,cy+10,cx+15,cy+11); 
 
    x=cx+25; 
    y=cy+10; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+30,cy+10); 
    break; 
 
  case 1: 
    x=cx+10; 
    y=cy+0; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+5); 
 
    Arc(hdc, cx+5,cy+5,cx+15,cy+15,cx+10,cy+15,cx+10,cy+5); 
    Arc(hdc, cx+5,cy+10,cx+15,cy+20,cx+10,cy+20,cx+10,cy+10); 
    Arc(hdc, cx+5,cy+15,cx+15,cy+25,cx+10,cy+25,cx+10,cy+15); 
 
    x=cx+10; 
    y=cy+25; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+30); 
    break; 
 
  case 3: 
    x=cx+10; 
    y=cy+0; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+5); 
 
    Arc(hdc, cx+5,cy+5,cx+15,cy+15,cx+10,cy+5,cx+11,cy+15); 
    Arc(hdc, cx+5,cy+10,cx+15,cy+20,cx+10,cy+10,cx+11,cy+20); 
    Arc(hdc, cx+5,cy+15,cx+15,cy+25,cx+10,cy+15,cx+11,cy+25); 
 
    x=cx+10; 
    y=cy+25; 
    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc,cx+10,cy+30); 
    break; 
} 
SelectObject(hdc,holdpen); 
DeleteObject(hpen); 
} 
 
 
//CI2WBCurveSet 
extern HINSTANCE g_hinstance; 
 
CI2WBElecSet::CI2WBElecSet() 
{ 
} 
 
CI2WBElecSet::~CI2WBElecSet() 
{ 
 
} 
 
VOID CI2WBElecSet::enumControlInfo(I2List& m_infolist) 
{ 
if(!g_hinstance) 
  g_hinstance=GetModuleHandle("iaspwb.dll"); 
WB32CONTROLINFO wbci; 
wbci.cid=0; 
wbci.hicon=LoadIcon(g_hinstance,MAKEINTRESOURCE(IDI_C_BATTERY)); 
wbci.hcursor=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_PEN)); 
LoadString(g_hinstance,IDS_NAME_PEN,wbci.name,MAX_CONTROLNAME); 
LoadString(g_hinstance,IDS_DESC_PEN,wbci.description,MAX_CONTROLNAME); 
wbci.type=0; 
m_infolist.append(wbci); 
 
wbci.cid=1; 
wbci.hicon=LoadIcon(g_hinstance,MAKEINTRESOURCE(IDI_C_LAMP)); 
wbci.hcursor=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_LINE)); 
LoadString(g_hinstance,IDS_NAME_PEN,wbci.name,MAX_CONTROLNAME); 
LoadString(g_hinstance,IDS_DESC_PEN,wbci.description,MAX_CONTROLNAME); 
wbci.type=0; 
m_infolist.append(wbci); 
 
wbci.cid=2; 
wbci.hicon=LoadIcon(g_hinstance,MAKEINTRESOURCE(IDI_C_RES)); 
wbci.hcursor=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_RECT)); 
LoadString(g_hinstance,IDS_NAME_PEN,wbci.name,MAX_CONTROLNAME); 
LoadString(g_hinstance,IDS_DESC_PEN,wbci.description,MAX_CONTROLNAME); 
wbci.type=0; 
m_infolist.append(wbci); 
 
wbci.cid=3; 
wbci.hicon=LoadIcon(g_hinstance,MAKEINTRESOURCE(IDI_C_KEY)); 
wbci.hcursor=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_RECT)); 
LoadString(g_hinstance,IDS_NAME_PEN,wbci.name,MAX_CONTROLNAME); 
LoadString(g_hinstance,IDS_DESC_PEN,wbci.description,MAX_CONTROLNAME); 
wbci.type=0; 
m_infolist.append(wbci); 
 
wbci.cid=4; 
wbci.hicon=LoadIcon(g_hinstance,MAKEINTRESOURCE(IDI_C_CAP)); 
wbci.hcursor=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_CIRC)); 
LoadString(g_hinstance,IDS_NAME_PEN,wbci.name,MAX_CONTROLNAME); 
LoadString(g_hinstance,IDS_DESC_PEN,wbci.description,MAX_CONTROLNAME); 
wbci.type=0; 
m_infolist.append(wbci); 
 
wbci.cid=5; 
wbci.hicon=LoadIcon(g_hinstance,MAKEINTRESOURCE(IDI_C_IND)); 
wbci.hcursor=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_CIRC)); 
LoadString(g_hinstance,IDS_NAME_PEN,wbci.name,MAX_CONTROLNAME); 
LoadString(g_hinstance,IDS_DESC_PEN,wbci.description,MAX_CONTROLNAME); 
wbci.type=0; 
m_infolist.append(wbci); 
 
m_infopos=0; 
} 
 
VOID CI2WBElecSet::createControl(INT cid,VOID* pwb,VOID** ppawc,HWND hwnd) 
{ 
if(!pwb||!ppawc) 
   throw new I2BaseException(I2E_INVALIDPARAMETER); 
*ppawc=(VOID*)new CI2WBElec(cid,pwb); 
 
if(!*ppawc) 
   throw new I2BaseException(I2E_OUTOFMEMORY); 
} 
 
 
VOID CI2WBElecSet::getControlSetID(GUID* Value) 
{ 
*Value=CSID_Elec; 
} 
 
VOID CI2WBElecSet::getControlCursor(INT cid,HCURSOR* pcur) 
{ 
*pcur=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_CTRL)); 
 
/*switch(cid) 
{ 
case 0: 
   *pcur=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_PEN)); 
   break; 
case 1: 
   *pcur=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_LINE)); 
   break; 
case 2: 
   *pcur=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_RECT)); 
   break; 
case 3: 
   *pcur=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_PEN)); 
   break; 
case 4: 
   *pcur=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_LINE)); 
   break; 
case 5: 
   *pcur=LoadCursor(g_hinstance,MAKEINTRESOURCE(IDC_C_RECT)); 
   break; 
default: 
   throw new I2BaseException(I2E_INVALIDPARAMETER); 
   break; 
}*/ 
} 
 
//electric control property dialog 
void CElecProp::onCommand(const I2Dialog& dlg,WORD wID,WORD wNotifyCode) 
{ 
  if(wID==IDCANCEL) 
  { 
    destroy(); 
  } 
  else if(wID==IDOK) 
  { 
    m_pressok=1; 
    g_direction=itemMessage(IDC_DIERCTION,CB_GETCURSEL,0,0); 
    destroy(); 
  } 
} 
 
CElecProp::CElecProp(CI2WBBaseCtrl* pawc) 
{ 
  m_pawc=pawc; 
  m_pressok=0; 
} 
 
void CElecProp::onInitliaze(const I2Dialog& dlg) 
{ 
  char buf[10],buf1[32]; 
  INT  color; 
  itoa(m_pawc->cinfo.m_linestyle,buf,10); 
  itemMessage(IDC_P_LINESTYLE,WM_SETTEXT,0, (LPARAM)buf); 
  itoa(m_pawc->cinfo.m_linewidth,buf,10); 
  itemMessage(IDC_P_LINEWIDTH,WM_SETTEXT,0, (LPARAM)buf); 
  color=GetRValue(m_pawc->cinfo.m_color);    
  itoa(color,buf,10); 
  lstrcpy(buf1,buf); 
  lstrcat(buf1," "); 
  color=GetGValue(m_pawc->cinfo.m_color); 
  itoa(color,buf,10); 
  lstrcat(buf1,buf); 
  lstrcat(buf1," "); 
  color=GetBValue(m_pawc->cinfo.m_color); 
  itoa(color,buf,10); 
  lstrcat(buf1,buf); 
  itemMessage(IDC_P_COLOR,WM_SETTEXT,0, (LPARAM)buf1); 
  color=GetRValue(m_pawc->cinfo.m_bkcolor); 
  itoa(color,buf,10); 
  lstrcpy(buf1,buf); 
  lstrcat(buf1," "); 
  color=GetGValue(m_pawc->cinfo.m_bkcolor); 
  itoa(color,buf,10); 
  lstrcat(buf1,buf); 
  lstrcat(buf1," "); 
  color=GetBValue(m_pawc->cinfo.m_bkcolor); 
  itoa(color,buf,10); 
  lstrcat(buf1,buf); 
  itemMessage(IDC_P_BCOLOR,WM_SETTEXT,0, (LPARAM)buf1); 
  itemMessage(IDC_P_FONT,WM_SETTEXT,0, (LPARAM)m_pawc->cinfo.m_font.name); 
  itoa(m_pawc->cinfo.m_font.size,buf,10); 
  itemMessage(IDC_P_FONTSIZE,WM_SETTEXT,0, (LPARAM)buf); 
 
  lstrcpy(buf,"0ΆΘ"); 
  itemMessage(IDC_DIERCTION,CB_ADDSTRING,0, (LPARAM)buf); 
  lstrcpy(buf,"90ΆΘ"); 
  itemMessage(IDC_DIERCTION,CB_ADDSTRING,0, (LPARAM)buf); 
  lstrcpy(buf,"180ΆΘ"); 
  itemMessage(IDC_DIERCTION,CB_ADDSTRING,0, (LPARAM)buf); 
  lstrcpy(buf,"270ΆΘ"); 
  itemMessage(IDC_DIERCTION,CB_ADDSTRING,0, (LPARAM)buf); 
  itemMessage(IDC_DIERCTION,CB_SETCURSEL,g_direction, (LPARAM)0); 
}