我用mfc向导生成了一个基于文档/视图的但文档程序
是向4x4的矩形里添加颜色,颜色的命令消息由文档处理,
但是奇怪的是其他颜色都好用只是黄色不好用(更新也不好用)
我很无奈请大家帮帮忙看看有什么不对,还是其他地方可能有错
我没用RANGE
// SquaresDoc.cpp : implementation of the CSquaresDoc class
//#include "stdafx.h"
#include "SdiSquares.h"#include "SquaresDoc.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// CSquaresDocIMPLEMENT_DYNCREATE(CSquaresDoc, CDocument)BEGIN_MESSAGE_MAP(CSquaresDoc, CDocument)
//{{AFX_MSG_MAP(CSquaresDoc)
ON_COMMAND(ID_COLOR_RED, OnColorRed)
ON_COMMAND(ID_COLOR_YELLOW, OnColorYellow)
ON_COMMAND(ID_COLOR_BLUE, OnColorBlue)
ON_COMMAND(ID_COLOR_CYAN, OnColorCyan)
ON_COMMAND(ID_COLOR_GREEN, OnColorGreen)
ON_COMMAND(ID_COLOR_WHITE, OnColorWhite)
ON_UPDATE_COMMAND_UI(ID_COLOR_BLUE, OnUpdateColorBlue)
ON_UPDATE_COMMAND_UI(ID_COLOR_CYAN, OnUpdateColorCyan)
ON_UPDATE_COMMAND_UI(ID_COLOR_GREEN, OnUpdateColorGreen)
ON_UPDATE_COMMAND_UI(ID_COLOR_RED, OnUpdateColorRed)
ON_UPDATE_COMMAND_UI(ID_COLOR_WHITE, OnUpdateColorWhite)
ON_UPDATE_COMMAND_UI(ID_COLOR_YELLOW, OnUpdateColorYellow)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// CSquaresDoc construction/destructionCSquaresDoc::CSquaresDoc()
{
// TODO: add one-time construction code here}CSquaresDoc::~CSquaresDoc()
{
}BOOL CSquaresDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE; for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
m_clrGrid[i][j]=RGB(255,255,255);
m_clrCurrentColor=RGB(255,255,255);
// (SDI documents will reuse this document) return TRUE;
}/////////////////////////////////////////////////////////////////////////////
// CSquaresDoc serializationvoid CSquaresDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
ar<<m_clrGrid[i][j];
ar<<m_clrCurrentColor;
}
else
{
// TODO: add loading code here
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
ar>>m_clrGrid[i][j];
ar>>m_clrCurrentColor;
}
}/////////////////////////////////////////////////////////////////////////////
// CSquaresDoc diagnostics#ifdef _DEBUG
void CSquaresDoc::AssertValid() const
{
CDocument::AssertValid();
}void CSquaresDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////
// CSquaresDoc commandsvoid CSquaresDoc::SetSquare(int i, int j, COLORREF color)
{
ASSERT(i>=0&&i<=3&&j>=0&&j<=3);
m_clrGrid[i][j]=color;
SetModifiedFlag(TRUE);
UpdateAllViews(NULL);
}COLORREF CSquaresDoc::GetCurrentColor()
{
return m_clrCurrentColor;
}COLORREF CSquaresDoc::GetSquare(int i, int j)
{
ASSERT(i>=0&&i<=3&&j>=0&&j<=3);
return m_clrGrid[i][j];
}void CSquaresDoc::OnColorYellow()
{
m_clrCurrentColor=RGB(255,255,0);
}void CSquaresDoc::OnColorRed()
{
m_clrCurrentColor=RGB(255,0,0);
}void CSquaresDoc::OnColorBlue()
{
m_clrCurrentColor=RGB(0,0,255);
}void CSquaresDoc::OnColorCyan()
{
m_clrCurrentColor=RGB(0,255,255);
}void CSquaresDoc::OnColorGreen()
{
m_clrCurrentColor=RGB(0,255,0);
}void CSquaresDoc::OnColorWhite()
{
m_clrCurrentColor=RGB(255,255,255);
}void CSquaresDoc::OnUpdateColorBlue(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(0,0,255));
}void CSquaresDoc::OnUpdateColorCyan(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(0,255,255));
}void CSquaresDoc::OnUpdateColorGreen(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(0,255,0));
}void CSquaresDoc::OnUpdateColorRed(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(255,0,0));
}void CSquaresDoc::OnUpdateColorWhite(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(255,255,255));
}void CSquaresDoc::OnUpdateColorYellow(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(255,255,0));
}
是向4x4的矩形里添加颜色,颜色的命令消息由文档处理,
但是奇怪的是其他颜色都好用只是黄色不好用(更新也不好用)
我很无奈请大家帮帮忙看看有什么不对,还是其他地方可能有错
我没用RANGE
// SquaresDoc.cpp : implementation of the CSquaresDoc class
//#include "stdafx.h"
#include "SdiSquares.h"#include "SquaresDoc.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// CSquaresDocIMPLEMENT_DYNCREATE(CSquaresDoc, CDocument)BEGIN_MESSAGE_MAP(CSquaresDoc, CDocument)
//{{AFX_MSG_MAP(CSquaresDoc)
ON_COMMAND(ID_COLOR_RED, OnColorRed)
ON_COMMAND(ID_COLOR_YELLOW, OnColorYellow)
ON_COMMAND(ID_COLOR_BLUE, OnColorBlue)
ON_COMMAND(ID_COLOR_CYAN, OnColorCyan)
ON_COMMAND(ID_COLOR_GREEN, OnColorGreen)
ON_COMMAND(ID_COLOR_WHITE, OnColorWhite)
ON_UPDATE_COMMAND_UI(ID_COLOR_BLUE, OnUpdateColorBlue)
ON_UPDATE_COMMAND_UI(ID_COLOR_CYAN, OnUpdateColorCyan)
ON_UPDATE_COMMAND_UI(ID_COLOR_GREEN, OnUpdateColorGreen)
ON_UPDATE_COMMAND_UI(ID_COLOR_RED, OnUpdateColorRed)
ON_UPDATE_COMMAND_UI(ID_COLOR_WHITE, OnUpdateColorWhite)
ON_UPDATE_COMMAND_UI(ID_COLOR_YELLOW, OnUpdateColorYellow)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// CSquaresDoc construction/destructionCSquaresDoc::CSquaresDoc()
{
// TODO: add one-time construction code here}CSquaresDoc::~CSquaresDoc()
{
}BOOL CSquaresDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE; for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
m_clrGrid[i][j]=RGB(255,255,255);
m_clrCurrentColor=RGB(255,255,255);
// (SDI documents will reuse this document) return TRUE;
}/////////////////////////////////////////////////////////////////////////////
// CSquaresDoc serializationvoid CSquaresDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
ar<<m_clrGrid[i][j];
ar<<m_clrCurrentColor;
}
else
{
// TODO: add loading code here
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
ar>>m_clrGrid[i][j];
ar>>m_clrCurrentColor;
}
}/////////////////////////////////////////////////////////////////////////////
// CSquaresDoc diagnostics#ifdef _DEBUG
void CSquaresDoc::AssertValid() const
{
CDocument::AssertValid();
}void CSquaresDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////
// CSquaresDoc commandsvoid CSquaresDoc::SetSquare(int i, int j, COLORREF color)
{
ASSERT(i>=0&&i<=3&&j>=0&&j<=3);
m_clrGrid[i][j]=color;
SetModifiedFlag(TRUE);
UpdateAllViews(NULL);
}COLORREF CSquaresDoc::GetCurrentColor()
{
return m_clrCurrentColor;
}COLORREF CSquaresDoc::GetSquare(int i, int j)
{
ASSERT(i>=0&&i<=3&&j>=0&&j<=3);
return m_clrGrid[i][j];
}void CSquaresDoc::OnColorYellow()
{
m_clrCurrentColor=RGB(255,255,0);
}void CSquaresDoc::OnColorRed()
{
m_clrCurrentColor=RGB(255,0,0);
}void CSquaresDoc::OnColorBlue()
{
m_clrCurrentColor=RGB(0,0,255);
}void CSquaresDoc::OnColorCyan()
{
m_clrCurrentColor=RGB(0,255,255);
}void CSquaresDoc::OnColorGreen()
{
m_clrCurrentColor=RGB(0,255,0);
}void CSquaresDoc::OnColorWhite()
{
m_clrCurrentColor=RGB(255,255,255);
}void CSquaresDoc::OnUpdateColorBlue(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(0,0,255));
}void CSquaresDoc::OnUpdateColorCyan(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(0,255,255));
}void CSquaresDoc::OnUpdateColorGreen(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(0,255,0));
}void CSquaresDoc::OnUpdateColorRed(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(255,0,0));
}void CSquaresDoc::OnUpdateColorWhite(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(255,255,255));
}void CSquaresDoc::OnUpdateColorYellow(CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_clrCurrentColor==RGB(255,255,0));
}
解决方案 »
- 新手问个菜鸟问题,VC怎么新建一幅指定大小的位图,并保存到磁盘。
- CListCtrl 在模式窗口中使用的问题,请高手帮帮忙
- 天之窟窿
- 如何判断某个文件和目录是否存在?(最好用SDK)
- 如何使用CRecordset类
- 大家有没有碰到这样的问题,就是在debug 版本里可以运行,可是生成release版本就无法运行
- vc调用word的问题。
- 如何在Edit中输出回车!!!!!!!!!
- 怎么回收ADO资源?_connectPtr, _recordsetPtr类型
- 请教如何改变一Button的bkcolor 和 textcolor,在98中WM_CtlColor消息好象是无效的
- 在点击 clistbox 的空白处的时候, 怎么自动清除所有的已选行?
- 请教如何将内存中的一个html格式的字符串显示在htmlview中,谢谢!!!
不过我没贴错我真的是不知哪里错了
除了黄色其他的都好用
帮帮忙想想还哪里错了
我把doc也贴出来
// SquaresDoc.h : interface of the CSquaresDoc class
//
/////////////////////////////////////////////////////////////////////////////#if !defined(AFX_SQUARESDOC_H__7BA6109C_99C6_4644_97BE_7D00663B2F61__INCLUDED_)
#define AFX_SQUARESDOC_H__7BA6109C_99C6_4644_97BE_7D00663B2F61__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CSquaresDoc : public CDocument
{
protected: // create from serialization only
CSquaresDoc();
DECLARE_DYNCREATE(CSquaresDoc)// Attributes
public:// Operations
public:// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSquaresDoc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
//}}AFX_VIRTUAL// Implementation
public:
COLORREF GetSquare(int i,int j);
COLORREF GetCurrentColor();
void SetSquare(int i,int j,COLORREF color);
virtual ~CSquaresDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endifprotected:// Generated message map functions
protected:
COLORREF m_clrCurrentColor;
COLORREF m_clrGrid[4][4];
//{{AFX_MSG(CSquaresDoc)
afx_msg void OnColorRed();
afx_msg void OnColorBlue();
afx_msg void OnColorCyan();
afx_msg void OnColorGreen();
afx_msg void OnColorWhite();
afx_msg void OnColorYellow();
afx_msg void OnUpdateColorBlue(CCmdUI* pCmdUI);
afx_msg void OnUpdateColorCyan(CCmdUI* pCmdUI);
afx_msg void OnUpdateColorGreen(CCmdUI* pCmdUI);
afx_msg void OnUpdateColorRed(CCmdUI* pCmdUI);
afx_msg void OnUpdateColorWhite(CCmdUI* pCmdUI);
afx_msg void OnUpdateColorYellow(CCmdUI* pCmdUI);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_SQUARESDOC_H__7BA6109C_99C6_4644_97BE_7D00663B2F61__INCLUDED_)