all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: <brianjiang@gdnt.com.cn>
To: <emacs-devel@gnu.org>
Subject: ebrowse problem
Date: Mon, 21 Apr 2008 20:12:46 +0800	[thread overview]
Message-ID: <E8406C8B43BCEF4C9D71563A41E7E23F8AD4E3@RND-MX01.rnd.gdnt.local> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 2780 bytes --]

Hi Emacs hacker,
 
I try ebrowse recently and I find in some cases it doesn't parse the
class members correctly. 
 
Here is an example (The source files are attached: MyBtnDlg.CPP and
MyBtnDlg.h):
 
It parses member of CAboutDlg incorrectly:
 
------------------------------------------------------------------------
----
class CAboutDlg:
 
<---------> AddButton                <---------> AddToCell
<---------> AddToCell                <---------> BEGIN_MESSAGE_MAP
<---------> BEGIN_MESSAGE_MAP        <---------> CAboutDlg
<---------> DECLARE_MESSAGE_MAP      <---------> DelButton
<---------> DelFromCell              <---------> DoDataExchange
<---------> HideAll                  <---------> OnActivate
<---------> OnButton4                <---------> OnButtonExtShort
<---------> OnButtonMinAll           <---------> OnButtonShowAll
<---------> OnButtonalignme          <---------> OnButtonminme
<---------> OnButtonshowalign        <---------> OnButtonshowalign2
<---------> OnCHECKCellMode          <---------> OnCHECKHideDeact
<---------> OnCHECKPutty             <---------> OnCreate
<---------> OnDestroy                <---------> OnHotKey
<---------> OnLButtonDblClk          <---------> OnLButtonDown
<---------> OnLButtonUp              <---------> OnMBtnDown
<---------> OnMENUITEMAddButton      <---------> OnMENUITEMAlignButtons
<---------> OnMENUITEMAlignWin       <---------> OnMENUITEMChangeName
<---------> OnMENUITEMRemove         <---------> OnMENUITEMShowBehind
<---------> OnMenuitemAdjustWinPos   <---------> OnMyButtonUp
<---------> OnPaint                  <---------> OnQueryDragIcon
<---------> OnRADIOAlignStyle1       <---------> OnRADIOAlignStyle2
<---------> OnRADIOAlignStyle3       <---------> OnRButtonDown
<---------> OnSelchangeTABCell       <---------> OnSelchangeTABList
<---------> OnSize                   <---------> OnSysCommand
<---------> OnTaskBarCreated         <---------> OnTrayNotify
<---------> PreTranslateMessage      <---------> RegisterWindowMessage
<---------> ShowAll
 

class CDialog:
------------------------------------------------------------------------
----
 
You can check the source file MyBtnDlg.cpp. Actually these member
functions do not belong to class CAboutDlg. They belong to class
CMyBtnDlg.
 
It seem ebrowse is misled by a Windows MFC marco in CMyBtnDlg.cpp (in
line 23): (it is a very general marco in MFC program)
 
  DECLARE_MESSAGE_MAP()
};

 
It seem ebrowse is expecting a ";" after the ")". 
 
If I add a ';" here, then ebrowse can parse the file correctly. Or if I
delete this line, ebrowse can parse the file corrrectly too.
 
Shall we make some changes to let ebrowse may robust?
 
 
 
Regards,
Brian
 
 
 
 
 
 
 

[-- Attachment #1.2: Type: text/html, Size: 7452 bytes --]

[-- Attachment #2: MyBtnDlg.cpp --]
[-- Type: application/octet-stream, Size: 27851 bytes --]

// MyBtnDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MyBtn.h"
#include "MyBtnDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
#include "MyButton.h"

int sysbar_len;
const int spare_in_bottom =3;
const int spare_in_right = 3;


class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
  DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyBtnDlg dialog

CMyBtnDlg::CMyBtnDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMyBtnDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMyBtnDlg)
	m_bCellMode = TRUE;
	m_bPutty = FALSE;
	m_bHideDeact = FALSE;
	m_pCurCell = NULL;
	m_iAlignStyle = 3;
	m_bLarge = TRUE;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);


}

void CMyBtnDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMyBtnDlg)
	DDX_Control(pDX, IDC_TABList, m_TabList);
	DDX_Control(pDX, IDC_TABCell, m_TabCell);
	DDX_Check(pDX, IDC_CHECKCellMode, m_bCellMode);
	DDX_Check(pDX, IDC_CHECKPutty, m_bPutty);
	DDX_Check(pDX, IDC_CHECKHideDeact, m_bHideDeact);
	//}}AFX_DATA_MAP
}

const UINT WM_TASKBARCREATED = 
     ::RegisterWindowMessage(_T("TaskbarCreated"));

BEGIN_MESSAGE_MAP(CMyBtnDlg, CDialog)
	//{{AFX_MSG_MAP(CMyBtnDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_BUTTON1, OnButtonShowAll)
	ON_BN_CLICKED(IDC_BUTTONMINALL, OnButtonMinAll)
	ON_BN_CLICKED(IDC_BUTTONALIGNME, OnButtonalignme)
	ON_BN_CLICKED(IDC_BUTTONExtShort, OnButtonExtShort)
	ON_BN_CLICKED(IDC_BUTTONSHOWALIGN, OnButtonshowalign)
	ON_BN_CLICKED(IDC_BUTTONSHOWALIGN2, OnButtonshowalign2)
	ON_BN_CLICKED(IDC_BUTTONMINME, OnButtonminme)
	ON_WM_LBUTTONDBLCLK()
	ON_BN_CLICKED(IDC_CHECKCellMode, OnCHECKCellMode)
	ON_BN_CLICKED(IDC_CHECKPutty, OnCHECKPutty)
	ON_WM_RBUTTONDOWN()
	ON_WM_CREATE()
	ON_WM_SIZE()
	ON_COMMAND(ID_MENUITEMAddButton, OnMENUITEMAddButton)
	ON_COMMAND(ID_MENUITEMChangeName, OnMENUITEMChangeName)
	ON_COMMAND(ID_MENUITEMAlignButtons, OnMENUITEMAlignButtons)
	ON_COMMAND(ID_MENUITEMAlignWin, OnMENUITEMAlignWin)
	ON_COMMAND(ID_MENUITEMRemove, OnMENUITEMRemove)
	ON_BN_CLICKED(IDC_CHECKHideDeact, OnCHECKHideDeact)
	ON_COMMAND(ID_MENUITEMAdjustWinPos, OnMenuitemAdjustWinPos)
	ON_COMMAND(ID_MENUITEMShowBehind, OnMENUITEMShowBehind)
	ON_NOTIFY(TCN_SELCHANGE, IDC_TABList, OnSelchangeTABList)
	ON_NOTIFY(TCN_SELCHANGE, IDC_TABCell, OnSelchangeTABCell)
	ON_BN_CLICKED(IDC_RADIOAlignStyle1, OnRADIOAlignStyle1)
	ON_BN_CLICKED(IDC_RADIOAlignStyle2, OnRADIOAlignStyle2)
	ON_BN_CLICKED(IDC_RADIOAlignStyle3, OnRADIOAlignStyle3)
	//}}AFX_MSG_MAP

	ON_MESSAGE(WM_HOTKEY, OnHotKey)
	ON_MESSAGE(WM_MBUTTONDOWN, OnMBtnDown)
	ON_MESSAGE(WM_TRAYICON,OnTrayNotify)
	ON_MESSAGE(WM_ACTIVATE, OnActivate)

	//tray icon
	ON_REGISTERED_MESSAGE(WM_TASKBARCREATED, OnTaskBarCreated)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyBtnDlg message handlers

BOOL CMyBtnDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here

	//LONG myEXStyle = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);
	//myEXStyle |= WS_EX_TOOLWINDOW;
	//::SetWindowLong(m_hWnd, GWL_EXSTYLE, myEXStyle);

	LONG myStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);
	//WS_THICKFRAME
	myStyle |=  WS_MINIMIZEBOX  ;
	::SetWindowLong(m_hWnd, GWL_STYLE,  myStyle);


