12463|23

53

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WINCE5 基于MFC,使用GDI+时,能通过编译,但是画不出来 [复制链接]

WINCE5 EVC基于MFC的。使用GDI+时,能通过编译,但是画不出来

  我从这个网站http://www.ernzo.com/LibGdiplus.aspx下载下来VC使用GID+的头文件以及LIB库。。按

照下面的要求
配置好GDI+  使用环境。。

头文件:
#include
using  namespace  Gdiplus;  

#pragma  comment  (lib,  "LibGDIPlus.lib")

在Oncreat事件中,调用
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR          gdiplusToken;
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);进行初始化。
在Ondestory事件中调用
    GdiplusShutdown(gdiplusToken);

在ondraw()函数中简单测试。
void CsmartPDAView::OnDraw(CDC* pDC)
{
CsmartPDADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
Graphics g(pDC->m_hDC);//就是这个地方设置端点时,g地址值总是为0,是我不应该这么样创建么??
Pen pen1(Color::Blue ,2);
g.Clear(Color::Black );//Pen也是为0 ,说明没有创建成功,是不是缺少什么文件?
g.DrawLine(&pen1,20,20,100,100);
}

能够通过编译,但就是画不出来~~
http://arabiaherbal.com/IT/?p=1这个例子倒是弄出来了。。不知道是怎么回事,困恼一周了~~谢谢
此帖出自WindowsCE论坛

最新回复

不懂,帮顶  详情 回复 发表于 2010-6-13 08:07
点赞 关注
 

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
真是搞不懂,一会VC,一会EVC
此帖出自WindowsCE论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
要刷新界面.
此帖出自WindowsCE论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
回91program
  是EVC,,是我自己不小心打错了,,刚刚那个帖子已经结贴,重新发过一个了
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

5
 
如果方便直接用MFC的图形编程的设备环境类和图像对象类来实现楼主的功能应该很容易。
给你个例子:
CDC *dc = new CClientDC(this);//得到绘图环境

Cpen gridPen;

gridPen.CreatePen(PS_DASH, 1, RGB(0,0,255));//创建一个蓝色画笔

Cpen *penPoint = dc->SelectObject(&gridPen);//选中画笔

CBrush gridBrush( RGB(0,0,255));//创建一个蓝色画刷

CBrush *brushPoint = dc->SelectObject(&gridBrush);//选中画刷

CRect rect;
GetClientRect(&rect);

dc->Rectangle(rect);//绘制矩形

dc->SelectObject(penPoint);//恢复绘图对象

dc->SelectObject(brushPoint);//

gridPen.DeleteObject();//释放画笔

gridBursh.DeleteObject();//释放画刷

if(dc != NULL)//释放绘图环境
{
   delete dc;
}

此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
回huabinsir,

  我用GDI画,就能够画出来~~
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

7
 
回seth1104

   谢谢~~~但是我现在是想用到GDI+这个东西~呵呵
此帖出自WindowsCE论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

8
 
GDI+没有研究过,看看LZ提供的链接
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
回91program

哈,太好了~~先谢过~
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 
自己顶下哈~~欢迎大家探讨
此帖出自WindowsCE论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

11
 
值得学习
此帖出自WindowsCE论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

12
 
我看你那网站链接
创建应该是用这几个函数
Graphics::Graphics(Image*)
说明:Creates a Graphics object that is associated with an Image object.
Graphics::Graphics(HDC)
说明:Creates a Graphics object that is associated with a specified device context.
Graphics::Graphics(HDC,HANDLE)
说明:Creates a Graphics object that is associated with a specified device context and a specified device.
Graphics::Graphics(HWND,BOOL)
说明:Creates a Graphics object that is associated with a specified window.

