Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我想在基于MFC对话框的对话框中显示一些内容,但它在我的主对话框中不显示任何内容!_C++_Visual C++_Mfc_Dialog - Fatal编程技术网

C++ 我想在基于MFC对话框的对话框中显示一些内容,但它在我的主对话框中不显示任何内容!

C++ 我想在基于MFC对话框的对话框中显示一些内容,但它在我的主对话框中不显示任何内容!,c++,visual-c++,mfc,dialog,C++,Visual C++,Mfc,Dialog,这是我在对话框中显示某些内容的代码,我将它们放在OnPaint()中,但当我构建它时,主对话框中没有任何内容。 如果有人能告诉我代码错误,我真的很感激 CmyDlg::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here dc.MoveTo ( 10, 10 ) ; dc.LineTo ( 200, 10 ) ;

这是我在对话框中显示某些内容的代码,我将它们放在OnPaint()中,但当我构建它时,主对话框中没有任何内容。 如果有人能告诉我代码错误,我真的很感激

CmyDlg::OnPaint()
{

  CPaintDC dc(this); // device context for painting

  // TODO: Add your message handler code here
  dc.MoveTo ( 10, 10 ) ;
  dc.LineTo ( 200, 10 ) ;

  CPen mypen ( PS_SOLID, 3, RGB( 0, 0, 255)) ;
  CPen *oldpen = dc.SelectObject ( &mypen ) ;
  dc.Rectangle ( 10, 20, 200, 100 ) ;
  dc.SelectObject ( oldpen ) ;

  mypen.DeleteObject( ) ;
  mypen.CreatePen ( PS_DOT, 1, RGB ( 0, 0, 255));
  oldpen = dc.SelectObject ( &mypen ) ;
  CBrush mybrush ( RGB( 255,0,0)) ;
  CBrush *oldbrush = dc.SelectObject ( &mybrush ) ;
  dc.RoundRect ( 10, 120, 200, 220, 20, 20 ) ;
  dc.SelectObject ( oldbrush ) ;
  dc.SelectObject ( oldpen ) ;

  mypen.DeleteObject( ) ;
  mypen.CreatePen ( PS_DASH, 1, RGB(0,0,255)) ;
  oldpen = dc.SelectObject ( &mypen ) ;
  mybrush.DeleteObject( ) ;
  mybrush.CreateHatchBrush ( HS_CROSS, RGB ( 255, 0, 255 ) ) ;
  oldbrush = dc.SelectObject ( &mybrush ) ;
  dc.Ellipse ( 10, 240, 200, 340 ) ;
  dc.SelectObject ( oldbrush ) ;
  dc.SelectObject ( oldpen ) ;

  mypen.DeleteObject( ) ;
  mypen.CreatePen ( PS_DOT, 1, RGB (0, 0, 255)) ;
  oldpen = dc.SelectObject ( &mypen ) ;
  CBitmap mybitmap ;
  mybitmap.LoadBitmap ( IDB_BITMAP1 ) ;
  mybrush.DeleteObject( ) ;
  mybrush.CreatePatternBrush ( &mybitmap ) ;
  oldbrush = dc.SelectObject ( &mybrush ) ;
  dc.Pie ( 250, 10, 350, 110, 350, 110, 350, 10 ) ;

  oldpen = ( CPen* ) dc.SelectStockObject ( WHITE_PEN ) ;
  oldbrush = ( CBrush* ) dc.SelectStockObject ( NULL_BRUSH ) ;

  POINT pt[5] = { 250, 150, 250, 300, 300, 350, 400, 300, 320, 190 } ;  
  dc.Polygon ( pt, 5 ) ;
  dc.SelectObject ( oldpen ) ;
  dc.SelectObject ( oldbrush ) ;

  CRect r ;
  GetClientRect ( &r ) ;
  dc.TextOut ( 100, 200, "Raindrops on roses & whiskers on kittens", strlen ( "Raindrop on roses & whiskers on kittens" ) ) ;
  dc.DrawText ( "Of Words'n Figures", -1, &r, DT_SINGLELINE | DT_VCENTER | DT_CENTER ) ;

将_WM_PAINT()添加到消息映射中。

我记得,
OnPaint
默认情况下不会为MFC对话框调用。你可以添加必要的机器(我记得我是这样做的),或者使用一个控件来显示东西。@alf:我不记得为了处理WM_PAINT,必须在MFC对话框中执行任何特殊的操作。@Jörgen:嗯,也许当时是另外一回事。也许OP只需要在OnDialogInit中创建或执行其他操作。我想他只是忘了在消息映射中添加\u WM\u PAINT()。您是如何显示对话框的?DoModal,ShowDialog-向我们展示代码。谢谢Jorgen!在我的.cpp文件中也有这样一个文件:开始消息映射(Ctest4Dlg,CDialogEx)在\u WM\u SYSCOMMAND()在\u WM\u PAINT()在\u WM\u querydragion()上单击(IDOK,&Ctest4Dlg::OnBnClickedOk)结束消息映射()但我的对话框仍然没有向我显示任何内容!如果在OnPaint中设置断点,调试应用程序时是否会中断执行?我猜这个问题已经结束,但您上面写的消息是针对类
Ctest4Dlg
,您问题中的类是
CmyDlg
。将_WM_PAINT()添加到具有该方法的类的消息_映射中。