急!MFC强制重绘问题 ::SendMessage() [问题点数:40分,结帖人qq_28254507]

Bbs1
本版专家分:0
结帖率 87.5%
Bbs10
本版专家分:172083
Blank
红花 2018年7月 VC/MFC大版内专家分月排行榜第一
2017年10月 VC/MFC大版内专家分月排行榜第一
2016年3月 VC/MFC大版内专家分月排行榜第一
2014年10月 VC/MFC大版内专家分月排行榜第一
2014年9月 VC/MFC大版内专家分月排行榜第一
2014年7月 VC/MFC大版内专家分月排行榜第一
2014年6月 VC/MFC大版内专家分月排行榜第一
2014年5月 VC/MFC大版内专家分月排行榜第一
2014年4月 VC/MFC大版内专家分月排行榜第一
2014年2月 VC/MFC大版内专家分月排行榜第一
2013年7月 VC/MFC大版内专家分月排行榜第一
Blank
黄花 2019年7月 VC/MFC大版内专家分月排行榜第二
2019年6月 VC/MFC大版内专家分月排行榜第二
2019年5月 VC/MFC大版内专家分月排行榜第二
2019年4月 VC/MFC大版内专家分月排行榜第二
2019年3月 VC/MFC大版内专家分月排行榜第二
2018年10月 VC/MFC大版内专家分月排行榜第二
2018年9月 VC/MFC大版内专家分月排行榜第二
2018年8月 VC/MFC大版内专家分月排行榜第二
2018年5月 VC/MFC大版内专家分月排行榜第二
2017年12月 VC/MFC大版内专家分月排行榜第二
2017年6月 VC/MFC大版内专家分月排行榜第二
2017年5月 VC/MFC大版内专家分月排行榜第二
2017年1月 VC/MFC大版内专家分月排行榜第二
2016年11月 VC/MFC大版内专家分月排行榜第二
2016年4月 VC/MFC大版内专家分月排行榜第二
2014年11月 VC/MFC大版内专家分月排行榜第二
2014年1月 VC/MFC大版内专家分月排行榜第二
2013年10月 VC/MFC大版内专家分月排行榜第二
2013年9月 VC/MFC大版内专家分月排行榜第二
2013年6月 VC/MFC大版内专家分月排行榜第二
2013年4月 VC/MFC大版内专家分月排行榜第二
2012年6月 VC/MFC大版内专家分月排行榜第二
Blank
蓝花 2018年11月 VC/MFC大版内专家分月排行榜第三
2018年6月 VC/MFC大版内专家分月排行榜第三
2018年4月 VC/MFC大版内专家分月排行榜第三
2018年3月 VC/MFC大版内专家分月排行榜第三
2018年2月 VC/MFC大版内专家分月排行榜第三
2018年1月 VC/MFC大版内专家分月排行榜第三
2017年11月 VC/MFC大版内专家分月排行榜第三
2017年9月 VC/MFC大版内专家分月排行榜第三
2017年8月 VC/MFC大版内专家分月排行榜第三
2017年4月 VC/MFC大版内专家分月排行榜第三
2016年12月 VC/MFC大版内专家分月排行榜第三
2016年10月 VC/MFC大版内专家分月排行榜第三
2016年2月 VC/MFC大版内专家分月排行榜第三
2015年10月 VC/MFC大版内专家分月排行榜第三
2015年7月 VC/MFC大版内专家分月排行榜第三
2012年10月 VC/MFC大版内专家分月排行榜第三
Bbs6
本版专家分:8123
Blank
黄花 2015年7月 VC/MFC大版内专家分月排行榜第二
Blank
蓝花 2015年8月 VC/MFC大版内专家分月排行榜第三
Bbs10
本版专家分:138201
Blank
进士 2018年总版新获得的技术专家分排名前十
Blank
银牌 2019年7月 总版技术专家分月排行榜第二
2019年5月 总版技术专家分月排行榜第二
Blank
铜牌 2019年4月 总版技术专家分月排行榜第三
2019年3月 总版技术专家分月排行榜第三
Blank
红花 2019年7月 VC/MFC大版内专家分月排行榜第一
2019年6月 VC/MFC大版内专家分月排行榜第一
2019年5月 VC/MFC大版内专家分月排行榜第一
2019年4月 VC/MFC大版内专家分月排行榜第一
2019年3月 VC/MFC大版内专家分月排行榜第一
2019年1月 VC/MFC大版内专家分月排行榜第一
2018年12月 VC/MFC大版内专家分月排行榜第一
2018年11月 VC/MFC大版内专家分月排行榜第一
2018年10月 VC/MFC大版内专家分月排行榜第一
2018年9月 VC/MFC大版内专家分月排行榜第一
2018年8月 VC/MFC大版内专家分月排行榜第一
2018年5月 VC/MFC大版内专家分月排行榜第一
2018年4月 VC/MFC大版内专家分月排行榜第一
2018年3月 VC/MFC大版内专家分月排行榜第一
2018年2月 VC/MFC大版内专家分月排行榜第一
2018年1月 VC/MFC大版内专家分月排行榜第一
2017年12月 VC/MFC大版内专家分月排行榜第一
2017年11月 VC/MFC大版内专家分月排行榜第一
2017年7月 VC/MFC大版内专家分月排行榜第一
2012年7月 VC/MFC大版内专家分月排行榜第一
Bbs7
本版专家分:20151
Bbs12
本版专家分:361059
版主
Blank
名人 2013年 荣获名人称号
Blank
探花 2011年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第三
Blank
进士 2012年 总版技术专家分年内排行榜第五
Blank
金牌 2012年1月 总版技术专家分月排行榜第一
Bbs1
本版专家分:0
MFC 之 CButton 控件重绘(GDI+篇)
在写完GDI篇后我以为会很快就能把GDI+篇弄出来。
MFC窗口重绘的一些理解
一窗口<em>重绘</em>函数 二如何触发窗口<em>重绘</em> 1 立即<em>重绘</em> 2 稍后<em>重绘</em> 三总结 一、窗口<em>重绘</em>函数当窗口过程接收到 WM_PAINT 消息时窗口类函数成员 CWnd::OnPaint() 实现窗口<em>重绘</em>。默认的 OnPaint() 函数只<em>重绘</em>窗口控件,而不会<em>重绘</em>控件内的内容(如Picture Control 控件中的图片),如果控件内的内容需要<em>重绘</em>,需要在CWnd::OnPaint() 中添加<em>重绘</em>内容。二、如何
MFC控件重绘
MFC的一系列<em>重绘</em>控件: 如图所示: 示例下载地址:http://download.csdn.net/detail/qq_23992597/9510696
MFC中的视图重绘机制
1.当与文档类关联的视图类收到文档类通过UpdateAllVIews()函数发出的更新<em>重绘</em>通知后,会触发视图类的OnUpdate()函数的实现(#add 观察者模式)。 UpdateAllVIews()的原型和特性: Void UpdateAllVIews (CView* pSender, LPARAM lHint, CObject* pHint);        pSender
急!MFC强制重绘问题 ::SendMessage()
nn```n void CEmailSettingDlg::OnBnClickedOk()nn UpdateData(1);n CEmailManagementDlg *pdlg = (CEmailManagementDlg*)AfxGetApp()->GetMainWnd();n if (m_str_BackGround == "蒲公英")n m_str_BackGround = "1";n if (m_str_BackGround == "书")n m_str_BackGround = "2";n if (m_str_BackGround == "天空")n m_str_BackGround = "3";n if (m_str_BackGround == "秦时明月")n m_str_BackGround = "4";n //刷新显示新的背景n CString temp = pdlg->m_backGround; //暂存原背景图数据n pdlg->m_backGround = m_str_BackGround;n** ::SendMessage(pdlg->m_hWnd, WM_PAINT, 0, 0);**n //UpdateWindow();n pdlg->m_backGround = temp;nn //如果设置没变,则不需要打开数据库(出于效率考虑)n if (!(m_str_AutoReply == pdlg->m_auto_reply && m_str_BackGround == pdlg->m_backGround))n n CString temp;n temp.Format("update user_psw_tab set auto_reply = '%s', back_ground = %d where user_name = '%s'", m_str_AutoReply, atoi(m_str_BackGround), pdlg->m_str_UserName);n TRACE(temp);n pdlg->m_db.ExecuteSQL(temp);n AfxMessageBox("更新成功!");n nn CDialogEx::OnOK();nn```nnn```n void CEmailManagementDlg::OnPaint()nn if (IsIconic())n n CPaintDC dc(this); // 用于绘制的设备上下文nn SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);nn // 使图标在工作区矩形中居中n int cxIcon = GetSystemMetrics(SM_CXICON);n int cyIcon = GetSystemMetrics(SM_CYICON);n CRect rect;n GetClientRect(&rect);n int x = (rect.Width() - cxIcon + 1) / 2;n int y = (rect.Height() - cyIcon + 1) / 2;nn // 绘制图标n dc.DrawIcon(x, y, m_hIcon);n n elsen n CPaintDC dc(this); // 用于绘制的设备上下文n CRect rc;n GetClientRect(&rc);n CDC dcMem;n dcMem.CreateCompatibleDC(&dc);n CBitmap bmpBackground;nn switch (atoi(m_backGround))n n case 1:n bmpBackground.LoadBitmap(IDB_BITMAP_FLOWER);n break;n case 2:n bmpBackground.LoadBitmap(IDB_BITMAP_BOOK);n break;n case 3:n bmpBackground.LoadBitmap(IDB_BITMAP_SKY);n break;n case 4:n bmpBackground.LoadBitmap(IDB_BITMAP_QIN);n break;n n n BITMAP bitmap;n bmpBackground.GetBitmap(&bitmap);n CBitmap* pbmpPri = dcMem.SelectObject(&bmpBackground);n dc.StretchBlt(0, 0, rc.Width(), rc.Height(), &dcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);n n //CDialogEx::OnPaint(); //这句需要去掉n nn```n我想实现实时切换 CEmailManagementDlg的背景nCEmailSettingDlg设置背景数据,点击确定后去刷新CEmailManagementDlg的背景n但是调试发现尽管SendMessage消息以后进入了CEmailManagementDlg的OnPaint函数,但是语句执行完以后并没有改变背景,请问我哪里错了吗。。nn
cmenu 强制 drawitem 重绘
小弟现在有个<em>问题</em>请教一下:对从cmenu派生出来一个CMyMenu,具有<em>重绘</em>功能,因为功能需要用hook将CMyMenu的WM_LBUTTONDOWN消息截获了,这样在menu上点击,menu就不会消失,但这时想对menu进行<em>重绘</em>,请问如何才能触发drawitem进行<em>重绘</em>rnrn备注: 我的menu是点击一个dialog上的button弹出来的
CMainFrame怎么强制重绘
在单文档程序中,我对CMainFrame中菜单的标题进行了修改,我想修改后就马上能看到效果,rn但是可惜的是,我无法让菜单<em>重绘</em>.rn通过CMainFrame类的Invalidate和UpdateWindow都不能让这个菜单进行<em>重绘</em>.....rn只有把窗口焦点切换到其它程序窗口时,也就是这个单文档程序失去焦点时,菜单才会<em>重绘</em>.rnrn以下是没起作用的程序 rnCWnd* pMain = AfxGetMainWnd();rn::GetWindowRect(pMain->m_hWnd,&rect);rn::InvalidateRect(pMain->m_hWnd,&rect,TRUE);rn::InvalidateRect(pMain->m_hWnd,&rect,FALSE);rnpMain->Invalidate();rn::UpdateWindow(pMain->m_hWnd);rnrnrn请各位朋友多多指点,怎样能使多文档/单文档程序全部<em>重绘</em>,或者怎么发出这个<em>重绘</em>动作.
强制界面重绘
我在窗口过程的WM_PAINT函数下添加了一部分代码,然后当我需要改变界面的时候,我就向窗口发送WM_PAINT消息以实现<em>重绘</em>的效果。rn 但是调试的过程中,通过断点,我确定窗体在接收到WM_PAINT消息的时候,界面的绘制代码的确执行过了,但是屏幕显示的窗体却完全没有变化。rn 而通过最小化窗口,然后还原,我可以确定我的绘制代码是有执行效果的,界面的确按照我希望的绘制出来了。rn 所以,<em>问题</em>是,为什么窗体接收到WM_PAINT消息后,命名重新绘制过了,但是界面却没有变化呢?非得最小化再还原才行?
MFC SendMessage 问题
在 MFC 对话框应用程序中 当窗口正在处理一个循环时 用 SendMessage 向窗口发送一个消息时会怎样rn窗口会卡死吗?
MFC中子窗口使用SendMessage没有响应
情况如下: 我在MFC中主窗口中按钮用<em>sendmessage</em>打开了一个新的对话框窗口 我想在新打开的这个子窗口中的新建的一个线程里再用<em>sendmessage</em>去操作,但是发现线程响应了,但是并没有响应这
SendMessage和PostMessage都不起作用,求助
有个软件的Combo box可以用1/2/3按键来快速选择其下拉列表中的对应选项,但是我用SendMessage或PostMessage向其发送1/2/3的模拟按键消息都不起作用. SendMessa
为什么用SendMessage发WM_COPYDATA消息无效呢?
我的2个程序需要通信, 其中发消息的这样写: HWND h = FindWindow(0,"mytest"); SendMessage(h,WM_COPYDATA,0,0); 另一个受消息的这样写:
在刷新窗口时经常要调用重绘函数
MFC提供了三个函数用于窗口<em>重绘</em> InvalidateRect(&Rect) Invalidate() UpdateWindow() 当需要更新或者<em>重绘</em>窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化) --WM_NVPAINT系统会自己搞定 --WM_PAINT消息对应的函数是OnPaint(),它是系统默认的接受WM_PA
请问MFC对话框如何重绘
例如 我想用MFC写有一个能够完成上述构想的程序。现在主要是界面<em>问题</em>不知道怎么解决。 请问各位大神,我有几个<em>问题</em>: 1.我想隐藏程序边框,请问该怎么实现?(假设是MFC对话框类) 2.我想在程序顶部显
sendmessage 发送消息的问题 MFC
同一个dialog上的两个按钮rnA(ID号为ID_A),rnB(ID号为ID_B).rn我想实现:rn按A,A的消息处理函数中发送一个消息给B按钮.触发B按钮的ON_COMMAND消息.rnA按钮的处理消息为rn::SendMessage(GetDlgItem(ID_B)->GetSafeHwnd(),WM_COMMAND,0,0);rn为什么实现不了呢?rn而利用rnSendMessage(WM_COMMAND,ID_B,0);rn却可以实现呢?rn请各位高手赐教呀.rn
SendMessage问题,急!急!
我用API 向其他窗口发rnrnSendMessage(hwnd,WM_SETTEXT,0,"mycaption")rnrn为什么不成功rn而在VC中就可以捏
MFC界面重绘问题
最近在做一个摄像头监控的简单项目。有4个摄像头同时联控,因此我建立了一个单文档的MFC,选择的是CFormView作为视图类的基类,然后在Form形式的Dialog上添加了4个Picture控件,将视图分为了一个田字形状,每个Picture控件对应一个摄像头采集的图像。rnrn但是现在我不知道怎么解决图像显示的<em>重绘</em><em>问题</em>,一旦我切换了窗口或者移动了滚动条或者最大最小化之类的操作之后,图像不会<em>重绘</em>。麻烦高手帮忙指点一下怎么解决这个<em>问题</em>。
MFC重绘问题,谢谢!
点击一个按钮,读取一张图片,窗口最小化或者被其他文件夹遮挡后,图片就消失。rnrn但是如果写在OnPaint下的话,若路径下有此图片,则还没点按钮,图片就显示出来了。rnrn而且结果变成按钮被遮挡后,按钮就不显示出来了。 有没什么方法,不写在OnPaint也能实现这个现象。rnrn[code=c]void CIDCardTestDlg::IDCardDown() rnrn CString FileName;rn int FileNum=0;rn FileName.Format("C:\\%d-1.bmp", FileNum);rn HBITMAP m_Bitmap = NULL;rn if(m_Bitmap)rn rn DeleteObject(m_Bitmap);rn m_Bitmap = NULL;rn rn m_Bitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),FileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION|LR_DEFAULTSIZE);rn if(m_Bitmap == NULL)rn rn return;rn rnrn //**********************************************************************************************************************rn //显示图像rn CDC* pDC; rn CRect rect;rn CDC memDC;rn void* old;rn CBitmap bm;rn BITMAP bitmap;rnrn pDC = m_IDPicture.GetDC(); rn memDC.CreateCompatibleDC(pDC);rn old = memDC.SelectObject(m_Bitmap);rn bm.Attach(m_Bitmap);rn bm.GetBitmap(&bitmap);rn m_IDPicture.GetClientRect(&rect);rn pDC->SetStretchBltMode(COLORONCOLOR);rn pDC->StretchBlt(rect.left, rect.top, rect.right, rect.bottom, &memDC, 0, 0, bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);rn memDC.SelectObject(old);rn bm.Detach();rn rn //**********************************************************************************************************************rn //释放资源rn GetObject(m_Bitmap,sizeof(bitmap),&bitmap);rn DeleteObject(SelectObject(memDC,m_Bitmap));rn DeleteObject(m_Bitmap); rn DeleteDC(memDC);rn ::ReleaseDC(NULL,*pDC);rn[/code]
MFC对话框重绘问题
基于对话框的MFC工程,有一个主对话框,在主对话框中点击按钮会弹出一个模态对话框,两个对话框中都在自己的onpaint()函数里边加载了一幅位图,除此之外两个对话框还有其他button和listctrl控件,现在的<em>问题</em>是主对话框移动的时候没有<em>问题</em>,各个控件都能正常显示,但是当弹出模态对话框时,移动该对话框只有位图能够显示,其他的控件都不能显示了,这个<em>问题</em>该怎么解决啊。是要让他整个对话框<em>重绘</em>吗,为什么主对话框没有这种<em>问题</em>呢?
Invalidate和UpdateWindow的区别
按引:Invalidate在消息队列中加入一条WM_PAINT消息,其无效区为整个客户区。而UpdateWindow直接发送一个WM_PAINT消息,其无效区范围就是消息队列中WM_PAINT消息(最多只有一条)的无效区。效果很明显,调用Invalidate之后,屏幕不一定马上更新,因为WM_PAINT消息不一定在队列头部,而调用UpdateWindow会使WM_PAINT消息马上执行的,绕过了消
MFC绘图的重绘问题,求大腿~
用MFC写了个画板工具,图源的选中,拖拽,取消选中的思路都是记录坐标,用反色笔擦除,高亮笔<em>重绘</em>,但是有一个<em>问题</em>,当两个图源重叠的时候对其进行以上操作,<em>重绘</em>部分会将另一个图源的重叠部分覆盖掉,大神们给个
MFC之窗口控件更新重绘相关函数
MFC窗口<em>重绘</em>需要知道的几个函数。Invalidate, InvalidateRect, UpdateData, UpdateWindow等。
MFC 之 重绘按键
上次我们学习了如何美化对话框的界面,这次我们为上次的对话框添加两个按钮,一个是关闭按钮,另一个是最小化按钮,好,现在我们先看一下效果: 是不是很难看,因为我们的对话框美化了,所以我们的按钮也要美化,因为采用贴图的方式来美化,所以,我先给出这两个按钮的PNG格式的图片,该图片支持透明色,具体如下: 关闭按钮效果图: 最小化按钮效果图: 这两张效果图是我自己从网上找的,可能不是很合适,...
MFC 列表控件重绘
将列表控件的OwerData 属性改为true#pragma onceenum{ _nSortNone = 0, _nSortUp, _nSortDown, _nSortCount = 3,};// CSkinHeaderCtrl.Cppclass CSkinHeaderCtrl : public CHeaderCtrl{ DECLARE_DYNAMIC(CSkinHeaderCtrl)publi...
MFC重绘问题
当我从第一个界面调第二个界面实现一些功能,然后关掉第二个界面,第一个界面就没有<em>重绘</em>功能了!debug版本没<em>问题</em>,release版本出现的这种<em>问题</em>
mfc重绘问题
我要做的是点击按钮出现坐标图,是一个对话框程序,在刚打开程序时,出现的是一个空的坐标图,然后点击按钮,想让出现一副图像,绘图都在OnPaint里面写了,为了让点击按钮出现不同于初始的图,我设置了一个变量m_draw,初始值为0,点击按钮,值设为1,读取文件,设置坐标图轴下标值,调用OnPaint,出现曲线图,想法是这样的,现在不出曲线,求大神啊,网上有一些关于<em>重绘</em>的,看的不是太明白。rn[img=http://img.my.csdn.net/uploads/201303/10/1362887043_4750.jpg][/img]
重绘问题VC6.0 MFC
双击左键load一个IDB_BITMAP1的位图,但是在画的位图被其他frame覆盖后就会<em>重绘</em>消失,我知道要将这个load位图写在OnDraw里,可是如何写,新人求助!rn下面是我OnLButtonDblClk里的代码,如何修改,谢谢!rnVC6.0 MFCrnrnvoid CReticleView::OnLButtonDblClk(UINT nFlags, CPoint point) rnrn // TODO: Add your message handler code here and/or call defaultrn rn rn CBitmap bm;rn CDC dcMem;rn CBitmap* pbmOld;rn BITMAP bminfo;rn CSize bmSize;rnrn VERIFY(bm.LoadBitmap(IDB_BITMAP1));rn bm.GetObject(sizeof(BITMAP),&bminfo);rn bmSize.cx=bminfo.bmWidth;rn bmSize.cy=bminfo.bmHeight;rn CClientDC dc(this);rn dcMem.CreateCompatibleDC(&dc);rn VERIFY(pbmOld=dcMem.SelectObject(&bm));rn dc.BitBlt(point.x, point.y-bminfo.bmHeight, bmSize.cx, bmSize.cy, &dcMem, 0, 0, SRCAND);rn bm.LoadBitmap(IDB_BITMAP1);rnrn CView::OnLButtonDblClk(nFlags, point);rnrn
MFC在窗口重绘问题
本人在写一个文字处理的程序。用MFC,但是一旦窗口<em>重绘</em>,那么原来窗口的那些内容就不见了。rn求助!rn谢谢!
MFC控件重绘问题
<em>重绘</em>Edit控件 每当对话框被覆盖后 <em>重绘</em>的Edit控件只能显示一半了 这是什么<em>问题</em>?
窗口重绘的三个函数
在客户区不同区域<em>重绘</em>。 浮动鼠标显示不同的图片; 这个链接受益匪浅。 以我暂时的功力还是有些不懂、 留下来 http://www.voidcn.com/blog/feilongzaitianhehe/article/p-5736750.html
mfc 图片显示的重绘问题
现在做的是在一个对话框的picture控件里显示图片,然后有下一张按钮,用来显示另一张图片。现在的<em>问题</em>是,在下一张按钮对应的函数里,加载图片后,调用Invalidate(FALSE),会有上一张图片的
MFC中窗口重绘
在刷新窗口时经常要调用<em>重绘</em>函数 MFC提供了三个函数用于窗口<em>重绘</em> InvalidateRect(&Rect) Invalidate() UpdateWindow() 当需要更新或者<em>重绘</em>窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和   WM_NCPAINT(通知非客户区有变化) WM_NVPAINT系统会自己搞定 WM_PAINT消息对应
Mfc完美实现Edit重绘
<em>mfc</em>中完美实现Edit控件<em>重绘</em>,包括Edit的悬停边框、文字居中,绘制Edit的非客户区和客户区等。找了挺久的,然后自己在别人的基础上再修改为自己喜欢的。不敢私藏,免费提供给大家下载。
MFC重绘控件问题
比如说我先建立一个基于对话框的工程,然后我自定义了一个继承自CListCtrl的类CMyListCtrl,然后在在对话框上拖一个List控件并给它添加一个CMyListCtrl类型的变量。这样有错吗?rn 我很困惑,拖出来的List控件不是CListCtrl吗,给它添加了CMyListCtrl类型变量他就变成了CMyListCtrl类型的控件?
MFC重绘
我在一个窗口中,给制了一个图形,但是,如果我切换窗口的话,图形就消失了rnrn我知道,应该是触发了<em>重绘</em>消息,我可以指定一块区域,不进行重给不?
MFC控件重绘MFC控件重绘
MFC控件<em>重绘</em>MFC控件<em>重绘</em>MFC控件<em>重绘</em>MFC控件<em>重绘</em>
MFC 重绘
我的<em>问题</em>是:在ONPAINT 中建立了一个绘图区并做好了坐标和网格线,也放置了一组数据画了一条曲线,但是我想按一次按钮后把新的数据组替换之前的那组数据,并显示出来,请大神指点下,谢谢.rn我的代码:rnOnPaint()rnrnCPaintDC dc(this);rn int nxLength = 600;rn int nyLength = 300;rn int nxDivisionNumber = 22;rn int nyDivisionNumber = 12;rn int nMeshLength;rn CString str;rn int i;rn CWnd *pWnd = GetDlgItem(IDC_PICTURE);rn CDC* pDC = pWnd->GetDC();rn pWnd->Invalidate();rn pWnd->UpdateWindow();rn pDC->Rectangle(0, 0, nxLength, nyLength);rn CPen* pPenRed = new CPen; //创建画笔对象rn pPenRed->CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); //红色画笔rn CPen* pPenGreen = new CPen; //创建画笔对象rn pPenGreen->CreatePen(PS_SOLID, 1, RGB(0, 255, 0));//绿色画笔rn CPen* pPenBlue = new CPen; //创建画笔对象rn pPenBlue->CreatePen(PS_DOT, 1, RGB(0, 0, 255)); //蓝色画笔rn CPen* pPenBlack = new CPen; //创建画笔对象rn pPenBlack->CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); //黑色画笔rn //选中黑色画笔,并保存当前画笔rn CGdiObject* pOldPen = pDC->SelectObject(pPenBlack);rn pDC->MoveTo(60, 10); //绘制坐标轴rn pDC->LineTo(60, nyLength - 2); //垂直轴rn pDC->LineTo(60, nyLength / 2 - 2); //垂直轴rn pDC->LineTo(nxLength - 10, nyLength / 2 - 2); //水平轴rn //横坐标箭头rn pDC->MoveTo(nxLength - 10 - 10, nyLength / 2 - 2 - 3);rn pDC->LineTo(nxLength - 10, nyLength / 2 - 2);rn pDC->LineTo(nxLength - 10 - 10, nyLength / 2 - 2 + 3);rn pDC->LineTo(nxLength - 10 - 10, nyLength / 2 - 2 - 3);rn //纵坐标箭头rn pDC->MoveTo(57, 20);rn pDC->LineTo(60, 10);rn pDC->LineTo(63, 20);rn pDC->LineTo(57, 20);rn //横坐标数字rn nMeshLength = (nxLength - 40) / (nxDivisionNumber + 1);rn for (i = 0; iTextOut(27 + i*nMeshLength, nyLength - 27, str);rn rn //横坐标标识rn str.Format("次数");rn pDC->TextOut(nxLength - 33, nyLength - 27, str);rn //纵坐标数字rn nMeshLength = (nyLength - 60) / (nyDivisionNumber + 1);rn for (i = 0; iTextOut(3, nyLength - 40 - i*nMeshLength, str);rn rn //纵坐标标识rn str.Format("KG");rn pDC->TextOut(1, 3, str);rnrn //网格线rn pDC->SelectObject(pPenBlue);rnrn nMeshLength = (nxLength - 60) / (nxDivisionNumber + 1);rn for (i = 1; iMoveTo(60 + i*nMeshLength, nyLength - 30);rn pDC->LineTo(60 + i*nMeshLength, 10);rn rnrn nMeshLength = (nyLength - 60) / (nyDivisionNumber + 1);rn for (i = 1; iMoveTo(60, nyLength - 30 - i*nMeshLength);rn pDC->LineTo(nxLength - 10, nyLength - 30 - i*nMeshLength);rn rn //double a[10] = 1.56, 1.83, 1.45, 1.10, 1.75, 2, 0, 1.0, 2.0, 2.4 ;rn for (i = 1; i < 10; i++)rn rn pDC->SelectObject(pOldPen);rn pDC->MoveTo(60 + (i - 1)*nMeshLength, nyLength - 30 - (7 + a[i - 1] / 0.4)*nMeshLength);rn pDC->LineTo(60 + i*nMeshLength, nyLength - 30 - (7 + a[i] / 0.4)*nMeshLength);rn rn double a1[10] = -1.56, -1.83, -1.45, -1.10, -1.75, -2, 0, -1.0, -2.0, -2.4 ;rn for (i = 1; i < 10; i++)rn rn pDC->SelectObject(pOldPen);rn pDC->MoveTo(60 + (i - 1)*nMeshLength, nyLength - 30 - (7 + a1[i - 1] / 0.4)*nMeshLength);rn pDC->LineTo(60 + i*nMeshLength, nyLength - 30 - (7 + a1[i] / 0.4)*nMeshLength);rn rn //恢复以前的画笔rn pDC->SelectObject(pOldPen);rnrn delete pPenRed;rn delete pPenGreen;rn delete pPenBlue;rn delete pPenBlack;rnrn在button中的代码:rndouble a[10] = 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0, 1.0, 2.0, 2.4 ;rn Invalidate(TRUE);rn但是无法实现<em>重绘</em>,请教下各位大神该如何实现我想要的功能呢?
如何手动强制重绘PictureBox
我把一个Bitmap对象绑定到PictureBox,我对Bitmap对象的内容进行修改后,需要立即<em>重绘</em>PictureBox..rnrn试过Refresh和Update方法都不行!rnrn能不能像<em>mfc</em>那样发送个WM_PAINT消息给他呢?rnrn还没搞清楚.net的消息和事件机制,好像跟<em>mfc</em>很不同!- -
MFC 窗口闪烁
MFC 窗口闪烁 如果一个程序出现闪烁现象,会让人觉得程序编写人员很马虎,缺乏对细节的足够重视。Windows程序的任何部分都没有任何理由出现闪烁现象。这篇文章的目的是告诉读者如何使用相关的技术防止窗口出现闪烁效果。什么是闪烁闪烁可以这样定义:当后面一幅图像以很快的速度画在前面一幅图像上时,在后面图像显示前,你可以很快看到前面那一个图像,这样的现...
VS2015-MFC 之 也谈 Button重绘
接手同事售后软件的工具开发项目,因为UI设计<em>问题</em>,稍接触了一下Button<em>重绘</em>。 项目第一个<em>问题</em>是debug模式会报断言错误,release模式是正常的。询同事得知,知道debug模式有<em>问题</em>,所以一只都在release模式下下断点…… 一步步加断点,debug发现是在WM_DRAWITEM消息的实现部分OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDr
MFC学习--对话框及窗口背景色
置对话框背景颜色及背景图片可在OnCtlColor(),OnEraseBkgnd(),OnPaint()里设置,对话框初始化完毕,显示窗口时按顺序调用OnSize()>OnEraseBkgnd()>OnPaint()>OnCtlColor()。 OnEraseBkgnd()中默认调用基类(CFrameWnd)的OnEraseBkgnd(), 用窗口类中注册的Brush绘制背景。因此,绘制窗口
MFC控件完全重绘从CWnd开始
 导读: 我并不推荐采用自绘的方式去完成一些控件(比如CStatic,CButton,RadioBox,CheckBox等)的美化,而是推荐大家从CWnd入手,把这些基本控件完全重新绘制一遍(当然,有些做的很好的控件还是需要继承来自绘的,比如CListCtrl)。为什么这么做?因为MFC对这些控件的某些操作是隐蔽的,某些限制是我们无法接受的(比如CTabCtrl的头部高度和每个Item的宽
急可能是sendmessage问题
unit Unit1;rnrninterfacernrnusesrn Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,rn Dialogs, ExtCtrls, StdCtrls, SUIForm;rnrn Constrn SX_MyMessage = WM_USER + 101;rn SX_MyMessage2 = WM_USER + 102;rnrn TYPErn TECG = array[0..299] of integer;rn const ecg1:TECG = ( 63, 63, 63, 63, 63, 64, 64, 65, 65, 66,//1rn 67, 68, 67, 67, 66, 65, 64, 63, 63, 63,rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,rn 63, 60, 59, 61, 63, 73, 84, 95, 79, 63, //4rn 61, 60, 58, 57, 55, 57, 60, 60, 60, 60,rn 60, 60, 61, 61, 61, 62, 62, 62, 62, 62,rn 62, 63, 63, 63, 63, 64, 64, 65, 65, 65,rn 66, 66, 67, 68, 68, 69, 68, 67, 67, 67, //8rn 66, 65, 63, 62, 60, 60, 60, 60, 61, 61,rn 61, 61, 61, 62, 62, 62, 63, 63, 63, 63, //10rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, //13rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, //15rn 63, 63, 63, 63, 63, 64, 64, 65, 65, 66,//1rn 67, 68, 67, 67, 66, 65, 64, 63, 63, 63,rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,rn 63, 60, 59, 61, 63, 73, 84, 95, 79, 63, //4rn 61, 60, 58, 57, 55, 57, 60, 60, 60, 60,rn 60, 60, 61, 61, 61, 62, 62, 62, 62, 62,rn 62, 63, 63, 63, 63, 64, 64, 65, 65, 65,rn 66, 66, 67, 68, 68, 69, 68, 67, 67, 67, //8rn 66, 65, 63, 62, 60, 60, 60, 60, 61, 61,rn 61, 61, 61, 62, 62, 62, 63, 63, 63, 63, //10rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, //13rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,rn 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 //15rn );rnrntypern TForm1 = class(TForm)rn PaintBox1: TPaintBox;rn button1 : Tbutton;rn Button2: TButton;rnrn procedure Button1Click(Sender: TObject);rn procedure FormCreate(Sender: TObject);rn procedure Button2Click(Sender: TObject);rn privatern Private declarations rn publicrn Procedure SXMyMessage(var msg :TMessage);message SX_MyMessage;rn Procedure SXMyMessage2(Var msg : TMessage); message SX_MyMessage2;rn procedure drawdemo;rn Public declarations rn procedure DrawWave(pt1:Tpaintbox;cc,ptwidth,newwidth :integer);rn end;rnrnvarrn Form1: TForm1;rn arraytmp : integer;rn demo : Boolean;rnrnimplementationrnrn$R *.dfmrnrnProcedure Tform1.SXMyMessage2(var Msg : TMessage);rnBeginrnrnEnd;rnrnProcedure TForm1.SXMyMessage(var msg:TMessage);rnBeginrnrn if demo thenrn button1Click(Self)rn Elsern DrawWave(paintbox1,1,paintbox1.ClientWidth,arraytmp);rnEnd;rnrnprocedure Tform1.drawWave(pt1:Tpaintbox;cc,ptwidth,newwidth:integer);rnvarrn j,tmp: integer;rn k : integer;rnBeginrn k := 1;rn pt1.Canvas.Pen.Width := 1;rn Case cc ofrn 0 : pt1.Canvas.Pen.Color := ClRed;rn 1 : pt1.Canvas.Pen.Color := ClBtnFace;rn End;rn newwidth := newwidth * 4;rn if newwidth >ptwidth thenrn tmp := newwidth mod ptwidthrn Elsern tmp := newwidth;rn pt1.Canvas.MoveTo((tmp),ecg1[1]);rn for j := tmp downto 1 dorn Beginrn pt1.Canvas.LineTo((j),ecg1[k]);rn k := k+1;rn k := k mod 300;rn End;rnEnd;rnrnprocedure TForm1.Button1Click(Sender: TObject);rnbeginrn form1.drawdemo;rnend;rnrnProcedure TForm1.drawdemo;rnBeginrn if not demo thenrn arraytmp := PaintBox1.ClientWidth + 1;rn if (arraytmp < form1.PaintBox1.ClientWidth) Thenrn Beginrn DrawWave(paintbox1,1,paintbox1.ClientWidth,arraytmp-1);rn DrawWave(paintbox1,0,paintbox1.ClientWidth,arraytmp);rn Arraytmp := arraytmp + 1;rn Sleep(20);rn SendMessage(Handle,SX_MyMessage,0,0);rn End;rnEnd;rnrnprocedure TForm1.FormCreate(Sender: TObject);rnbeginrn demo := True;rnend;rnrnprocedure TForm1.Button2Click(Sender: TObject);rnbeginrn demo := false;rn SendMessage(Handle,SX_MyMessage2,0,0);rnend;rnrnend.rnrnrn是这样的,我想让程序在绘制过程中停止下来,但是点了button1后,它就要给完才结束,我点了button2呢,它有什么都不绘制,觉得很奇怪,可能不是<em>sendmessage</em>的<em>问题</em>,但是觉得用消息又应当能解决这个<em>问题</em>,所以就发到这里了.
FindWindow,SendMessage问题(急)
<em>问题</em>是这样的:rn我在vc中想传一个值给vb写的应用程序中的一个文本框(TextBox)rn在vc中,我先获得这个vb写的应用程序(测试)的句柄rnHWND hWnd = FindWindow(NULL, "测试");rn再用SendMessage给这个句柄发送消息rn现在<em>问题</em>是,SendMessage如何设置参数,以及vb中如何获取传过来的值。rn谢谢了!
关于SendMessage的问题?急!
请帮我解答VC中SendMessage(HWND handle,WM_MYMESSAGE,WPARAM wParam,LPARAM lParam)中的四个参数含义,及使用,我有急用呀!!!我正在做一个DLL文件,通过rnVB使用这个DLL把VB窗口中的消息和数据发送到VC++程序中,而且不知道数据传送是否使用该函数。我是个初学者如果有可能的话,请高手们帮我详细的解答这个<em>问题</em>,比如传递rn一个IDOK消息或者是一个字符串。如果可能的话,请给我一个这个例子的代码?我的信箱是diyunfei@163.com呵呵。rn
SendMessage问题,急急急!!!!!
我用API 向其他窗口发rnrnSendMessage(hwnd,WM_SETTEXT,0,"mycaption")rnrn为什么不成功rn而在VC中就可以捏rnrn我操作系统win2000 server,VB6.0rnrn而用VC6.0则成功
CDHtmlDlg 重绘问题 (急)
在我的Dialog工程中,主Dialog上面放了一个CDHtmlDlg,让他显示网页rnrn可如果我通过Invelite要求主Dialog<em>重绘</em>,显示的网页就会被背景遮住,成为灰色。rnrn这个<em>问题</em>怎么解决?rnrn
MFC 的几个重绘
一:什么时候才会发生<em>重绘</em>窗口的消息?       当需要更新或重新绘制窗口的外观时,应用程序就会发送WM_PAINT消息。对窗口进行重新绘制。 二:Invalidate() -- RedrawWindow() -- UpdateWindow()三个函数有什么异同?       Invalidate()是<em>强制</em>系统进行重画,但是不一定就马上进行重画。因为Invalidat
跟我一起玩Win32开发(3):窗口的重绘
http://blog.csdn.net/tcjiaan/article/details/8506603 我们今天来吹一下关于窗口<em>重绘</em>的事情,在开始吹牛之前,我们先用上一篇博文中说到的方法写一个简单的Win32应用程序。代码如下: [cpp] view plaincopyprint? #include       //先声明一下消息处理函数
VC中的窗口重绘(转)
在刷新窗口时京城要调用<em>重绘</em>函数 MFC提供了三个函数用于窗口<em>重绘</em> InvalidateRect(&Rect) Invalidate() UpdateWindow() 当需要更新或者<em>重绘</em>窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化) WM_NVPAINT系统会自己搞定 WM_PAINT消息对应的函数是OnPaint(),它
MFC 重绘函数
void CDialogDiagnose::OnPaint() {  CPaintDC dc(this); // device context for painting  // TODO: 在此处添加消息处理程序代码  CDC MemDC;   MemDC.CreateCompatibleDC (&dc);  CBitmap *pOldBmp;  pOldBmp = MemDC.Se
窗口重绘问题,急
我做了一个窗口,有一个文本框和一个按纽,如果文本框中不输入任何东西就点击按纽,就会弹出一个对话框提示需要输入信息,关掉对话框后原来窗口被对话框覆盖的地方就没有了,为什么自己不<em>重绘</em>呢?怎样解决才能使得对话框关闭后自动<em>重绘</em>呢?
关于MFC窗口重绘问题
请问能够检测到窗口的全部<em>重绘</em>与部分<em>重绘</em>吗?rn因为我需要获得窗口的DC,当全部<em>重绘</em>时,获得的dc是正确的,当部分<em>重绘</em>时,获得的dc会有我贴的图这样获得的dc是错误,请问有什么办法解决
有关MFC窗口重绘问题
我利用CreateEx(WS_EX_TRANSPARENT, rn AfxRegisterWndClass(0,AfxGetApp()->LoadCursor(IDC_NODROP)),rn pTitle,rn WS_POPUP,rn rect,rn NULL,rn NULL,rn NULL );rn生成一个透明窗口,然后再窗口上绘制;但是切换窗口时会发生<em>重绘</em>。会将我绘制的覆盖。rn请问通过那个事件来<em>重绘</em>窗口?
关于mfc重绘问题
写的是一个窗口程序,onpaint函数的部分代码如下rnCPaintDC dc(this); // 用于绘制的设备上下文rn CRect rect;rn GetClientRect(rect);rn dc.FillSolidRect(rect, color);rn想实现的是通过一个对话框中的color button control改变客户区的背景颜色,对话框中的消息响应函数如下rnvoid COptionDlg::OnBnClickedOk()rnrn // TODO: 在此添加控件通知处理程序代码rn color = m_ColorPicker.GetColor();rn Invalidate();rn CDialogEx::OnOK();rnrn背景颜色没有立刻刷新,但是把程序最小化后再打开就刷新了,请问怎么样修改能做到立即刷新呢?
VC的MFC中重绘函数的使用总结(整理)
在刷新窗口时经常要调用<em>重绘</em>函数 MFC提供了三个函数用于窗口<em>重绘</em> InvalidateRect(&amp;amp;Rect) Invalidate() UpdateWindow() 当需要更新或者<em>重绘</em>窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化) --WM_NVPAINT系统会自己搞定 --WM_PAINT消息对应的函数是OnPaint(),...
MFC中菜单栏的重绘方法
经常在网上闲转,发现很多vc热衷着发贴询问在MFC中菜单栏如何<em>重绘</em>,这几天有点闲工夫,写了一个关于MFC菜单<em>重绘</em>的demo,写的很粗糙,很多小细节的地方都没有去仔细处理,希望能对大家有所帮助吧,呵呵也以此抛砖引玉吧。呵呵废话不说了吧,进入正题。  对于菜单如何<em>重绘</em>网上到处都是,在这里就不再罗嗦了,呵呵  对于一个菜单栏如何<em>重绘</em>,我们需要做的第一步工作就是如何不让系统默认的画菜单栏操做去执行。其实解
重绘
MFC的机制是窗口被遮挡(最小化)后,恢复视图时,自动产生WM_PAINT消息发送给视图刷新窗口。该消息会触发OnPaint()函数。如果绘图语句是放在一个自定义函数中,并且不是在上述函数中调用的话(比如在按钮的处理函数中调用),就只能在屏幕上出现一次,窗口一旦更新就消失了。但是,如果在OnPaint()、函数中直接或间接绘制这些图形对象,这样每次窗口更新都不会“丢失”之前绘制的图形。  具体解决...
MFC学习笔记之图形保存与重绘
先增加一个新的菜单项 绘图 ,然后在里面增加4个子菜单项 点 线 矩形 椭圆 ,在View类中响应各个子菜单项,为View类增加一个私有数据成员 int m_nDrawType 用来保存用户所做的选择 这个和上一篇日志的一样 所以代码不贴了,然后就是响应 OnLButtonDown 和 ONLButtonUp 消息 进行相应的绘图。我们知道当窗口大小改变或是窗口被切换的时候,程序就会发送一个WM_
mfc背景重绘问题
我是基于对话框的程序,并且把对话框Border设为None。以下是绘制背景的代码: void CpaintDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(
MFC ActiveX窗体背景重绘问题 ??
我做的是一个MFC ActiveX窗体控件播放器 在IE中运行,可是我<em>重绘</em>窗体背景为黑色的,这样的话,当一个窗体在他上面后,离来后,就会出现一闪一下,我找了网上的好多方法,有4 5种吧 好像都没怎么好用,rn其中一个最好的是rnBOOL Form::OnEraseBkgnd(CDC* pDC)rnrn return false; rn //return CDialog::OnEraseBkgnd(pDC);rnrn用了之后 ,还是<em>重绘</em>一闪一下,rn也就是当别一个窗体在我控件窗体上面离来的时候,就会<em>重绘</em>一闪一下,那位有什么好办法,直接不让他<em>重绘</em>rnrn直接不让他<em>重绘</em> 谢谢了 真不知道怎么办!!
MFC中窗口重绘问题
我正在学习孙鑫的C++课程,在窗口<em>重绘</em>这课上,我按着他的步骤编写程序,但是窗口拖动后,图像的起点会发生变化,不知道怎么回事,求教。。
MFC picture控件重绘问题
RTrnrn<em>mfc</em> 窗口一个dlg,然后dlg在OnPaint()里面<em>重绘</em>背景;rnrndlg中有几个picture控件,控件选中时通过SetBitmap()重新替换控件图,rnrn现在的<em>问题</em>是,如果我不点击picture控件,调整窗口则刷新都正常。rnrn如果点击了picture控件,再调整窗口大小,此时Onpaint()之后点击的控件就消失了,重新点击又出来了。rnrn
MFC SendMessage OnOK问题求解
有一个顶层界面A,有的时候执行完一些操作会跳出来这个窗口做一下提示信息。但是下一次从网络收到数据后,我要把这个界面关掉,再去执行其他的操作。rn当我的这个界面收到消息时,虽然执行了OnBnClickedOk()函数,但是界面并没有退出去。我在析构函数里也没有看到函数进行析构操作。rn求大神帮忙看一下!!!rn[code=c]rn//主界面相关函数rnHWND pTopWnd;rnpTopWnd = ::GetForegroundWindow();rn::SendMessage(pTopWnd,WM_EXIT_PAGE,0,0);rn[/code]rn[code=c]rn//A界面相关代码rn//.h头文件里声明了:rnafx_msg LRESULT WmExitPage(WPARAM wparam,LPARAM lparam);rn//.cpp文件里rn//在MESSAGE_MAP里rnON_MESSAGE(WM_EXIT_PAGE,WmExitPage)rn//WmExitPage函数rnLRESULT CxxDlg::WmExitPage(WPARAM wparam,LPARAM lparam)rnrn OnBnClickedOk();//界面已经添加了确认按钮rn return 0;rnrn[/code]
MFC SendMessage 使用方法举例
举了4个例子来理解如何使用MFC的消息,使用Visual Studio 6.0
MFC重绘对话框的边框和绘制圆角
说明:以下方法也是在网上查的,自己已实现。 第一步:重载DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) LRESULT CMyTestDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: 在此添加专用代码和/或调用基类 LRES...
MFC重绘系统ComboBox
MFC<em>重绘</em>系统ComboBox软件环境实现功能实现原理ComboBox属性设置技术要点效果DropDownDropListDisable Window 软件环境 Windows 10 1809 64bit VS2017 Enterprise MFC 实现功能 <em>重绘</em>ComboBox 添加删除按钮 自适应下拉List的宽度 记录最后一次ComboBox的窗口文本 实现原理 ComboBox属性...
MFC SendMessage小bug记录
MFC发送自定义消息 dlg.h afx_msg LRESULT test(WPARAM a, LPARAM b); dlg.cpp BEGIN_MESSAGE_MAP(videoDialog, CDialogEx) ON_WM_SYSCOMMAND() //自定义消息 ON_MESSAGE(0x9878, test) END_MESSAGE_MAP() LRESUL...
非模态对话框重绘问题,急!急!急!
SDI程序,打开一个非模态对话框,用Microsft Rich Textbox Control 来显示RTF文件,对话框无法自己<em>重绘</em>;我在对话框生成、Onsize()函数中加入ReDrawWindow()函数,重画对话框。但是,SDI窗口不能<em>重绘</em>,而且,当对话框从其它窗口变成顶层时,也不能<em>重绘</em>。我在对话框的Onsize()函数中加入 MoveWindow()函数,编译通过,运行时有错。请问那位热心人,能给我一点帮助?该怎么解决?小弟学VC不久,可能的话,请详细解答。
MFC Button 的重绘 重绘的按钮消失
CMyButton.h:rnrn#pragma oncernrn#include "afxwin.h"rnrnclass CMyButton : public CButtonrnrnrnrn//DECLARE_DYNAMIC(CMyButton)rnrn public:rnrn CMyButton();rnrn virtual ~CMyButton();rnrn //设置Button Down的背景颜色rnrn void SetDownColor(COLORREF color);rnrn //设置Button Up的背景颜色rnrn void SetUpColor(COLORREF color);rnrn BOOL Attach(const UINT nID, CWnd* pParent);rnrn protected:rnrn //必需重载的函数rnrn virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);rnrn public:rnrn //三种颜色分别为文字,Button Down的背景颜色,Button Up的背景颜色rnrn COLORREF m_TextColor, m_DownColor,m_UpColor;rnrn;rnrnCMButton.cpp:rn#include "StdAfx.h"rnrn#include "MyButton.h"rnrnCMyButton::CMyButton(void)rnrnrnrn m_DownColor = m_UpColor = RGB(0,0,0);//初始化设为黑色rnrnrnrnCMyButton::~CMyButton(void)rnrnrnrnrnrn rnrnBOOL CMyButton::Attach(const UINT nID,CWnd* pParent)rnrnrnrn if (!SubclassDlgItem(nID, pParent))rnrn return FALSE;rnrn return TRUE;rnrnrnrnvoid CMyButton::SetDownColor(COLORREF color)rnrn //CMyButton类的函数rnrn m_DownColor = color;rnrnrnrnvoid CMyButton::SetUpColor(COLORREF color)rnrnrnrn m_UpColor = color;rnrnrnrnvoid CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)rnrnrnrn CDC dc;rnrn dc.Attach(lpDrawItemStruct->hDC);//得到绘制的设备环境CDCrnrn VERIFY(lpDrawItemStruct->CtlType==ODT_BUTTON);rnrn //得当Button上文字,这里的步骤是:1,先得到在资源里编辑的按钮的文字,rnrn //然后将此文字重新绘制到按钮上,rnrn //同时将此文字的背景色设为透明,这样,按钮上仅会显示文字rnrn const int bufSize = 512;rnrn TCHAR buffer[bufSize];rnrn GetWindowText(buffer, bufSize);rnrn int size=sizeof(buffer);//得到长度rnrn DrawText(lpDrawItemStruct->hDC,buffer,size,&lpDrawItemStruct->rcItem,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP);//绘制文字rnrn SetBkMode(lpDrawItemStruct->hDC,TRANSPARENT);//透明rnrn if (lpDrawItemStruct->itemState&ODS_SELECTED)//当按下按钮时的处理rnrn ////<em>重绘</em>整个控制rnrn CBrush brush(m_DownColor);rnrn dc.FillRect(&(lpDrawItemStruct->rcItem),&brush);//利用画刷brush,填充矩形框rnrn //因为这里进行了<em>重绘</em>,所以文字也要<em>重绘</em>rnrn DrawText(lpDrawItemStruct->hDC,buffer,size,&lpDrawItemStruct->rcItem,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP);rnrn SetBkMode(lpDrawItemStruct->hDC,TRANSPARENT);rnrn rnrn else//当按钮不操作或者弹起时rnrn rnrn CBrush brush(RGB(255,255,0));rnrn dc.FillRect(&(lpDrawItemStruct->rcItem),&brush);//rnrn DrawText(lpDrawItemStruct->hDC,buffer,size,&lpDrawItemStruct->rcItem,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP);rnrn SetBkMode(lpDrawItemStruct->hDC,TRANSPARENT);rnrn rnrn if ((lpDrawItemStruct->itemState&ODS_SELECTED)&&(lpDrawItemStruct->itemAction &(ODA_SELECT|ODA_DRAWENTIRE)))rnrn //选中了本控件,高亮边框rnrn COLORREF fc=RGB(255-GetRValue(m_UpColor),255-GetGValue(m_UpColor),255-GetBValue(m_UpColor));rnrn CBrush brush(fc);rnrn dc.FrameRect(&(lpDrawItemStruct->rcItem),&brush);//用画刷brush,填充矩形边框rnrn rnrn if (!(lpDrawItemStruct->itemState &ODS_SELECTED) &&(lpDrawItemStruct->itemAction & ODA_SELECT))rnrn rnrn CBrush brush(m_UpColor); //控制的选中状态结束,去掉边框rnrn dc.FrameRect(&lpDrawItemStruct->rcItem,&brush);//rnrn dc.Detach();rnrn rnrnrnrn初始化:rnrn CMyButton m_Btn;//定义一个CMybutton的变量,可以在其他地方进行定义,只需要包含 “CMyButton.h” 即可rn rn rn rn //将按钮修改为BS_OWNERDRAW风格,允许button的采用自绘模式rn rnrn GetDlgItem(IDC_BUTTON1)->ModifyStyle(0,BS_OWNERDRAW,0);rn rnrnrnrn //绑定控件IDC_BUTTON1与类CMyButton,响应重载函数DrawItem()rn rn m_Btn.Attach(IDC_BUTTON1,this);rn //设置Button Down的背景色,SetDownColor()和SetUpnColor()是CMyButton类中的析构函数rn rn m_Btn.SetDownColor(RGB(255,255,255));rn rnrnrnrn //设置Button Up的背景色rn rn m_Btn.SetUpColor(RGB(255,255,255));rn AfxMessageBox(_T("初始化成功"));rnrnrnrn说明:1.网上的strlen(CMButton.cpp int size=sizeof(buffer);//得到长度) 因为unicode的 <em>问题</em>,我改为了sizeof不知道有没有<em>问题</em>?rn 2.在不加AfxMessageBox(_T("初始化成功"));我的IDC_BUTTON1消失,加了后会有颜色,但文字是乱码,点击确定后一样消失rnrn
重绘MFC ListCtrl控件
这是一个<em>重绘</em>的 MFC List control 控件 ,里面包含了<em>重绘</em>的progress control控件、combo box控件 以及一个button 控件,可以在list control 控件的单元格中插入这些控件,便于更好的展示信息,对于初学者学习<em>重绘</em>控件有一定的启示,里面的方法都是比较简单基础的。其中响应按钮消息和进度条消息都是自己定义的。
MFC重绘GroupBox透明
MFC<em>重绘</em>GroupBox,透明使用背景色,并有圆角
重绘MFC进度条
<em>重绘</em>Progress进度条,具有3D效果,可设置显示或关闭显示当前进度百分比,设置文字颜色,进度底色等
MFC中SendMessage的使用,菜鸟实在不懂
我现在有两个对话框,一个对话框中有一个树形控件,另一个对话框中有编辑的控件,我现在想通过得到编辑控件中的内容显示到树形控件下的子项上,树形控件所属的对话框在主框架MainFrame上,请问下用Send
急!MFC强制重绘问题 ::SendMessage()
-
MFC SendMessage与PostMessage
MFC SendMessage与PostMessage flyfish 2015-2-2 PostMessage将消息放入消息队列后马上返回 SendMessage直到窗口过程处理完消息后再返回
MFC 单文档标题栏重绘
对单文档的标题栏进行了<em>重绘</em>,可添加位图作为标题栏背景
MFC CButton重绘
VC/C++,MFC开发下的一个按钮<em>重绘</em>源码,背景贴图,文字<em>重绘</em>,或者图片和文字同时显示等,代码简单明了。
MFC 控件重绘(1)
仅仅更换图片,不具有可移植性,可继承性,则可使用以下方法。 1 创建MFC工程 2 添加按钮和图片 3 按钮属性Owner Draw = TRUE 4 消息映射WM_DRAWITEM 5 添加如下代码 void CTestButtonDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { // TODO: A
MFC里Dialog重绘
我建了一个MFC工程,是个Dialog,上面有三个按钮:rn第一个按钮“browse”是用来浏览文件的rn第二个按钮“run”就对得到的文件进行操作,并直接在Dialog上画图,就是花一些曲线之类的rn第三个按钮是一个下拉菜单,对第二个按钮操作后得到的数据进行选择,在Dialog上划出相应的图,也是一些曲线rnrn现在的<em>问题</em>是无法<em>重绘</em>,比如该Dialog最小化后再还原,画的那些曲线就没了。。。rn请问该怎样处理阿,在网上找了好多方法,都不好使,都是基于Single Document的MFC工程,用的方法在Dialog上面不管用。rnrn刚刚申请的号,没有分,以后一定给上
mfc关于重绘,Invalidate();
我是在OnTimer里边让一个物体的x坐标发生变化,每1秒变一次,并且变化后调用了Invalidate();rn然后在OnKeyDown里边,设置了每按下一个方向键,就让另一个物体的坐标发生变化,其后也调用了Invalidate(); rn运行的时候,发现连续按下方向键的同时,第一个物体的坐标不发生变化,不按的时候第一个物体才动rnrn怎么解决这个<em>问题</em>?让按下方向键的同时也能让第一个物体动
MFC发送消息函数PostMessage(异步)和SendMessage(同步)的异同
PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数。而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数。而且,PostMessage的返回值表示PostMessage函数执行是否正确;而SendMessage的返回值表示其他程序处理消息后的返回值。 简言之:PostMessage只负责将消息放到消
MFC SendMessage()函数传递字符串
CString cstr1 = _T("123");CString cstr2 = _T("hello");::SendMessage(hWnd, WM_XXX, (WPARAM)(LPCTSTR)cstr1 , (LPARAM)(LPCTSTR)cstr2); OnMessageXXXX(WPARAM wParam,LPARAM lParam){ // 在消息处理函数里接收字符
MFC程序通过SendMessage或PostMessage实现进程间通信,实现很简单
资源包含两个源程序,里面是借用MFC的消息通信实现简单的两个进程间通信,嗯主要是通过SendMessage或PostMessage,功能实现简单便捷。
MFC使用SendMessage发送自定义消息实现进程间通信
1.新建两个对话框项目,分别在StdAfx.h中添加自定义消息: View Row Code 1 #define WM_CONTROLPRINT WM_USER+1001 2.发送端,获得其他窗口句柄的方法FindWindow(); View Row Code 1 void CAaDlg::
照片自动奇迹变清晰 绿色版下载
照片自动奇迹变清晰 绿色版照片自动奇迹变清晰 绿色版照片自动奇迹变清晰 绿色版照片自动奇迹变清晰 绿色版 相关下载链接:[url=//download.csdn.net/download/qq151217611/2001019?utm_source=bbsseo]//download.csdn.net/download/qq151217611/2001019?utm_source=bbsseo[/url]
MD5标准算法的源代码下载
本程序利用c++在vs2008上实现了标准了MD5算法,代码中附有详细的中文解释,便于阅读,程序的加密结果结果和百度文库的一样,另还附有详细的报告。 相关下载链接:[url=//download.csdn.net/download/BB474282483/3021713?utm_source=bbsseo]//download.csdn.net/download/BB474282483/3021713?utm_source=bbsseo[/url]
SMD mark code下载
表面封装器件标识大全2011年完全版。 SMD-codes Active SMD semiconductor components marking codes • 170,300 SMD-codes for active semiconductor components: • Diodes, Transistors, Thyristors, Integrated Circuits • Conventional case drawings • Pinouts • Marking style • Schematic diagram • Manufacturers • Additional SMD 相关下载链接:[url=//download.csdn.net/download/huayuliang/4013749?utm_source=bbsseo]//download.csdn.net/download/huayuliang/4013749?utm_source=bbsseo[/url]
相关热词 c#串口测试应用程序 c# 匹配 正则表达式 c#防止窗体重绘 c#读写txt文件 c#挖地雷源代码 c#弹框选项 c# 移除 队列 c# 密码写入配置文件 c# 获取可用内存大小 c# 嵌入excel编辑
我们是很有底线的