/*#define LWA_COLORKEY 0x00000001
#define WS_EX_LAYERED 0x00080000
	
	typedef BOOL (WINAPI *lpfnSetLayeredWindowAttributes)(HWND hWnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
	lpfnSetLayeredWindowAttributes SetLayeredWindowAttributes;
	
	COLORREF maskColor=RGB(77, 12, 28);
	HMODULE hUser32 = GetModuleHandle("user32.dll");
	SetLayeredWindowAttributes = (lpfnSetLayeredWindowAttributes)GetProcAddress(hUser32,"SetLayeredWindowAttributes");
	SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE) | WS_EX_LAYERED);
	SetLayeredWindowAttributes(GetSafeHwnd(), maskColor, 255, LWA_COLORKEY);
	//SetLayeredWindowAttributes(GetSafeHwnd(), maskColor, 230, 3); //when 2, 3, ignore maskColor
	FreeLibrary(hUser32); 

*/

	//BYTE m = (BYTE)m_slider.GetPos();
	//HINSTANCE hinst = LoadLibrary("User32.DLL");
	//if(hinst)
	//{
	//	typedef BOOL (WINAPI *MYFUN)(HWND,COLORREF,BYTE,DWORD);
	//	MYFUN fun = NULL;
	//	fun = (MYFUN)GetProcAddress(hinst,"SetLayeredWindowAttributes");
	//	if(fun)                           
	//	{
	//		fun(AfxGetMainWnd()->GetSafeHwnd(),0,m,2);
	//	}
	//	FreeLibrary(hinst);
	//}  



	//cs.style =WS_POPUP;£»
    //cs.dwExStyle |=WS_EX_TOOLWINDOW;

	//::SetClassLong(m_hWnd, GCL_HBRBACKGROUND, (long)::GetStockObject(BLACK_BRUSH)); 
	
	m_kGetWindow = GlobalAddAtom("WINBOX1");
	if (!::RegisterHotKey(m_hWnd, m_kGetWindow, MOD_WIN, 'A'))
	{
		MessageBox("failed to reg hotkey");	
	}

	m_kBringMe = GlobalAddAtom("WINBOX:BringME");

	if (!::RegisterHotKey(m_hWnd, m_kBringMe, MOD_WIN, 'Z'))
	{
		MessageBox("failed to reg hotkey bringme");	
	}

	m_kShowGroup = GlobalAddAtom("WINBOX:ShowGroup");

	if (!::RegisterHotKey(m_hWnd, m_kShowGroup, MOD_WIN, 'Q'))
	{
		MessageBox("failed to reg hotkey showgroup");	
	}

	m_kAlignWin = GlobalAddAtom("WINBOX:AlignWin");

	if (!::RegisterHotKey(m_hWnd, m_kAlignWin, MOD_WIN, 'P'))
	{
		MessageBox("failed to reg hotkey AlignWin");	
	}

	m_kNextPage = GlobalAddAtom("WINBOX:NextPage");

	if (!::RegisterHotKey(m_hWnd, m_kNextPage, MOD_WIN, 'C'))
	{
		MessageBox("failed to reg hotkey NextPage");	
	}

	m_kPrevPage = GlobalAddAtom("WINBOX:PrevPage");

	if (!::RegisterHotKey(m_hWnd, m_kPrevPage, MOD_WIN, 'X'))
	{
		MessageBox("failed to reg hotkey PrevPage");	
	}

	m_kMinAll = GlobalAddAtom("WINBOX:MinAll");

	if (!::RegisterHotKey(m_hWnd, m_kMinAll, MOD_WIN, 'W'))
	{
		MessageBox("failed to reg hotkey MinAll");	
	}

	this->m_menuCell.LoadMenu(IDR_MENU1);
	//this->SetMenu(&m_menuCell);

	this->GetClientRect(&m_AlignRect);

	CRect rect;

	this->GetWindowRect(&rect);
	m_FullDlgRect.left = 0;
	m_FullDlgRect.top =0;
	m_FullDlgRect.bottom =rect.Height();
	m_FullDlgRect.right = rect.Width();

	this->GetClientRect(&rect);
	sysbar_len = m_FullDlgRect.Height() - rect.Height();

	this->GetDlgItem(IDC_STATIC_V)->GetWindowRect(&rect);
	//m_AlignRect.right = rect.left - spare_in_right;
	m_AlignRect.left = rect.right;

	this->GetDlgItem(IDC_STATIC_H)->GetWindowRect(&rect);
	m_AlignRect.bottom = rect.top - sysbar_len - spare_in_bottom;

	//m_AlignRect.left += 8;
	m_AlignRect.right -= spare_in_right;
	m_AlignRect.top  += 8;
		
	m_orgCursor=(HCURSOR)::GetClassLong(m_hWnd, GCL_HCURSOR);
	//::SetClassLong(m_hWnd, GCL_HCURSOR, NULL);
	//::SetCursor(m_orgCursor);



	this->GetDlgItem(IDC_STATICCellSmall)->GetWindowRect(&m_rCellSmall);
	m_rCellSmall.top -= sysbar_len;
	m_rCellSmall.bottom -= sysbar_len;
	//m_pCurCell->Create(m_rCellSmall, this);


	OnButtonExtShort();


	// Add Tabs
	//Cell TAB:
	CString str;
	int i;
	for (i=0; i< CellCount; i++)
	{
		str.Format("C %d", i+1);
		this->m_TabCell.InsertItem(i, str);
	
		m_CellRectArray[i].Create(m_AlignRect, this);
		m_CellRectArray[i].m_orgCursor = m_orgCursor;
		m_CellRectArray[i].SetBitmap(IDB_BITMAP1, IDB_BITMAP2);
		//m_CellRectArray[i].SetBitmapMode(TRUE);

	}

	this->m_pCurCell = & m_CellRectArray[0];

	for (i=0; i< ListCount; i++)
	{
		str.Format("B %d", i+1);
		this->m_TabList.InsertItem(i, str);
	}

	m_pCurBtnList = & m_BtnListArray[0];

	CButton * pbstyle = (CButton *) GetDlgItem(IDC_RADIOAlignStyle3);
	pbstyle->SetCheck(1);


	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CMyBtnDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else if (nID == SC_MINIMIZE )
	{
		ShowWindow(SW_HIDE);
		return;
	}
	else if (nID == SC_CLOSE)
	{
		int ret = MessageBox("Do you really want ot quit", "Warning", MB_OKCANCEL);
	
		if (ret == 2) // cancel
		{
			return;
		}else
		{
			CDialog::OnSysCommand(nID, lParam);
		}
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CMyBtnDlg::OnPaint() 
{


	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}

	/*
	CRect staticR, clR, r;

	this->GetDlgItem(IDC_STATICTransport)->GetWindowRect(&staticR);
	this->ScreenToClient(&staticR);

	this->GetClientRect(&clR);

	r.left=staticR.left;
	r.top = staticR.top;
	r.right = staticR.right;
	r.bottom = clR.bottom;

	CClientDC dc(this);

	CBrush br;
	br.CreateSolidBrush(RGB(77, 12, 28));
	CBrush *oldBrush = dc.SelectObject(&br);

	dc.Rectangle(&r);

	if (m_bCellMode)
	{
		CRect cellR;
		this->GetDlgItem(IDC_STATICCellSmall)->GetWindowRect(&cellR);
		this->ScreenToClient(&cellR);
		dc.Rectangle(&cellR);

	}

	dc.SelectObject(oldBrush);
	*/

	this->m_pCurCell->Draw();


}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMyBtnDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CMyBtnDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default

	this->m_pCurCell->OnLButtonDown(nFlags, point);

	CDialog::OnLButtonDown(nFlags, point);

	//this->SetCapture();
}

void CMyBtnDlg::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default

	//ReleaseCapture();
	this->m_pCurCell->OnLButtonUp(nFlags, point);

	CDialog::OnLButtonUp(nFlags, point);
}


void CMyBtnDlg::OnButton4() 
{
	// TODO: Add your control notification handler code here
   
	int ret = MessageBox("Do you really want ot clear all", "Warning", MB_OKCANCEL);
	
	if (ret == 2) // cancel
	{
		return;
	}


	m_pCurBtnList->RemoveAll();

}

void CMyBtnDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here

	Shell_NotifyIcon(NIM_DELETE, &m_trayIcon);

	// Remove the HotKey

	if (!(UnregisterHotKey(m_hWnd, this->m_kGetWindow)))
	{
		MessageBox("Failed to unregister hotkey getwindow");
	}

	if (!(UnregisterHotKey(m_hWnd, this->m_kBringMe)))
	{
		MessageBox("Failed to unregister hotkey bringme");
	}

	if (!(UnregisterHotKey(m_hWnd, this->m_kShowGroup)))
	{
		MessageBox("Failed to unregister hotkey showgroup");
	}

	if (!(UnregisterHotKey(m_hWnd, this->m_kAlignWin)))
	{
		MessageBox("Failed to unregister hotkey AlignWin");
	}

	if (!(UnregisterHotKey(m_hWnd, this->m_kNextPage)))
	{
		MessageBox("Failed to unregister hotkey NextPage");
	}
	
	if (!(UnregisterHotKey(m_hWnd, this->m_kPrevPage)))
	{
		MessageBox("Failed to unregister hotkey PrevPage");
	}

	if (!(UnregisterHotKey(m_hWnd, this->m_kMinAll)))
	{
		MessageBox("Failed to unregister hotkey MinAll");
	}


}

LRESULT CMyBtnDlg::OnMBtnDown(WPARAM wParam,LPARAM lParam)
{

	return m_pCurCell->OnMBtnDown(wParam, lParam);

}

LRESULT CMyBtnDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{

	if (wParam == m_kGetWindow){
		
		HWND fwin=::GetForegroundWindow();

		if ((fwin != this->m_hWnd)&& (fwin !=::GetDesktopWindow())){

			if (this->m_bCellMode)
			{
				//pBtn->ShowWindow(SW_HIDE);

				this->m_pCurCell->AddToCell(fwin);
				this->m_pCurCell->Draw();
			}
			else
			{
				AddButton(fwin);
			}

		}


		
	} else if (wParam == m_kBringMe){
		if (IsIconic())
		{
			ShowWindow(SW_SHOWNOACTIVATE);
		}

		if (!IsWindowVisible())
		{
			this->ShowWindow(SW_SHOW);
		}

		::SetForegroundWindow(this->m_hWnd);

	} else if (wParam == m_kShowGroup){

		if (m_bPutty)
		{
			this->OnButtonshowalign();
		}
		else
		{
			this->OnButtonshowalign2();
		}

	} else if (wParam == m_kAlignWin){

		int count = m_pCurCell->AlignWnd(this->m_iAlignStyle);

		if ( 1 == count)
		{
			m_pCurCell->ShowGroup();
		}
	
		if (count > 0)
		{
				
			ShowWindow(SW_HIDE);
		}

		m_pCurBtnList->ShowGroupWnd();

	}else if (wParam == m_kMinAll){

		OnButtonMinAll();

	} else if ((wParam == m_kNextPage) || (wParam == m_kPrevPage)){

		int cur = m_TabCell.GetCurSel();

		int np;

		if (wParam == m_kNextPage){
			
			np = (cur + 1) % CellCount;
		} else {
			np = (cur - 1 + CellCount) % CellCount;
		}

		m_TabCell.SetCurSel(np);
		m_pCurCell = & m_CellRectArray[np];

		
		if (this->m_bCellMode) {
			
			m_pCurCell->SetRect(this->m_AlignRect);
			m_pCurCell->SetBitmapMode(FALSE);
			
		} else
		{
			
			m_pCurCell->SetRect(this->m_rCellSmall);
			m_pCurCell->SetBitmapMode(TRUE);
			
		}

		m_pCurCell->Draw();
		m_pCurCell->ShowGroup();


	}

	return 0;
}

void CMyBtnDlg::OnButtonShowAll() 
{
	// TODO: Add your control notification handler code here

	this->m_pCurBtnList->ShowAllWnd();
	this->m_pCurCell->ShowAllWnd();

}


void CMyBtnDlg::OnButtonMinAll() 
{
	// TODO: Add your control notification handler code here
	m_pCurBtnList->MiniAllWnd();
	m_pCurCell->MiniAll();

}



void CMyBtnDlg::OnButtonExtShort() 
{	

	if (m_bLarge)
	{
		CRect rect;

		rect = m_FullDlgRect;

		rect.bottom = m_AlignRect.bottom + sysbar_len + spare_in_bottom;

		this->SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(),
			SWP_NOMOVE | SWP_NOZORDER);

		this->GetDlgItem(IDC_BUTTONExtShort)->SetWindowText(">>");

		m_bLarge =FALSE;
	}else
	{
		this->SetWindowPos(NULL, 0, 0, m_FullDlgRect.Width(), m_FullDlgRect.Height(),
			SWP_NOMOVE | SWP_NOZORDER);

		this->GetDlgItem(IDC_BUTTONExtShort)->SetWindowText("<<");

		m_bLarge =TRUE;

	}
}

void CMyBtnDlg::OnButtonalignme() 
{
	// TODO: Add your control notification handler code here

	int ret = MessageBox("Do you really want ot align buttons?", "Warning", MB_OKCANCEL);
	
	if (ret == 2) // cancel
	{
		return;
	}

	m_pCurBtnList->AlignMeLayout(this->m_AlignRect);


	this ->Invalidate();
}


void CMyBtnDlg::OnButtonshowalign() 
{
	// TODO: Add your control notification handler code here

	if (!m_bPutty)
	{
	int ret = MessageBox("Do you really want ot align windows", "Warning", MB_OKCANCEL);
	
	if (ret == 2) // cancel
	{
		return;
	}
	}

	int count = m_pCurCell->AlignWnd(this->m_iAlignStyle);

	if ( 1 == count)
	{
		m_pCurCell->ShowGroup();
	}
	
	if (count > 0)
	{
		
		ShowWindow(SW_HIDE);
	}

	m_pCurBtnList->ShowGroupWnd();



}

void CMyBtnDlg::OnButtonshowalign2() 
{
	// TODO: Add your control notification handler code here

	m_pCurCell->ShowGroup();
	m_pCurBtnList->ShowGroupWnd();

}



void CMyBtnDlg::HideAll()
{
	m_pCurBtnList->ShowAllBtn(FALSE);
}

void CMyBtnDlg::ShowAll()
{
	m_pCurBtnList->ShowAllBtn(TRUE);
}


void CMyBtnDlg::OnButtonminme() 
{
	// TODO: Add your control notification handler code here
	this->ShowWindow(SW_SHOWMINIMIZED);
	
}



void CMyBtnDlg::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default

	if (!m_pCurCell->OnLButtonDblClk(nFlags, point))
	{
		//this->ShowWindow(SW_SHOWMINIMIZED);
		this->ShowWindow(SW_HIDE);

		if (m_bPutty)
		{
			this->OnButtonshowalign();
		}
		else
		{
			this->OnButtonshowalign2();
		}
	}

	CDialog::OnLButtonDblClk(nFlags, point);
}



void CMyBtnDlg::OnCHECKCellMode() 
{
	// TODO: Add your control notification handler code here
	this->UpdateData();

	if (this->m_bCellMode) {
		
		HideAll(); // hide all button;


		m_pCurCell->SetRect(this->m_AlignRect);
		m_pCurCell->SetBitmapMode(FALSE);

	} else
	{
		ShowAll();

		m_pCurCell->SetRect(this->m_rCellSmall);
		m_pCurCell->SetBitmapMode(TRUE);

	}

	this->GetDlgItem(IDC_BUTTONALIGNME)->EnableWindow(!m_bCellMode);
 


	this->Invalidate();
	
}

void CMyBtnDlg::OnCHECKPutty() 
{
	// TODO: Add your control notification handler code here
	this->UpdateData();
}



void CMyBtnDlg::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default

	if (m_pCurCell->PtInRect(point))
	{
		m_pCurCell->OnRButtonDown(nFlags, point);
	}
	else
	{
		CPoint pt = point;
		this->ClientToScreen(&pt);

		CMenu * submenu = m_menuCell.GetSubMenu(2);

		if (m_bCellMode)
		{
			submenu->EnableMenuItem(ID_MENUITEMAlignButtons, MF_GRAYED);
		}
		else
		{
			submenu->EnableMenuItem(ID_MENUITEMAlignButtons, MF_ENABLED);
		}

		submenu->TrackPopupMenu(TPM_LEFTALIGN, pt.x, pt.y, this, NULL);

	}


	CDialog::OnRButtonDown(nFlags, point);
}


