新人 关于MFC 中SDI弹出的对话框 获取VIEW指针的有关问题
新人求助 关于MFC 中SDI弹出的对话框 获取VIEW指针的问题
做这个程序的目的是:通过点击菜单的myyouku弹出对话框 在弹出的对话框中可以输入颜色的数值(为了简单我只弄了红色 其他都是0)最后点一下TRY 可以再单文档的客户区中改变我输入的颜色.但是现在的问题是我一点击就无法运行.
我是想通过消息函数通过按一下TRY键发送一个消息
是不是只能在OnDraw函数中绘图?
我是刚学的啊,求各位高中指点.轻砸..
------解决方案--------------------
粗略了看了下
MY_MESSAGE消息编号是什么
ON_COMMAND(ID_MENUITEM32771, Onyouku) 应该用ON_MESSAGE,MENUITEM32771消息编号要对应上
Onyouku函数的返回值LRESULT 带两个入参LPARAM WPARAM
做这个程序的目的是:通过点击菜单的myyouku弹出对话框 在弹出的对话框中可以输入颜色的数值(为了简单我只弄了红色 其他都是0)最后点一下TRY 可以再单文档的客户区中改变我输入的颜色.但是现在的问题是我一点击就无法运行.
- C/C++ code
// youkuView.cpp : implementation of the CYoukuView class // #include "stdafx.h" #include "mytry.h" #include "youkuDoc.h" #include "youkuView.h" #include "youku.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CYoukuView mytry dig; IMPLEMENT_DYNCREATE(CYoukuView, CView) BEGIN_MESSAGE_MAP(CYoukuView, CView) //{{AFX_MSG_MAP(CYoukuView) ON_COMMAND(ID_MENUITEM32771, Onyouku) //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CYoukuView construction/destruction CYoukuView::CYoukuView() { // TODO: add construction code here } CYoukuView::~CYoukuView() { } BOOL CYoukuView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CYoukuView drawing void CYoukuView::OnDraw(CDC* pDC) { CYoukuDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here /* CBrush brush; brush.CreateSolidBrush(RGB(dig.m_try,0,0)); pDC->SelectObject(brush); CRect rect; GetClientRect(&rect); pDC->Rectangle(&rect);*/ } ///////////////////////////////////////////////////////////////////////////// // CYoukuView printing BOOL CYoukuView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CYoukuView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CYoukuView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CYoukuView diagnostics #ifdef _DEBUG void CYoukuView::AssertValid() const { CView::AssertValid(); } void CYoukuView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CYoukuDoc* CYoukuView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CYoukuDoc))); return (CYoukuDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CYoukuView message handlers void CYoukuView::Onyouku() { // TODO: Add your command handler code here dig.DoModal(); Invalidate(); } void mytry::onchange() { CFrameWnd* pmain = (CFrameWnd*)AfxGetApp()->m_pActiveWnd;//获得视图类指针 CYoukuView *pdc = (CYoukuView *)pmain->GetActiveView(); CBrush brush; CClientDC dc(pdc); brush.CreateSolidBrush(RGB(dig.m_try,0,0)); dc.SelectObject(brush); CRect rect; GetClientRect(&rect); dc.Rectangle(&rect); }
我是想通过消息函数通过按一下TRY键发送一个消息
- C/C++ code
void mytry::OnButton1() { // TODO: Add your control notification handler code here SendMessage(MY_MESSAGE); }
是不是只能在OnDraw函数中绘图?
我是刚学的啊,求各位高中指点.轻砸..
------解决方案--------------------
粗略了看了下
MY_MESSAGE消息编号是什么
ON_COMMAND(ID_MENUITEM32771, Onyouku) 应该用ON_MESSAGE,MENUITEM32771消息编号要对应上
Onyouku函数的返回值LRESULT 带两个入参LPARAM WPARAM