// Create the Control
		//              this,             ID,      name, txt font,                   left,    top, width
	void create(CKXPluginGUI* parent,UINT ID, char* name,CFont* sfont,int num_items,
							int left, int top, int wd)
	{
		// add the kX static bitmap holder
		back.create("",left,top,backbmp,parent,kMETHOD_TRANS);
		back.show();

		// add the kX button
		parent->create_checkbox(butt, ID, name, left+wd, top, 20);
		butt.set_method(kMETHOD_TRANS);
		butt.set_check(0);
		butt.show();

		// add the text label
		txtbox.Create("",WS_CHILD|WS_VISIBLE|SS_LEFT,
					CRect(CPoint(left+5,top+4),CSize(wd-5,12)), parent, NULL);
		txtbox.SetFont(sfont,NULL);	
		//txtbox.SetTextColor(RGB(241,159,3));
		txtbox.SetBkColor(CLR_NONE);

		// create the popmenu
		nItems = num_items;
		popmenu.CreatePopupMenu();
		for(int i=0; i<nItems; i++)	// add items
		{
			char tmp[64];
			sprintf(tmp,"%d -- Item --", i);
			popmenu.AppendMenu(MF_STRING, i+100, tmp);
		}
		popmenu.CheckMenuItem(100,MF_CHECKED);	// check first item
		curr_sel=0;
	};
	void set_value(int id)	// sets selected menu item
	{
		for(int i=0; i<nItems; i++) popmenu.CheckMenuItem(i+100,MF_UNCHECKED);
		popmenu.CheckMenuItem(id+100,MF_CHECKED);
		CString	txt;
		popmenu.GetMenuString(id+100, txt, 24 );
		back.redraw();
		butt.redraw();
		txtbox.SetWindowText(txt);
		curr_sel=id+100;
	};
Beispiel #3
0
int CRollupCtrl::_InsertPage(LPCTSTR caption, CDialog* pwndTemplate, int idx, BOOL bAutoDestroyTpl,BOOL bAutoExpand)
{
	ASSERT(pwndTemplate!=NULL);
	ASSERT(pwndTemplate->m_hWnd!=NULL);

	CRect r; GetClientRect(r);

	CColorCtrl<CButton>* groupbox = new CColorCtrl<CButton>;
	groupbox->Create("", WS_CHILD|BS_GROUPBOX, r, this, 0 );
	if (m_bkColor != 0)
	{
		groupbox->SetBkColor(m_bkColor);
	}

	CCustomButton* but = new CCustomButton;
	but->Create(caption, WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_FLAT, r, this, 0 ); 
	if (m_bkColor != 0)
	{
		but->SetBkColor(m_bkColor);
	}

	HFONT hfont= (HFONT)EditorSettings::Get().Gui.hSystemFont;
	CFont* font = CFont::FromHandle(hfont);
	but->SetFont(font);

	RC_PAGEINFO*	pi	= new RC_PAGEINFO;
	pi->id				= m_lastId++;
	pi->bExpanded		= FALSE;
	pi->bEnable			= TRUE;
	pi->pwndTemplate	= pwndTemplate;
	pi->pwndButton		= but;
	pi->pwndGroupBox	= groupbox;
	pi->pOldDlgProc		= (WNDPROC)::GetWindowLongPtr(pwndTemplate->m_hWnd, DWLP_DLGPROC);
	pi->pOldButProc		= (WNDPROC)::GetWindowLongPtr(but->m_hWnd, GWLP_WNDPROC);
	pi->bAutoDestroyTpl	= bAutoDestroyTpl;

	int newidx;
	if (idx<0)	{
		m_PageList.push_back(pi);
		newidx = m_PageList.size()-1;
	}
	else	{ m_PageList.insert(m_PageList.begin()+idx,pi); newidx=idx; }

	::SetWindowLongPtr(pwndTemplate->m_hWnd, GWLP_USERDATA,	(LONG_PTR)m_PageList[newidx]);
	::SetWindowLongPtr(pwndTemplate->m_hWnd, DWLP_USER,		(LONG_PTR)this);

	::SetWindowLongPtr(but->m_hWnd, GWLP_USERDATA,	(LONG_PTR)m_PageList[newidx]);

	::SetWindowLongPtr(pwndTemplate->m_hWnd, DWLP_DLGPROC, (LONG_PTR)CRollupCtrl::DlgWindowProc);

	::SetWindowLongPtr(but->m_hWnd, GWLP_WNDPROC, (LONG_PTR)CRollupCtrl::ButWindowProc);

	m_nPageHeight+=RC_PGBUTTONHEIGHT+(RC_GRPBOXINDENT*2);
	RecalLayout();

	bool bExpanded = stl::FindInMap( m_expandedMap,caption,bAutoExpand==TRUE );
	if (bExpanded)
	{
		ExpandPage( pi->id,bExpanded,FALSE );
	}
	return pi->id;
}