画线用这个
Graphics::DrawLine(Pen*,Point&,Point&)
说明:The DrawLine method draws a line that connects two points.
Graphics::DrawLine(Pen*,PointF&,Point&)
说明:The DrawLine method draws a line that connects two points.
Graphics::DrawLine(Pen*,REAL,REAL,REAL,REAL)
说明:The DrawLine method draws a line that connects two points.
Graphics::DrawLine(Pen*,INT,INT,INT,INT)
说明:The DrawLine method draws a line that connects two points.
Graphics::DrawLines(Pen*,Point*,INT)
说明:The DrawLines method draws a sequence of connected lines.
Graphics::DrawLines(Pen*,PointF*,INT)
说明:The DrawLines method draws a sequence of connected lines.
楼主自己看看
此帖出自WindowsCE论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

13
 
回wliaoc
   我是用了Graphics::Graphics(HDC) 创建,Graphics::DrawLine(Pen*,INT,INT,INT,INT) 画线
此帖出自WindowsCE论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用楼主 sereve 的回复:
WINCE5 EVC基于MFC的。使用GDI+时,能通过编译,但是画不出来
Graphics g(pDC->m_hDC);//就是这个地方设置端点时,g地址值总是为0,是我不应该这么样创建么??

应该是Graphics g(pDC);就可以了
弄个整体实例给你,也是网站提供的。
Copy Code
#define UNICODE
#include
#include
using namespace Gdiplus;

VOID OnPaint(HDC hdc)
{
   Graphics graphics(hdc);
   Pen      pen(Color(255, 0, 0, 255));
   graphics.DrawLine(&pen, 0, 0, 200, 100);
}

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, INT iCmdShow)
{
   HWND                hWnd;
   MSG                 msg;
   WNDCLASS            wndClass;
   GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR           gdiplusToken;
   
   // Initialize GDI+.
   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
   
   wndClass.style          = CS_HREDRAW | CS_VREDRAW;
   wndClass.lpfnWndProc    = WndProc;
   wndClass.cbClsExtra     = 0;
   wndClass.cbWndExtra     = 0;
   wndClass.hInstance      = hInstance;
   wndClass.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
   wndClass.hCursor        = LoadCursor(NULL, IDC_ARROW);
   wndClass.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);
   wndClass.lpszMenuName   = NULL;
   wndClass.lpszClassName  = TEXT("GettingStarted");
   
   RegisterClass(&wndClass);
   
   hWnd = CreateWindow(
      TEXT("GettingStarted"),   // window class name
      TEXT("Getting Started"),  // window caption
      WS_OVERLAPPEDWINDOW,      // window style
      CW_USEDEFAULT,            // initial x position
      CW_USEDEFAULT,            // initial y position
      CW_USEDEFAULT,            // initial x size
      CW_USEDEFAULT,            // initial y size
      NULL,                     // parent window handle
      NULL,                     // window menu handle
      hInstance,                // program instance handle
      NULL);                    // creation parameters
          
   ShowWindow(hWnd, iCmdShow);
   UpdateWindow(hWnd);
   
   while(GetMessage(&msg, NULL, 0, 0))
   {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }
   
   GdiplusShutdown(gdiplusToken);
   return msg.wParam;
}  // WinMain

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
   WPARAM wParam, LPARAM lParam)
{
   HDC          hdc;
   PAINTSTRUCT  ps;
   
   switch(message)
   {
   case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);
      OnPaint(hdc);
      EndPaint(hWnd, &ps);
      return 0;
   case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
   default:
      return DefWindowProc(hWnd, message, wParam, lParam);
   }
} // WndProc
此帖出自WindowsCE论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

15
 
哦,看错了,不过楼主可以看下例子,呵呵
此帖出自WindowsCE论坛
 
 
 

回复

62

帖子

0

TA的资源

禁止发言

16
 
回wliaoc
   谢谢支持~
   这个例子在我发帖时的链接网站http://arabiaherbal.com/IT/?p=1中也有这样的一个。。呵呵
只是我是在Ondraw()时调用,你的例子是在onpaint()时调用
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

17
 
头疼~~~很无语的说啊
此帖出自WindowsCE论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

18
 
up
此帖出自WindowsCE论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

19
 
是不是那个网站提供的C++库有些问题啊,,但是C#版本的却能使用
此帖出自WindowsCE论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

20
 
此贴不能沉啊~~
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表