Click here to Skip to main content
15,896,269 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: SendMessage Function .... Pin
Parthi_Appu8-Aug-06 0:51
Parthi_Appu8-Aug-06 0:51 
AnswerRe: SendMessage Function .... Pin
Hamid_RT7-Aug-06 21:21
Hamid_RT7-Aug-06 21:21 
GeneralRe: SendMessage Function .... Pin
sach!!7-Aug-06 21:31
sach!!7-Aug-06 21:31 
QuestionMoving Ellipse Problem [modified] Pin
uday kiran janaswamy7-Aug-06 20:08
uday kiran janaswamy7-Aug-06 20:08 
AnswerRe: Moving Ellipse Problem Pin
Hamid_RT7-Aug-06 21:44
Hamid_RT7-Aug-06 21:44 
GeneralRe: Moving Ellipse Problem Pin
uday kiran janaswamy7-Aug-06 23:16
uday kiran janaswamy7-Aug-06 23:16 
GeneralRe: Moving Ellipse Problem Pin
Hamid_RT8-Aug-06 1:05
Hamid_RT8-Aug-06 1:05 
GeneralRe: Moving Ellipse Problem [modified] Pin
uday kiran janaswamy8-Aug-06 1:42
uday kiran janaswamy8-Aug-06 1:42 
Hi whitsky,

i am giving all the variables initialized. please see it. and also the View Class

//==========================================================

class CPaintingView : public CScrollView
{
protected: // create from serialization only
CPaintingView();
DECLARE_DYNCREATE(CPaintingView)

// Attributes
public:
CPaintingDoc* GetDocument();

// Operations
public:

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CPaintingView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual void OnInitialUpdate(); // called first time after construct
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
//}}AFX_VIRTUAL

// Implementation
public:
CPoint Anchor;
CPoint DrawTo;
CPoint OldPoint;
bool bEllipseFlag;
bool insidepoint;
int array[60];
CStringArray strCollect;

public:
void showCordinates(CPoint point);
void DrawPixel();
void DrawCircles();
public:

UINT m_Circle,m_SolidCircle,m_Rectangle,m_SolidRectangle,m_Line;
CString szPosx,szPosy,Res;
bool circleDrawn;
virtual ~CPaintingView();

#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
//{{AFX_MSG(CPaintingView)
afx_msg void OnFiguresCircle();
afx_msg void OnUpdateFiguresCircle(CCmdUI* pCmdUI);
afx_msg void OnButton32773();
afx_msg void OnUpdateButton32773(CCmdUI* pCmdUI);
afx_msg void OnButton32774();
afx_msg void OnFiguresExit();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnButton32775();
afx_msg void OnUpdateButton32775(CCmdUI* pCmdUI);
afx_msg void OnFiguresSolidcircle();
afx_msg void OnUpdateFiguresSolidcircle(CCmdUI* pCmdUI);
afx_msg void OnFiguresRectangle();
afx_msg void OnUpdateFiguresRectangle(CCmdUI* pCmdUI);
afx_msg void OnFiguresSolidrectangle();
afx_msg void OnUpdateFiguresSolidrectangle(CCmdUI* pCmdUI);
afx_msg void OnFiguresLine();
afx_msg void OnUpdateFiguresLine(CCmdUI* pCmdUI);
afx_msg void OnButton32780();
afx_msg void OnUpdateButton32780(CCmdUI* pCmdUI);
afx_msg void OnButton32782();
afx_msg void OnUpdateButton32782(CCmdUI* pCmdUI);
afx_msg void OnButton32781();
afx_msg void OnUpdateButton32781(CCmdUI* pCmdUI);
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnSize(UINT nType, int cx, int cy);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

//==============================================================
View Class

#include "stdafx.h"
#include "painting.h"
#include "colorattr.h"
#include "paintingDoc.h"
#include "paintingView.h"
#include "MainFrm.h"

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

IMPLEMENT_DYNCREATE(CPaintingView, CScrollView)
BEGIN_MESSAGE_MAP(CPaintingView, CScrollView)
//{{AFX_MSG_MAP(CPaintingView)
ON_COMMAND(ID_FIGURES_CIRCLE, OnFiguresCircle)
ON_UPDATE_COMMAND_UI(ID_FIGURES_CIRCLE, OnUpdateFiguresCircle)
ON_COMMAND(ID_BUTTON32773, OnButton32773)
ON_UPDATE_COMMAND_UI(ID_BUTTON32773, OnUpdateButton32773)
ON_COMMAND(ID_BUTTON32774, OnButton32774)
ON_COMMAND(ID_FIGURES_EXIT, OnFiguresExit)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONDOWN()
ON_COMMAND(ID_BUTTON32775, OnButton32775)
ON_UPDATE_COMMAND_UI(ID_BUTTON32775, OnUpdateButton32775)
ON_COMMAND(ID_FIGURES_SOLIDCIRCLE, OnFiguresSolidcircle)
ON_UPDATE_COMMAND_UI(ID_FIGURES_SOLIDCIRCLE, OnUpdateFiguresSolidcircle)
ON_COMMAND(ID_FIGURES_RECTANGLE, OnFiguresRectangle)
ON_UPDATE_COMMAND_UI(ID_FIGURES_RECTANGLE, OnUpdateFiguresRectangle)
ON_COMMAND(ID_FIGURES_SOLIDRECTANGLE, OnFiguresSolidrectangle)
ON_UPDATE_COMMAND_UI(ID_FIGURES_SOLIDRECTANGLE, OnUpdateFiguresSolidrectangle)
ON_COMMAND(ID_FIGURES_LINE, OnFiguresLine)
ON_UPDATE_COMMAND_UI(ID_FIGURES_LINE, OnUpdateFiguresLine)
ON_COMMAND(ID_BUTTON32780, OnButton32780)
ON_UPDATE_COMMAND_UI(ID_BUTTON32780, OnUpdateButton32780)
ON_COMMAND(ID_BUTTON32782, OnButton32782)
ON_UPDATE_COMMAND_UI(ID_BUTTON32782, OnUpdateButton32782)
ON_COMMAND(ID_BUTTON32781, OnButton32781)
ON_UPDATE_COMMAND_UI(ID_BUTTON32781, OnUpdateButton32781)
ON_WM_PAINT()
ON_WM_ERASEBKGND()
ON_WM_SIZE()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPaintingView construction/destruction

CPaintingView::CPaintingView()
{

}

CPaintingView::~CPaintingView()
{

}

BOOL CPaintingView::PreCreateWindow(CREATESTRUCT& cs)
{
return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CPaintingView drawing

void CPaintingView::OnDraw(CDC* pDC)
{
CPaintingDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
}


void CPaintingView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();

CSize sizeTotal;
sizeTotal.cx = 200;
sizeTotal.cy = 200;
SetScrollSizes(MM_HIENGLISH,sizeTotal);

bEllipseFlag = false;
insidepoint = false;
circleDrawn = false;
}


BOOL CPaintingView::OnPreparePrinting(CPrintInfo* pInfo)
{
return DoPreparePrinting(pInfo);
}

void CPaintingView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}