//void CMyBtnDlg::OnCancel( ){}

BOOL CMyBtnDlg::PreTranslateMessage(MSG*   pMsg)    
{  
    if(pMsg->message==WM_KEYDOWN   &&   pMsg->wParam==VK_ESCAPE)   
	{
		//pMsg->wParam=VK_RETURN;
		return   TRUE;  
	}
    //if(pMsg->message==WM_KEYDOWN   &&   pMsg->wParam==VK_RETURN)   return   TRUE;    
    else      
		return   CDialog::PreTranslateMessage(pMsg);  
 }   


void CMyBtnDlg::AddToCell(HWND hWnd)
{

	this->m_pCurCell->AddToCell(hWnd);
	this->m_pCurCell->Draw();
}

void CMyBtnDlg::AddToCell(HWND hWnd, int row, int col)
{

	this->m_pCurCell->AddCell(hWnd, row, col);
	this->m_pCurCell->Draw();
}



int CMyBtnDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here

	CString str;
	str.LoadString(IDS_TOOLTIP);

	m_trayIcon.cbSize = sizeof(NOTIFYICONDATA);
	m_trayIcon.hIcon = m_hIcon;
		
		//(HICON)LoadImage(AfxGetApp()->m_hInstance,
		//	MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 16, 16, 0);
	m_trayIcon.hWnd = m_hWnd;
	m_trayIcon.uID = MAINTRAYICON;
	m_trayIcon.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
	m_trayIcon.uCallbackMessage = WM_TRAYICON;
	strcpy(m_trayIcon.szTip, str);

	Shell_NotifyIcon(NIM_ADD, &m_trayIcon);


	return 0;
}

LRESULT CMyBtnDlg::OnTrayNotify(WPARAM wParam, LPARAM lParam)
{

	if (wParam != MAINTRAYICON)
	{
		return 0;
	}

	switch(lParam)
	{
		
	case WM_LBUTTONUP:

		if (this->IsWindowVisible())
		{
			ShowWindow(SW_HIDE);
		}
		else
		{
			ShowWindow(SW_SHOWNORMAL);
			SetForegroundWindow();
		}
		break;

	//case WM_RBUTTONDOWN:

	//	break;
	//case WM_LBUTTONDBLCLK:

	//	break;
	default:
	break;
	}

	return 0;

}




void CMyBtnDlg::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	this->m_AlignRect.right = cx - spare_in_right;
	this->m_AlignRect.bottom = cy - spare_in_bottom;

	if (m_AlignRect.left > m_AlignRect.right)
	{
		m_AlignRect.right = m_AlignRect.left;
	}

	if (m_AlignRect.top > m_AlignRect.bottom)
	{
		m_AlignRect.bottom = m_AlignRect.top;
	}

	if ((this->m_bCellMode) && (m_pCurCell != NULL))
	{
		m_pCurCell->SetRect(m_AlignRect);
		Invalidate();
	}

	// Adjust TABs
	if (m_pCurCell != NULL)
	{
		CRect r;
		
		this->m_TabCell.GetWindowRect(&r);
		this->ScreenToClient(&r);
		this->m_TabCell.SetWindowPos(NULL, 0, 0, r.Width(), cy-r.top, SWP_NOMOVE | SWP_NOZORDER);
		
		this->m_TabList.GetWindowRect(&r);
		this->ScreenToClient(&r);
		this->m_TabList.SetWindowPos(NULL, 0, 0, r.Width(), cy-r.top, SWP_NOMOVE | SWP_NOZORDER);
	}
}



 LRESULT CMyBtnDlg::OnTaskBarCreated(WPARAM wp, LPARAM lp)
 {

	 Shell_NotifyIcon(NIM_ADD, &m_trayIcon);
     return 0;
 }


void CMyBtnDlg::OnMENUITEMAddButton() 
{
	// TODO: Add your command handler code here
	HWND hWnd = this->m_pCurCell->GetHWndAddBtn();

	AddButton(hWnd);
	
}

CWnd* CMyBtnDlg::AddButton(HWND hWnd, CPoint point)
{
	
	char ch[30];
	::GetWindowText(hWnd, ch, 30);
	
	CString str(ch);
	
	CRect rect;
	
	rect.left = this->m_AlignRect.right - 80;
	rect.top  = this->m_AlignRect.bottom -80;
	rect.bottom = this->m_AlignRect.bottom;
	rect.right = this->m_AlignRect.right;
	
	CMyButton * pBtn;
	
	pBtn = (CMyButton *)m_pCurBtnList->FindBtn(hWnd);
	
	if (pBtn != NULL)
	{
		
		pBtn->SetFocus();
	}
	else
	{
		
		pBtn = new CMyButton();
		pBtn->Create(str, WS_CHILD | BS_DEFPUSHBUTTON |WS_VISIBLE | WS_THICKFRAME, 
			rect, this, 111);
		
		
		pBtn->m_hIcon = (HICON)::GetClassLong(hWnd, GCL_HICONSM);
		pBtn->m_hConnectWnd=hWnd;
		
		pBtn->ModifyStyle(0, BS_OWNERDRAW);
		
		
		
		m_pCurBtnList->AddBtn(pBtn);
		pBtn->SetFocus();
		
	}
	
	if (this->m_bCellMode)
	{
		pBtn->ShowWindow(SW_HIDE);			
	}
	else
	{
		if (m_AlignRect.PtInRect(point))
		{
			pBtn->SetWindowPos(NULL, point.x, point.y, 0 , 0, 
				SWP_NOSIZE | SWP_NOZORDER |SWP_NOACTIVATE);
		}
	}
	
	return pBtn;
	
}

void CMyBtnDlg::OnMENUITEMChangeName() 
{
	// TODO: Add your command handler code here

	this->m_pCurCell->ChangeCellName();
	
}



void CMyBtnDlg::OnMENUITEMAlignButtons() 
{
	// TODO: Add your command handler code here
	OnButtonalignme();
}

void CMyBtnDlg::OnMENUITEMAlignWin() 
{
	// TODO: Add your command handler code here
	OnButtonshowalign();
	
}

//DEL void CMyBtnDlg::OnButton2() 
//DEL {
//DEL 	// TODO: Add your control notification handler code here
//DEL 	//::SetForegroundWindow(this->m_pCurCell->m_CellData[0][0]->m_hConnectWnd);
//DEL 	//::SendMessage(this->m_pCurCell->m_CellData[0][0]->m_hConnectWnd, WM_KEYDOWN, 'a', 0);
//DEL 	::SendMessage(this->m_pCurCell->m_CellData[0][0]->m_hConnectWnd, WM_CHAR, 'l', 0);
//DEL 	::SendMessage(this->m_pCurCell->m_CellData[0][0]->m_hConnectWnd, WM_CHAR, 's', 0);
//DEL 	::SendMessage(this->m_pCurCell->m_CellData[0][0]->m_hConnectWnd, WM_CHAR, ' ', 0);
//DEL 	//::SendMessage(this->m_pCurCell->m_CellData[0][0]->m_hConnectWnd, WM_KEYUP, 'a', 0);
//DEL 	::SendMessage(this->m_pCurCell->m_CellData[0][0]->m_hConnectWnd, WM_CHAR, VK_RETURN, 0);
//DEL 
//DEL 	::SendMessage(this->m_pCurCell->m_CellData[0][0]->m_hConnectWnd, WM_CHAR, 'x', 0);
//DEL 	::SendMessage(this->m_pCurCell->m_CellData[0][0]->m_hConnectWnd, WM_CHAR, VK_RETURN, 0);
//DEL 	
//DEL 			this->ShowWindow(SW_MINIMIZE);
//DEL 
//DEL 	/*STARTUPINFO sui;
//DEL 	PROCESS_INFORMATION pi;
//DEL 	
//DEL 	ZeroMemory(&sui, sizeof(STARTUPINFO));
//DEL 	sui.cb = sizeof(STARTUPINFO);
//DEL 
//DEL 	if (CreateProcess("C:\\Documents and Settings\\WinGer\\×ÀÃæ\\putty.exe", "putty.exe 202.38.33.182", 
//DEL 		NULL, NULL, FALSE, 0, NULL, NULL, &sui, &pi))
//DEL 	{
//DEL 		::CloseHandle(pi.hProcess);
//DEL 		::CloseHandle(pi.hThread);
//DEL 
//DEL 
//DEL 		this->m_pCurCell->AddToCell(::GetForegroundWindow());
//DEL 	}*/
//DEL }

