我是MFC编程的新手。这些天,我正在使用Jeff Prosise的书来学习MFC编程。我遇到过:CClientDC dc (this);和我从CClientDC类的定义中找到了一个构造函数:CClientDC(CWnd* pWnd);,但是如果我用CClientDC dc = CClientDC(this);替换CClientDC dc (this);。编译器告诉我这是个错误。我不能理解。我认为CClientDC dc (this);和CClientDC dc = CClientDC(this);是一样的。或者换句话说,前者是一种简单的形式。
非常感谢。
我想知道CClientDC和CWnd::GetDC之间是否有什么区别。尽管资源分配和语义是事实,两者似乎是相当平等的。
举个例子:
CClientDC dc(this); // "this" is sub-classed object of CWnd
CGdiObject* oldObj = dc.SelectStockObject(WHITE_BRUSH);
... do some with dc ...
dc.SelectObject(oldObj);
// Device object is stack object, ReleaseDC called automaticl
我正在用MFC编写一个SFML测试应用程序。下面的代码在由AfxBeginThread()函数启动的另一个线程中的无限循环中运行。(因为我想像在纯WinAPI应用程序中一样使用SFML )
// SFML Window and View were initialized using CView's HWND
// Use SFML to draw
sf::Color back(255, 255, 0); // a yellow background
_psfwnd->clear(back);
_psfwnd->display();
// Then use MFC GDI
我将以下代码从基于MFC对话框的项目移到MFC库dll中:
CWnd dummyWnd;
standard = new Gdiplus::Font(dummyWnd.GetDC()->GetSafeHdc(), &logfont); //GetDC() returns null, which did not happen in an MFC dialog-based app
我需要一个临时DC来创建双工字体,测量字符串和其他实用程序功能。
我的问题:
可以像我在基于对话框的应用程序中那样使用CWnd吗?,或者我可以用另一种方式获得DC吗?
单击按钮后,我想在对话框中画一个矩形。为此,我编写了以下代码,
void CAnalysisofasinglyreinforcedbeamDlg::OnBnClickedCalculate()
{
// TODO: Add your control notification handler code here
CDC *pdc = NULL;
this->DrawRect(pdc);
}
void CAnalysisofasinglyreinforcedbeamDlg::DrawRect(CDC* pDC)
{
// create and select a sol
我从我的CMFCColorButton中选择了颜色,现在我想将它设置为背景(如果它还不是当前的颜色)。
我似乎不知道怎么做,所以我真的很感谢你的帮助和解释。
void CMainFrame::OnColor()
{
// m_TextColors is the ID of the color button I created in the resource editor.
CMFCRibbonColorButton* pColorBtn = DYNAMIC_DOWNCAST(CMFCRibbonColorButton, m_wndRibbonBar.FindByID(m_Tex
我使用MFC TextOut将一些文本放在屏幕上,如下所示
std::string myIntToStr(int number)
{
std::stringstream ss;//create a stringstream
ss << number;//add number to the stream
return ss.str();//return a string with the contents of the stream
}
void MViewClass::DrawFunction()
{
CClientDC aDC(this);
我读过下面的代码:
//handler for context menu element; to move an element
void CRTS_SketcherView::OnElementMove()
{
CClientDC aDC(this);
OnPrepareDC(&aDC); //Set up the device context
GetCursorPos(&m_CursorPos); //Get cursor position in screen coor
我是MFC的新手。现在我有以下问题:我在一个小窗口(如640*480)中显示了一张大尺寸的图片(如2000*2000)。难怪图片在不缩小的情况下无法完全显示出来。我知道如果图片可以放入窗口,我可以保存原始图片而不会丢失任何像素,但是,我现在不能这样做:
CClientDC SHDC(this); //"this" is a CMDIChildWnd derived class
CDC memDC;
CRect rect;
GetClientRect(&rect);
memDC.CreateCompatibleDC(&SHDC);
CBitmap bm;
int
我需要使用MFC显示来自sprite的图像。在谷歌上搜索,我找到了这个,它把我带到了这个代码:
//This code is in the OnPaint function
//img is a CImage, declared as a class member
img.Load(_T("icon-sprite.png"));
HDC imgDc = img.GetDC();
int height = 24;
int width = 24;
//Sprite Icon is a CStatic
CDC* spriteDc = spriteIcon.GetDC();
HD
嗨,在C++ Visual中有一个函数:ExtFloodFill( int x,int y,COLORREF,UINT nFillType);
我的问题是我们应该写些什么来代替
int x,int y,COLORREF crColor,UINT nFillType
比如,如果我有一个物体,我想给它上颜色,怎么做?
enter code here
#include "afxwin.h"
class fr : public CFrameWnd
{
public:
CPoint s