void CPaintingView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{

}

#ifdef _DEBUG
void CPaintingView::AssertValid() const
{
CScrollView::AssertValid();
}

void CPaintingView::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}

CPaintingDoc* CPaintingView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPaintingDoc)));
return (CPaintingDoc*)m_pDocument;
}
#endif //_DEBUG

void CPaintingView::OnLButtonDown(UINT nFlags, CPoint point)
{
Anchor = point;
OldPoint = Anchor;

if((nFlags && MK_LBUTTON) && circleDrawn == false) // For First Time
{
CString strReadBuffer,strTokenizer;
int index = -1,ind=0;

for(int i =0; i < strCollect.GetSize(); i++)
{
strReadBuffer = strCollect.GetAt(i);
index = strReadBuffer.Find(",");
do
{
strTokenizer = strReadBuffer.Left(index);
strReadBuffer = strReadBuffer.Mid(index+1);
index = strReadBuffer.Find(",");
array[ind++]= atoi(strTokenizer.GetBuffer(0));
}while(index != -1);

if(index == -1) array[ind++] = atoi(strReadBuffer.GetBuffer(0));
array[ind++] = '\0';
ind =0;

CRgn rgn;
rgn.CreateEllipticRgn(array[0],array[1],array[2],array[3]);
if(rgn.PtInRegion(point)== TRUE) insidepoint = true;
}
}
CScrollView::OnLButtonDown(nFlags, point);
}