void CMyBtnDlg::OnMENUITEMRemove() 
{
	// TODO: Add your command handler code here
	this->m_pCurCell->DelFromCell(m_pCurCell->GetHWndAddBtn());
	m_pCurCell->Draw();
	
}

BOOL CMyBtnDlg::DelFromCell(HWND hWnd)
{
	if (m_pCurCell->DelFromCell(hWnd))
	{
		m_pCurCell->Draw();
		return TRUE;
	}
	else
	{
		return FALSE;
	}
}

LRESULT CMyBtnDlg::OnActivate(WPARAM wParam, LPARAM lParam)
{
	//fActive = LOWORD(wParam);           // activation flag 
	//fMinimized = (BOOL) HIWORD(wParam); // minimized flag 
	//hwndPrevious = (HWND) lParam;       // window handle 
	
	if (this->m_bHideDeact)
	{
		if (WA_INACTIVE == LOWORD(wParam))
		{
			
			this->ShowWindow(SW_HIDE);
		}
	}
	return 0;

}



void CMyBtnDlg::OnCHECKHideDeact() 
{
	// TODO: Add your control notification handler code here

	this->UpdateData();
}

void CMyBtnDlg::OnMyButtonUp(UINT nFlags, CPoint point, CMyButton *pBtn)
{

	this->m_pCurCell->OnMyButtonUp(nFlags, point, pBtn);
}

BOOL CMyBtnDlg::DelButton(CMyButton *pBtn)
{

	this->m_pCurBtnList->RemoveBtn(pBtn);

	delete pBtn;

	return TRUE;
}

void CMyBtnDlg::OnMenuitemAdjustWinPos() 
{
	// TODO: Add your command handler code here
	m_pCurCell->AdjustWinPos(this->m_iAlignStyle);
	
}

void CMyBtnDlg::OnMENUITEMShowBehind() 
{
	// TODO: Add your command handler code here

	m_pCurCell->SetShowBehind();
	m_pCurCell->Draw();
	
}

void CMyBtnDlg::OnSelchangeTABList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	int cur = m_TabList.GetCurSel();
	
	if (m_bCellMode)
	{
		this->m_pCurBtnList = & m_BtnListArray[cur];
	}
	else
	{
		m_pCurBtnList->ShowAllBtn(FALSE);
		this->m_pCurBtnList = & m_BtnListArray[cur];
		this->m_pCurBtnList->ShowAllBtn(TRUE);
	}

	*pResult = 0;
}

void CMyBtnDlg::OnSelchangeTABCell(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	

	int cur = m_TabCell.GetCurSel();
	m_pCurCell = & m_CellRectArray[cur];

	if (this->m_bCellMode) {
		
		m_pCurCell->SetRect(this->m_AlignRect);
		m_pCurCell->SetBitmapMode(FALSE);

	} else
	{

		m_pCurCell->SetRect(this->m_rCellSmall);
		m_pCurCell->SetBitmapMode(TRUE);

	}
	m_pCurCell->Draw();

	*pResult = 0;
}

void CMyBtnDlg::OnRADIOAlignStyle1() 
{
	// TODO: Add your control notification handler code here
	this->m_iAlignStyle = 1;
}

void CMyBtnDlg::OnRADIOAlignStyle2() 
{
	// TODO: Add your control notification handler code here
	this->m_iAlignStyle = 2;
	
}

void CMyBtnDlg::OnRADIOAlignStyle3() 
{
	// TODO: Add your control notification handler code here
	this->m_iAlignStyle = 3;
	
}