void CPaintingView::OnLButtonUp(UINT nFlags, CPoint point)
{
CClientDC dc(this);

DrawTo = point;
CPen one,*old;

if(insidepoint == true && bEllipseFlag == false && insidepoint == true && nFlags & MK_SHIFT)
{
one.CreatePen(PS_DASHDOTDOT,1,RGB(100,0,10));
old = dc.SelectObject(&one);
dc.SetROP2(R2_NOT);
dc.SelectStockObject(NULL_BRUSH);
dc.SetBkMode(TRANSPARENT);
dc.Ellipse(DrawTo.x + array[0],DrawTo.y+array[1],(DrawTo.x + array[2]),(DrawTo.y + array[3]));
insidepoint = false;
dc.SelectObject(old);
showCordinates(DrawTo);
}

else if(bEllipseFlag && insidepoint == false)
{
CRect rect;
GetClientRect(&rect);
ScreenToClient(&rect);
one.CreatePen(PS_DASHDOTDOT,1,RGB(100,0,10));
old = dc.SelectObject(&one);
SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR1));
dc.SelectStockObject(NULL_BRUSH);
dc.Ellipse(Anchor.x, Anchor.y, point.x, point.y);
dc.SelectObject(old);

CString strCordinates;
strCordinates.Format("%d,%d,%d,%d",Anchor.x,Anchor.y,point.x,point.y);
strCollect.Add(strCordinates);
}

CScrollView::OnLButtonUp(nFlags, point);
}

void CPaintingView::OnMouseMove(UINT nFlags, CPoint point)
{

CClientDC dc(this);
CPen one,*old;

if(insidepoint == true && bEllipseFlag == false && insidepoint == true && nFlags & MK_SHIFT )
{
OnPrepareDC(&dc);
dc.LPtoDP(&point);
one.CreatePen(PS_DASHDOTDOT,1,RGB(100,0,10));
old = dc.SelectObject(&one);
dc.SelectStockObject(NULL_BRUSH);
dc.SetROP2(R2_NOT);
dc.Ellipse(OldPoint.x+ array[0],OldPoint.y+array[1],(point.x + array[2]),(point.y + array[3]));
dc.Ellipse(OldPoint.x+ array[0],OldPoint.y+array[1],(point.x + array[2]),(point.y + array[3]));
OldPoint = point;
dc.SelectObject(old);
showCordinates(point);
}

if((nFlags && MK_LBUTTON) && bEllipseFlag && circleDrawn == true)
{
SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR1));
dc.SetROP2(R2_NOT);
dc.SelectStockObject(NULL_BRUSH);
one.CreatePen(PS_DASHDOTDOT,1,RGB(100,0,10));
old = dc.SelectObject(&one);
dc.Ellipse(OldPoint.x, OldPoint.y, Anchor.x, Anchor.y);
dc.Ellipse(Anchor.x, Anchor.y, point.x, point.y);
OldPoint= point;
dc.SelectObject(old);
showCordinates(point);
}
CScrollView::OnMouseMove(nFlags, point);
}

void CPaintingView::showCordinates(CPoint point)
{
szPosx.Format("%d",point.x);
szPosy.Format("%d",point.y);
Res = "x=";
Res += szPosx;
Res += ",";
Res += "y=";
Res += szPosy;
CMainFrame* pFrameParent = (CMainFrame *)GetParentFrame();
pFrameParent->m_wndStatusBar.SetPaneText(4,Res);
}

void CPaintingView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
if(circleDrawn == false)
{
CString strReadBuffer,strTokenizer;
int index = -1,ind=0;

for(int i =0; i< strCollect.GetSize(); i++)
{
strReadBuffer = strCollect.GetAt(i);
index = strReadBuffer.Find(",");
do
{
strTokenizer = strReadBuffer.Left(index);
strReadBuffer = strReadBuffer.Mid(index+1);
index = strReadBuffer.Find(",");
array[ind++]= atoi(strTokenizer.GetBuffer(0));
}while(index != -1);

if(index == -1){
array[ind++] = atoi(strReadBuffer.GetBuffer(0));
}
array[ind++] = '\0';

ind =0;
CRgn rgn;
rgn.CreateEllipticRgn(array[0],array[1],array[2],array[3]);
if(rgn.PtInRegion(point)== TRUE)
{
insidepoint = true;
colorattr attr;
attr.ptrPaint = this;
attr.DoModal();
}
if(insidepoint == true) break;
}
}
CScrollView::OnLButtonDblClk(nFlags, point);
}