[-- Attachment #3: BROWSE --]
[-- Type: application/octet-stream, Size: 14521 bytes --]

[ebrowse-hs "ebrowse 5.0" " -x" () ()][ebrowse-ts [ebrowse-cs "CDialog" () 0() () 0() ]
([ebrowse-ts [ebrowse-cs "CAboutDlg" () 0"MyBtnDlg.cpp" "class CAboutDlg :" 436"MyBtnDlg.cpp" ]
()()
([ebrowse-ms "AddButton" () 0 () "CWnd* CMyBtnDlg::AddButton(HWND" 21165 1  () "CWnd* CMyBtnDlg::AddButton(HWND" 21165]
[ebrowse-ms "AddToCell" () 0 () "void CMyBtnDlg::AddToCell(HWND" 18780 1  () "void CMyBtnDlg::AddToCell(HWND" 18780]
[ebrowse-ms "AddToCell" () 0 () "void CMyBtnDlg::AddToCell(HWND" 18674 1  () "void CMyBtnDlg::AddToCell(HWND" 18674]
[ebrowse-ms "BEGIN_MESSAGE_MAP" () 0 () "BEGIN_MESSAGE_MAP(CMyBtnDlg" 2159 1  () "BEGIN_MESSAGE_MAP(CMyBtnDlg" 2159]
[ebrowse-ms "BEGIN_MESSAGE_MAP" () 0 () "BEGIN_MESSAGE_MAP(CAboutDlg" 1103 1  () "BEGIN_MESSAGE_MAP(CAboutDlg" 1103]
[ebrowse-ms "CAboutDlg" () 0 () "CAboutDlg::CAboutDlg() :" 861 1  () "CAboutDlg::CAboutDlg() :" 861]
[ebrowse-ms "DECLARE_MESSAGE_MAP" () 0 () "  DECLARE_MESSAGE_MAP()" 834 1  () () 0]
[ebrowse-ms "DelButton" () 0 () "BOOL CMyBtnDlg::DelButton(CMyButton" 24959 1  () "BOOL CMyBtnDlg::DelButton(CMyButton" 24959]
[ebrowse-ms "DelFromCell" () 0 () "BOOL CMyBtnDlg::DelFromCell(HWND" 24186 1  () "BOOL CMyBtnDlg::DelFromCell(HWND" 24186]
[ebrowse-ms "DoDataExchange" () 0 () "void CMyBtnDlg::DoDataExchange(CDataExchange" 1728 1  () "void CMyBtnDlg::DoDataExchange(CDataExchange" 1728]
[ebrowse-ms "HideAll" () 0 () "void CMyBtnDlg::HideAll()" 16440 1  () "void CMyBtnDlg::HideAll()" 16440]
[ebrowse-ms "OnActivate" () 0 () "LRESULT CMyBtnDlg::OnActivate(WPARAM" 24341 1  () "LRESULT CMyBtnDlg::OnActivate(WPARAM" 24341]
[ebrowse-ms "OnButton4" () 0 () "void CMyBtnDlg::OnButton4()" 11700 1  () "void CMyBtnDlg::OnButton4()" 11700]
[ebrowse-ms "OnButtonExtShort" () 0 () "void CMyBtnDlg::OnButtonExtShort()" 14984 1  () "void CMyBtnDlg::OnButtonExtShort()" 14984]
[ebrowse-ms "OnButtonMinAll" () 0 () "void CMyBtnDlg::OnButtonMinAll()" 14828 1  () "void CMyBtnDlg::OnButtonMinAll()" 14828]
[ebrowse-ms "OnButtonShowAll" () 0 () "void CMyBtnDlg::OnButtonShowAll()" 14659 1  () "void CMyBtnDlg::OnButtonShowAll()" 14659]
[ebrowse-ms "OnButtonalignme" () 0 () "void CMyBtnDlg::OnButtonalignme()" 15533 1  () "void CMyBtnDlg::OnButtonalignme()" 15533]
[ebrowse-ms "OnButtonminme" () 0 () "void CMyBtnDlg::OnButtonminme()" 16578 1  () "void CMyBtnDlg::OnButtonminme()" 16578]
[ebrowse-ms "OnButtonshowalign" () 0 () "void CMyBtnDlg::OnButtonshowalign()" 15840 1  () "void CMyBtnDlg::OnButtonshowalign()" 15840]
[ebrowse-ms "OnButtonshowalign2" () 0 () "void CMyBtnDlg::OnButtonshowalign2()" 16288 1  () "void CMyBtnDlg::OnButtonshowalign2()" 16288]
[ebrowse-ms "OnCHECKCellMode" () 0 () "void CMyBtnDlg::OnCHECKCellMode()" 17119 1  () "void CMyBtnDlg::OnCHECKCellMode()" 17119]
[ebrowse-ms "OnCHECKHideDeact" () 0 () "void CMyBtnDlg::OnCHECKHideDeact()" 24704 1  () "void CMyBtnDlg::OnCHECKHideDeact()" 24704]
[ebrowse-ms "OnCHECKPutty" () 0 () "void CMyBtnDlg::OnCHECKPutty()" 17580 1  () "void CMyBtnDlg::OnCHECKPutty()" 17580]
[ebrowse-ms "OnCreate" () 0 () "int CMyBtnDlg::OnCreate(LPCREATESTRUCT" 18922 1  () "int CMyBtnDlg::OnCreate(LPCREATESTRUCT" 18922]
[ebrowse-ms "OnDestroy" () 0 () "void CMyBtnDlg::OnDestroy()" 11953 1  () "void CMyBtnDlg::OnDestroy()" 11953]
[ebrowse-ms "OnHotKey" () 0 () "LRESULT CMyBtnDlg::OnHotKey(WPARAM" 13045 1  () "LRESULT CMyBtnDlg::OnHotKey(WPARAM" 13045]
[ebrowse-ms "OnLButtonDblClk" () 0 () "void CMyBtnDlg::OnLButtonDblClk(UINT" 16720 1  () "void CMyBtnDlg::OnLButtonDblClk(UINT" 16720]
[ebrowse-ms "OnLButtonDown" () 0 () "void CMyBtnDlg::OnLButtonDown(UINT" 11229 1  () "void CMyBtnDlg::OnLButtonDown(UINT" 11229]
[ebrowse-ms "OnLButtonUp" () 0 () "void CMyBtnDlg::OnLButtonUp(UINT" 11470 1  () "void CMyBtnDlg::OnLButtonUp(UINT" 11470]
[ebrowse-ms "OnMBtnDown" () 0 () "LRESULT CMyBtnDlg::OnMBtnDown(WPARAM" 12933 1  () "LRESULT CMyBtnDlg::OnMBtnDown(WPARAM" 12933]
[ebrowse-ms "OnMENUITEMAddButton" () 0 () "void CMyBtnDlg::OnMENUITEMAddButton()" 21013 1  () "void CMyBtnDlg::OnMENUITEMAddButton()" 21013]
[ebrowse-ms "OnMENUITEMAlignButtons" () 0 () "void CMyBtnDlg::OnMENUITEMAlignButtons()" 22315 1  () "void CMyBtnDlg::OnMENUITEMAlignButtons()" 22315]
[ebrowse-ms "OnMENUITEMAlignWin" () 0 () "void CMyBtnDlg::OnMENUITEMAlignWin()" 22423 1  () "void CMyBtnDlg::OnMENUITEMAlignWin()" 22423]
[ebrowse-ms "OnMENUITEMChangeName" () 0 () "void CMyBtnDlg::OnMENUITEMChangeName()" 22181 1  () "void CMyBtnDlg::OnMENUITEMChangeName()" 22181]
[ebrowse-ms "OnMENUITEMRemove" () 0 () "void CMyBtnDlg::OnMENUITEMRemove()" 24018 1  () "void CMyBtnDlg::OnMENUITEMRemove()" 24018]
[ebrowse-ms "OnMENUITEMShowBehind" () 0 () "void CMyBtnDlg::OnMENUITEMShowBehind()" 25222 1  () "void CMyBtnDlg::OnMENUITEMShowBehind()" 25222]
[ebrowse-ms "OnMenuitemAdjustWinPos" () 0 () "void CMyBtnDlg::OnMenuitemAdjustWinPos()" 25082 1  () "void CMyBtnDlg::OnMenuitemAdjustWinPos()" 25082]
[ebrowse-ms "OnMyButtonUp" () 0 () "void CMyBtnDlg::OnMyButtonUp(UINT" 24824 1  () "void CMyBtnDlg::OnMyButtonUp(UINT" 24824]
[ebrowse-ms "OnPaint" () 0 () "void CMyBtnDlg::OnPaint()" 9927 1  () "void CMyBtnDlg::OnPaint()" 9927]
[ebrowse-ms "OnQueryDragIcon" () 0 () "HCURSOR CMyBtnDlg::OnQueryDragIcon()" 11162 1  () "HCURSOR CMyBtnDlg::OnQueryDragIcon()" 11162]
[ebrowse-ms "OnRADIOAlignStyle1" () 0 () "void CMyBtnDlg::OnRADIOAlignStyle1()" 26204 1  () "void CMyBtnDlg::OnRADIOAlignStyle1()" 26204]
[ebrowse-ms "OnRADIOAlignStyle2" () 0 () "void CMyBtnDlg::OnRADIOAlignStyle2()" 26331 1  () "void CMyBtnDlg::OnRADIOAlignStyle2()" 26331]
[ebrowse-ms "OnRADIOAlignStyle3" () 0 () "void CMyBtnDlg::OnRADIOAlignStyle3()" 26460 1  () "void CMyBtnDlg::OnRADIOAlignStyle3()" 26460]
[ebrowse-ms "OnRButtonDown" () 0 () "void CMyBtnDlg::OnRButtonDown(UINT" 17702 1  () "void CMyBtnDlg::OnRButtonDown(UINT" 17702]
[ebrowse-ms "OnSelchangeTABCell" () 0 () "void CMyBtnDlg::OnSelchangeTABCell(NMHDR" 25761 1  () "void CMyBtnDlg::OnSelchangeTABCell(NMHDR" 25761]
[ebrowse-ms "OnSelchangeTABList" () 0 () "void CMyBtnDlg::OnSelchangeTABList(NMHDR" 25368 1  () "void CMyBtnDlg::OnSelchangeTABList(NMHDR" 25368]
[ebrowse-ms "OnSize" () 0 () "void CMyBtnDlg::OnSize(UINT" 19973 1  () "void CMyBtnDlg::OnSize(UINT" 19973]
[ebrowse-ms "OnSysCommand" () 0 () "void CMyBtnDlg::OnSysCommand(UINT" 9250 1  () "void CMyBtnDlg::OnSysCommand(UINT" 9250]
[ebrowse-ms "OnTaskBarCreated" () 0 () " LRESULT CMyBtnDlg::OnTaskBarCreated(WPARAM" 20894 1  () " LRESULT CMyBtnDlg::OnTaskBarCreated(WPARAM" 20894]
[ebrowse-ms "OnTrayNotify" () 0 () "LRESULT CMyBtnDlg::OnTrayNotify(WPARAM" 19570 1  () "LRESULT CMyBtnDlg::OnTrayNotify(WPARAM" 19570]
[ebrowse-ms "PreTranslateMessage" () 0 () "BOOL CMyBtnDlg::PreTranslateMessage(MSG" 18345 1  () "BOOL CMyBtnDlg::PreTranslateMessage(MSG" 18345]
[ebrowse-ms "RegisterWindowMessage" () 0 () "     ::RegisterWindowMessage(_T" 2110 1  () () 0]
[ebrowse-ms "ShowAll" () 0 () "void CMyBtnDlg::ShowAll()" 16506 1  () "void CMyBtnDlg::ShowAll()" 16506]
)
()
()
()
()
()()
][ebrowse-ts [ebrowse-cs "CMyBtnDlg" () 0"MyBtnDlg.h" "class CMyBtnDlg :" 665() ]
()([ebrowse-ms "m_AlignRect" () 0 () "	CRect m_AlignRect;" 1294 0  () () 0]
[ebrowse-ms "m_BtnListArray" () 0 () "	CBtnList m_BtnListArray[ListCount];" 1496 0  () () 0]
[ebrowse-ms "m_CellRectArray" () 0 () "	CCellRect m_CellRectArray[CellCount];" 1249 0  () () 0]
[ebrowse-ms "m_FullDlgRect" () 0 () "	CRect m_FullDlgRect;" 1337 0  () () 0]
[ebrowse-ms "m_TabCell" () 0 () "	CMyTabCtrl	m_TabCell;" 1839 0  () () 0]
[ebrowse-ms "m_TabList" () 0 () "	CMyTabCtrl	m_TabList;" 1816 0  () () 0]
[ebrowse-ms "m_bCellMode" () 0 () "	BOOL	m_bCellMode;" 1858 0  () () 0]
[ebrowse-ms "m_bHideDeact" () 0 () "	BOOL	m_bHideDeact;" 1894 0  () () 0]
[ebrowse-ms "m_bLarge" () 0 () "	BOOL m_bLarge;" 1354 0  () () 0]
[ebrowse-ms "m_bPutty" () 0 () "	BOOL	m_bPutty;" 1874 0  () () 0]
[ebrowse-ms "m_hIcon" () 0 () "	HICON m_hIcon;" 2134 1  () () 0]
[ebrowse-ms "m_iAlignStyle" () 0 () "	int m_iAlignStyle;" 726 0  () () 0]
[ebrowse-ms "m_kAlignWin" () 0 () "	ATOM m_kAlignWin;" 1610 0  () () 0]
[ebrowse-ms "m_kBringMe" () 0 () "	ATOM m_kBringMe;" 1571 0  () () 0]
[ebrowse-ms "m_kGetWindow" () 0 () "	ATOM m_kGetWindow;" 1553 0  () () 0]
[ebrowse-ms "m_kMinAll" () 0 () "	ATOM m_kMinAll;" 1665 0  () () 0]
[ebrowse-ms "m_kNextPage" () 0 () "	ATOM m_kNextPage;" 1629 0  () () 0]
[ebrowse-ms "m_kPrevPage" () 0 () "	ATOM m_kPrevPage;" 1648 0  () () 0]
[ebrowse-ms "m_kShowGroup" () 0 () "	ATOM m_kShowGroup;" 1591 0  () () 0]
[ebrowse-ms "m_menuCell" () 0 () "	CMenu m_menuCell;" 1374 0  () () 0]
[ebrowse-ms "m_orgCursor" () 0 () "	HCURSOR m_orgCursor;" 1396 0  () () 0]
[ebrowse-ms "m_pCurBtnList" () 0 () "	CBtnList *m_pCurBtnList;" 1522 0  () () 0]
[ebrowse-ms "m_pCurCell" () 0 () "	CCellRect *m_pCurCell;" 1273 0  () () 0]
[ebrowse-ms "m_rCellSmall" () 0 () "	CRect m_rCellSmall;" 1315 0  () () 0]
[ebrowse-ms "m_trayIcon" () 0 () "	NOTIFYICONDATA m_trayIcon;" 1694 0  () () 0]
)
([ebrowse-ms "AddButton" () 0 () "	CWnd * AddButton(HWND" 879 0  () () 0]
[ebrowse-ms "AddToCell" () 0 () "	void AddToCell(HWND" 1018 0  () () 0]
[ebrowse-ms "AddToCell" () 0 () "	void AddToCell(HWND" 990 0  () () 0]
[ebrowse-ms "CMyBtnDlg" () 0 () "	CMyBtnDlg(CWnd* pParent = NULL);" 1121 0  () () 0]
[ebrowse-ms "DECLARE_MESSAGE_MAP" () 0 () "	DECLARE_MESSAGE_MAP()" 3866 1  () () 0]
[ebrowse-ms "DelButton" () 0 () "	BOOL DelButton(CMyButton" 752 0  () () 0]
[ebrowse-ms "DelFromCell" () 0 () "	BOOL DelFromCell(HWND" 849 0  () () 0]
[ebrowse-ms "DoDataExchange" () 1 () "	virtual void DoDataExchange(CDataExchange" 2045 1  () () 0]
[ebrowse-ms "HideAll" () 0 () "	void HideAll()" 924 0  () () 0]
[ebrowse-ms "OnActivate" () 0 () "	LRESULT OnActivate(WPARAM" 3818 1  () () 0]
[ebrowse-ms "OnButton4" () 0 () "	afx_msg void OnButton4()" 2475 1  () () 0]
[ebrowse-ms "OnButtonExtShort" () 0 () "	afx_msg void OnButtonExtShort()" 2634 1  () () 0]
[ebrowse-ms "OnButtonMinAll" () 0 () "	afx_msg void OnButtonMinAll()" 2567 1  () () 0]
[ebrowse-ms "OnButtonShowAll" () 0 () "	afx_msg void OnButtonShowAll()" 2535 1  () () 0]
[ebrowse-ms "OnButtonalignme" () 0 () "	afx_msg void OnButtonalignme()" 2600 1  () () 0]
[ebrowse-ms "OnButtonminme" () 0 () "	afx_msg void OnButtonminme()" 2736 1  () () 0]
[ebrowse-ms "OnButtonshowalign" () 0 () "	afx_msg void OnButtonshowalign()" 2669 1  () () 0]
[ebrowse-ms "OnButtonshowalign2" () 0 () "	afx_msg void OnButtonshowalign2()" 2705 1  () () 0]
[ebrowse-ms "OnCHECKCellMode" () 0 () "	afx_msg void OnCHECKCellMode()" 2827 1  () () 0]
[ebrowse-ms "OnCHECKHideDeact" () 0 () "	afx_msg void OnCHECKHideDeact()" 3236 1  () () 0]
[ebrowse-ms "OnCHECKPutty" () 0 () "	afx_msg void OnCHECKPutty()" 2857 1  () () 0]
[ebrowse-ms "OnCreate" () 0 () "	afx_msg int OnCreate(LPCREATESTRUCT" 2951 1  () () 0]
[ebrowse-ms "OnDestroy" () 0 () "	afx_msg void OnDestroy()" 2502 1  () () 0]
[ebrowse-ms "OnHotKey" () 0 () "	LRESULT OnHotKey(WPARAM" 3598 1  () () 0]
[ebrowse-ms "OnInitDialog" () 1 () "	virtual BOOL OnInitDialog()" 2224 1  () () 0]
[ebrowse-ms "OnLButtonDblClk" () 0 () "	afx_msg void OnLButtonDblClk(UINT" 2772 1  () () 0]
[ebrowse-ms "OnLButtonDown" () 0 () "	afx_msg void OnLButtonDown(UINT" 2372 1  () () 0]
[ebrowse-ms "OnLButtonUp" () 0 () "	afx_msg void OnLButtonUp(UINT" 2426 1  () () 0]
[ebrowse-ms "OnMBtnDown" () 0 () "	LRESULT OnMBtnDown(WPARAM" 3648 1  () () 0]
[ebrowse-ms "OnMENUITEMAddButton" () 0 () "	afx_msg void OnMENUITEMAddButton()" 3054 1  () () 0]
[ebrowse-ms "OnMENUITEMAlignButtons" () 0 () "	afx_msg void OnMENUITEMAlignButtons()" 3132 1  () () 0]
[ebrowse-ms "OnMENUITEMAlignWin" () 0 () "	afx_msg void OnMENUITEMAlignWin()" 3168 1  () () 0]
[ebrowse-ms "OnMENUITEMChangeName" () 0 () "	afx_msg void OnMENUITEMChangeName()" 3092 1  () () 0]
[ebrowse-ms "OnMENUITEMRemove" () 0 () "	afx_msg void OnMENUITEMRemove()" 3202 1  () () 0]
[ebrowse-ms "OnMENUITEMShowBehind" () 0 () "	afx_msg void OnMENUITEMShowBehind()" 3314 1  () () 0]
[ebrowse-ms "OnMenuitemAdjustWinPos" () 0 () "	afx_msg void OnMenuitemAdjustWinPos()" 3276 1  () () 0]
[ebrowse-ms "OnMyButtonUp" () 0 () "	void OnMyButtonUp(UINT" 785 0  () () 0]
[ebrowse-ms "OnPaint" () 0 () "	afx_msg void OnPaint()" 2302 1  () () 0]
[ebrowse-ms "OnQueryDragIcon" () 0 () "	afx_msg HCURSOR OnQueryDragIcon()" 2338 1  () () 0]
[ebrowse-ms "OnRADIOAlignStyle1" () 0 () "	afx_msg void OnRADIOAlignStyle1()" 3484 1  () () 0]
[ebrowse-ms "OnRADIOAlignStyle2" () 0 () "	afx_msg void OnRADIOAlignStyle2()" 3520 1  () () 0]
[ebrowse-ms "OnRADIOAlignStyle3" () 0 () "	afx_msg void OnRADIOAlignStyle3()" 3556 1  () () 0]
[ebrowse-ms "OnRButtonDown" () 0 () "	afx_msg void OnRButtonDown(UINT" 2891 1  () () 0]
[ebrowse-ms "OnSelchangeTABCell" () 0 () "	afx_msg void OnSelchangeTABCell(NMHDR" 3421 1  () () 0]
[ebrowse-ms "OnSelchangeTABList" () 0 () "	afx_msg void OnSelchangeTABList(NMHDR" 3354 1  () () 0]
[ebrowse-ms "OnSize" () 0 () "	afx_msg void OnSize(UINT" 2994 1  () () 0]
[ebrowse-ms "OnSysCommand" () 0 () "	afx_msg void OnSysCommand(UINT" 2257 1  () () 0]
[ebrowse-ms "OnTaskBarCreated" () 0 () "	LRESULT OnTaskBarCreated(WPARAM" 3770 1  () () 0]
[ebrowse-ms "OnTrayNotify" () 0 () "	LRESULT OnTrayNotify(WPARAM" 3713 1  () () 0]
[ebrowse-ms "PreTranslateMessage" () 0 () "	BOOL PreTranslateMessage(MSG" 1097 0  () () 0]
[ebrowse-ms "ShowAll" () 0 () "	void ShowAll()" 941 0  () () 0]
)
()
()
()
()
()()
])()
()
()
()
()
()
()()
][ebrowse-ts [ebrowse-cs "*Globals*" () 0() () 0"MyBtnDlg.h" ]
()([ebrowse-ms "CellCount" () 0 () () 0 0  () "const int CellCount = 5;" 621]
[ebrowse-ms "ListCount" () 0 () () 0 0  () "const int ListCount = 5;" 646]
[ebrowse-ms "spare_in_bottom" () 0 () () 0 0  "MyBtnDlg.cpp" "const int spare_in_bottom =3;" 386]
[ebrowse-ms "spare_in_right" () 0 () () 0 0  "MyBtnDlg.cpp" "const int spare_in_right = 3;" 416]
[ebrowse-ms "sysbar_len" () 0 () () 0 0  "MyBtnDlg.cpp" "int sysbar_len;" 356]
)
()
([ebrowse-ms "THIS_FILE" () 0 () () 0 0  "MyBtnDlg.cpp" "static char THIS_FILE[] = __FILE__;" 192]
)
()
([ebrowse-ms "AFX_MYBTNDLG_H__529A1F28_E203_4623_AD8D_E190334CF60D__INCLUDED_" () 512 () () 0 0  () "529A1F28_E203_4623_AD8D_E190334CF60D__INCLUDED_
" 182]
[ebrowse-ms "MAINTRAYICON" () 512 () () 0 0  () "#define MAINTRAYICON	" 591]
[ebrowse-ms "WM_TRAYICON" () 512 () () 0 0  () "#define	WM_TRAYICON	" 558]
[ebrowse-ms "new" () 512 () () 0 0  "MyBtnDlg.cpp" "#define new " 130]
)
()
()()
]

[-- Attachment #4: MyBtnDlg.h --]
[-- Type: application/octet-stream, Size: 4250 bytes --]

// MyBtnDlg.h : header file
//

#if !defined(AFX_MYBTNDLG_H__529A1F28_E203_4623_AD8D_E190334CF60D__INCLUDED_)
#define AFX_MYBTNDLG_H__529A1F28_E203_4623_AD8D_E190334CF60D__INCLUDED_

#include "BtnList.h"	// Added by ClassView
#include "MyBtn.h"	// Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
// CMyBtnDlg dialog

#include "MyButton.h"
#include "InputDlg.h"
#include "CellRect.h"	// Added by ClassView
#include "MyTabCtrl.h"

#define	WM_TRAYICON		WM_USER+1

#define MAINTRAYICON	1234

const int CellCount = 5;
const int ListCount = 5;

class CMyBtnDlg : public CDialog
{
// Construction
public:
	int m_iAlignStyle;
	BOOL DelButton(CMyButton * pBtn);
	void OnMyButtonUp(UINT nFlags, CPoint point, CMyButton * pBtn);
	BOOL DelFromCell(HWND hWnd);
	CWnd * AddButton(HWND hWnd, CPoint point = NULL);

	void HideAll();
	void ShowAll();

	//Interface to CMyButton
	void AddToCell(HWND hWnd);
	void AddToCell(HWND hWnd, int row, int col);



	//void OnCancel( );
	BOOL PreTranslateMessage(MSG* pMsg);
	CMyBtnDlg(CWnd* pParent = NULL);	// standard constructor


	//Cell Rect Object
	//CCellRect m_CellRect;
	CCellRect m_CellRectArray[CellCount];
	CCellRect *m_pCurCell;

	CRect m_AlignRect;
	CRect m_rCellSmall;
	CRect m_FullDlgRect;

	BOOL m_bLarge;

	CMenu m_menuCell;
	HCURSOR m_orgCursor;


	//Button List
	//CObList m_BtnList;
	//CBtnList m_oBtnList;
	CBtnList m_BtnListArray[ListCount];
	CBtnList *m_pCurBtnList;

	//HotKey
	ATOM m_kGetWindow;
	ATOM m_kBringMe;
	ATOM m_kShowGroup;
	ATOM m_kAlignWin;
	ATOM m_kNextPage;
	ATOM m_kPrevPage;
	ATOM m_kMinAll;

	NOTIFYICONDATA m_trayIcon;
	//CMenu m_menuTray;




// Dialog Data
	//{{AFX_DATA(CMyBtnDlg)
	enum { IDD = IDD_MYBTN_DIALOG };
	CMyTabCtrl	m_TabList;
	CMyTabCtrl	m_TabCell;
	BOOL	m_bCellMode;
	BOOL	m_bPutty;
	BOOL	m_bHideDeact;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMyBtnDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	//{{AFX_MSG(CMyBtnDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnButton4();
	afx_msg void OnDestroy();
	afx_msg void OnButtonShowAll();
	afx_msg void OnButtonMinAll();
	afx_msg void OnButtonalignme();
	afx_msg void OnButtonExtShort();
	afx_msg void OnButtonshowalign();
	afx_msg void OnButtonshowalign2();
	afx_msg void OnButtonminme();
	afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
	afx_msg void OnCHECKCellMode();
	afx_msg void OnCHECKPutty();
	afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnMENUITEMAddButton();
	afx_msg void OnMENUITEMChangeName();
	afx_msg void OnMENUITEMAlignButtons();
	afx_msg void OnMENUITEMAlignWin();
	afx_msg void OnMENUITEMRemove();
	afx_msg void OnCHECKHideDeact();
	afx_msg void OnMenuitemAdjustWinPos();
	afx_msg void OnMENUITEMShowBehind();
	afx_msg void OnSelchangeTABList(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnSelchangeTABCell(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnRADIOAlignStyle1();
	afx_msg void OnRADIOAlignStyle2();
	afx_msg void OnRADIOAlignStyle3();
	//}}AFX_MSG



	LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);
	LRESULT OnMBtnDown(WPARAM wParam,LPARAM lParam);

	//TrayIcon
	LRESULT OnTrayNotify(WPARAM wParam, LPARAM lParam);
	LRESULT OnTaskBarCreated(WPARAM wp, LPARAM lp);

	//
	LRESULT OnActivate(WPARAM wParam, LPARAM lParam);

	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MYBTNDLG_H__529A1F28_E203_4623_AD8D_E190334CF60D__INCLUDED_)




             reply	other threads:[~2008-04-21 12:12 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-21 12:12 brianjiang [this message]
  -- strict thread matches above, loose matches on Subject: below --
2007-01-25 20:19 ebrowse problem scianagoryczy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E8406C8B43BCEF4C9D71563A41E7E23F8AD4E3@RND-MX01.rnd.gdnt.local \
    --to=brianjiang@gdnt.com.cn \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.