void CPaintingView::OnRButtonDown(UINT nFlags, CPoint point)
{
if(bEllipseFlag == true){
SetCursor(AfxGetApp()->LoadCursor(IDC_ARROW));
bEllipseFlag = false;
}
CScrollView::OnRButtonDown(nFlags, point);
circleDrawn = false;
}

void CPaintingView::OnPaint()
{
DrawPixel(); //Call this Function to Paint the Back Ground
CPaintDC dc(this);
int nRet;
CDC dcMem;
CRect rect;
CBitmap bmpMem;
GetClientRect(&rect); //Capture the Image of the Screen what we Want
nRet = dcMem.CreateCompatibleDC(&dc);
nRet = bmpMem.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
CBitmap *pOldBmp = (CBitmap *)(dcMem.SelectObject(&bmpMem));
dc.BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, SRCCOPY);
dcMem.SelectObject(pOldBmp);
bmpMem.DeleteObject();
dcMem.DeleteDC();
}

void CPaintingView::DrawCircles()
{
CString strReadBuffer,strTokenizer;
int index = -1,ind=0;

for(int i =0; i< strCollect.GetSize(); i++)
{
strReadBuffer = strCollect.GetAt(i);
index = strReadBuffer.Find(",");
do
{
strTokenizer = strReadBuffer.Left(index);
strReadBuffer = strReadBuffer.Mid(index+1);
index = strReadBuffer.Find(",");
array[ind++]= atoi(strTokenizer.GetBuffer(0));
}while(index != -1);

if(index == -1) array[ind++] = atoi(strReadBuffer.GetBuffer(0));
array[ind++] = '\0';
ind =0;
CClientDC dc(this);
CPen one,*old;
CRect rect;
GetClientRect(&rect);
one.CreatePen(PS_DASHDOTDOT,1,RGB(100,0,10));
old = dc.SelectObject(&one);
dc.SelectStockObject(NULL_BRUSH);
dc.Ellipse(array[0],array[1],array[2],array[3]);
dc.SelectObject(old);
}
}

BOOL CPaintingView::OnEraseBkgnd(CDC* pDC)
{
return TRUE; //Erase the BackGround Color
}

void CPaintingView::DrawPixel()
{
CRect Recto; //Draw the BackGround Color
GetClientRect(&Recto);
CPaintDC dc(this);
CBrush bgBrush;
CBrush *pBrush;

bgBrush.CreateSolidBrush(RGB(0,0,0));
pBrush = dc.SelectObject(&bgBrush);
dc.Rectangle(0,0,Recto.Width(), Recto.Height());

for(int x = 0; x < Recto.Width(); x += 17)
{
for(int y = 0; y < Recto.Height(); y += 17)
{
dc.SetPixel(x, y, RGB(255, 255, 255));
}
}
dc.SelectObject(pBrush);
}

void CPaintingView::OnFiguresCircle()
{
m_Circle = ID_FIGURES_CIRCLE;
bEllipseFlag = true;
circleDrawn = true;
}

void CPaintingView::OnButton32773()
{
m_Circle = ID_FIGURES_CIRCLE;
bEllipseFlag = true;
circleDrawn = true;
}

void CPaintingView::OnUpdateButton32773(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio((m_Circle == ID_FIGURES_CIRCLE)?1Blush | :O );
}

void CPaintingView::OnButton32774()
{
(strCollect.GetSize() > 0 ? strCollect.RemoveAll(): 0);
PostQuitMessage(0);
}

void CPaintingView::OnFiguresExit()
{
(strCollect.GetSize() > 0 ? strCollect.RemoveAll(): 0);
PostQuitMessage(0);
}

void CPaintingView::OnUpdateFiguresCircle(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio((m_Circle == ID_FIGURES_CIRCLE)?1Blush | :O );
}

void CPaintingView::OnButton32775()
{
m_SolidCircle = ID_FIGURES_SOLIDCIRCLE;
}

void CPaintingView::OnUpdateButton32775(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio((m_SolidCircle == ID_FIGURES_SOLIDCIRCLE) ? 1Blush | :O );
}

void CPaintingView::OnFiguresSolidcircle()
{
m_SolidCircle = ID_FIGURES_SOLIDCIRCLE;
}

void CPaintingView::OnUpdateFiguresSolidcircle(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio((m_SolidCircle == ID_FIGURES_SOLIDCIRCLE) ? 1Blush | :O );
}

void CPaintingView::OnFiguresRectangle()
{
m_Rectangle =ID_FIGURES_RECTANGLE;
}

void CPaintingView::OnUpdateFiguresRectangle(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio((m_Rectangle == ID_FIGURES_RECTANGLE) ? 1Blush | :O );
}

void CPaintingView::OnFiguresSolidrectangle()
{
m_SolidRectangle = ID_FIGURES_SOLIDRECTANGLE;
}

void CPaintingView::OnUpdateFiguresSolidrectangle(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio((m_SolidRectangle == ID_FIGURES_SOLIDRECTANGLE) ? 1Blush | :O );
}

void CPaintingView::OnFiguresLine()
{
m_Line = ID_FIGURES_LINE;
}

void CPaintingView::OnUpdateFiguresLine(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio((m_Line =ID_FIGURES_LINE) ? 1Blush | :O );
}

void CPaintingView::OnButton32780()
{
m_Line = ID_FIGURES_LINE;
}

void CPaintingView::OnUpdateButton32780(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio((m_Line =ID_FIGURES_LINE) ? 1Blush | :O );
}

void CPaintingView::OnButton32782()
{
m_SolidRectangle = ID_FIGURES_SOLIDRECTANGLE;
}

void CPaintingView::OnUpdateButton32782(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio((m_SolidRectangle == ID_FIGURES_SOLIDRECTANGLE) ? 1Blush | :O );
}

void CPaintingView::OnButton32781()
{
m_Rectangle =ID_FIGURES_RECTANGLE;
}

void CPaintingView::OnUpdateButton32781(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio((m_Rectangle == ID_FIGURES_RECTANGLE) ? 1Blush | :O );
}

void CPaintingView::OnSize(UINT nType, int cx, int cy)
{
CScrollView::OnSize(nType, cx, cy);
DrawPixel();
DrawCircles();
}




//==============================================================

Please provide me a solution.

Uday kiran


-- modified at 7:43 Tuesday 8th August, 2006

uday
GeneralRe: Moving Ellipse Problem Pin
Hamid_RT8-Aug-06 4:37
Hamid_RT8-Aug-06 4:37 
QuestionHow to resize application acoording to system resolution set? Pin
jadhav1237-Aug-06 19:02
jadhav1237-Aug-06 19:02 
AnswerRe: How to resize application acoording to system resolution set? Pin
mails2dhana7-Aug-06 19:33
mails2dhana7-Aug-06 19:33 
GeneralRe: How to resize application acoording to system resolution set? Pin
Naveen7-Aug-06 19:43
Naveen7-Aug-06 19:43 
GeneralRe: How to resize application acoording to system resolution set? Pin
Hamid_RT7-Aug-06 20:34
Hamid_RT7-Aug-06 20:34 
AnswerRe: How to resize application acoording to system resolution set? Pin
Naren Neelamegam7-Aug-06 21:05
Naren Neelamegam7-Aug-06 21:05 
QuestionDisable tab control Pin
see me7-Aug-06 17:50
see me7-Aug-06 17:50 
AnswerRe: Disable tab control Pin
Naveen7-Aug-06 18:54
Naveen7-Aug-06 18:54 
AnswerRe: Disable tab control Pin
Parthi_Appu7-Aug-06 19:20
Parthi_Appu7-Aug-06 19:20 
QuestionUser Process Memory Pin
Manish K. Agarwal7-Aug-06 17:39
Manish K. Agarwal7-Aug-06 17:39 
AnswerRe: User Process Memory Pin
Michael Dunn7-Aug-06 19:57
sitebuilderMichael Dunn7-Aug-06 19:57 
QuestionWinSock error with recv() function. Pin
Robert Palma Jr.7-Aug-06 16:35
Robert Palma Jr.7-Aug-06 16:35 
AnswerRe: WinSock error with recv() function. Pin
Kiran Pinjala7-Aug-06 20:19
Kiran Pinjala7-Aug-06 20:19 
GeneralRe: WinSock error with recv() function. Pin
Robert Palma Jr.8-Aug-06 6:30
Robert Palma Jr.8-Aug-06 6:30 
Questionerror Pin
thathvamsi7-Aug-06 16:10
thathvamsi7-Aug-06 16:10 
AnswerRe: error Pin
kakan7-Aug-06 19:27
professionalkakan7-Aug-06 19:27 
AnswerRe: error [modified] Pin
Parthi_Appu7-Aug-06 19:42
Parthi_Appu7-Aug-06 19:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.