Dialog窗口

1. GDI Plus使用的头及库

#include <GdiPlus.h>
#pragma comment(lib, "gdiplus.lib")
using namespace Gdiplus;

2.对话框 - 窗口 MessageBox

MessageBox,实际上是操作系统按一定的资源建立的窗口。

CreateDialog -> CreateWindow去创建窗口

模态窗口 - 非模态窗口

ASCII码... 只用1byte表示一个字符。。。。255

UNICODE  每一个字符占两个字节。。65536种字符 ----可以表示全世界的文字。

UTF编码 ----可变长的编码。对于英文来说,与ASCII一样,一个字节表示。

汉字是两个字节。


3. MDI多文档窗口


4. Win32程序 32位的应用程序,Win64

a>> 使用的内存长度不一样,硬件来说,只是用地址总线的低32位来寻址。4GB的内存空间0xFF FF FF FF

b>> 寄存器,EAX,ECX,EBX,EDX....每一个寄存器只能存储一个32bit的值。

64位还能用RAX,RBX,RCX......


5. 判断是否选中,对test发送一个消息BM_GETCHECK,来获取它的选中状态。

SendMessage(GetDlgItem(hWnd, IDC_TEST), BM_GETCHECK, 0, 0));
SendMessage(GetDlgItem(hWnd, IDC_TEST), BM_SETCHECK, true, 0));


6.正差哪个状态,CheckBox只有两种状态,选中和不选中。

属性选中Tri-state 三态的 打上勾,半灰色,未选上。


7.向HOTKEY CONTROL发送一个HKM_GETHOTKEY消息,它会返回一个当前按下热键的虚拟键码。

只返回16位的值,2bytes...高一个字节中保存的是辅助键【ALT,SHIFT,CTRL】

低一个字节保存的扫描码。

DWORD ret = SendMessage(GetDlgItem(hWnd,  IDC_HOTKEY1), HKM_GETHOTKEY, 0, 0);
WCHAR wszTmp[25];
wprintf(wszTmp, L”choose hotkey ascii %d”, LOWORD(ret));  //虚拟键码存储在低16位。
MessageBox(hWnd, wszTmp, 0, MB_OK);


8. ShowWindow(hWnd, SW_HIDE);


9. 有特定的需求窗口

自己去注册一个窗口类,实现特定的功能。

wc.style = CS_PARENTDC | CS_GLOBALCLASS;      //子窗口的样式
CreateWindow();      //必须写WS_CHILD | WS_VISIBLE属性,父控件属性
一个窗口长什么样?   实在其回调函数WM_PAINT中绘制的。

WM_MOUSEMOVE        //鼠标经过消息
WM_MOUSEHOVER       //鼠标进入消息
WM_MOUSELEAVE       //鼠标离开消息

hWnd是控件的窗口,它的父窗口就是程序的主窗口,翻译并转发给窗口。


10.GDI+


11.GDI+是基于mfc的

#define _AFXDLL             //需要定义的宏
#include <afxwin.h>         //MFC核心组件和标准组件
#include <faxdisp.h>        //MFC自动化类

MDd   MD

MTd   MT

MD MT的区别:

MD叫做动态运行时库。MFC的库。真正运行的二进制代码mfc在dll里面。交给客户运行的时候,客户需要去安装一个VC的运行库。否则没有办法运行。

MT叫做静态运行库。MFC的库。它会把使用到的MFC的功能的二进制代码直接链接到自己的程序中,不依赖运行库,但是生成的程序会变大一点。

//初始化GDI Plus应用环境:(可直接复制粘贴)
Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_gdiplusToken;
GdiplusStartup(&m_gdiplusToken, &m_gdiplusStartupInput, NULL);
 
 
//释放GDI Plus的应用环境
GdiplusShutdown(m_gdiplusToken);


绘图需要有画布。

void OnPaint(HDC hDC)
{
//加载背景图片并设置窗口大小
Gdiplus::Image bkImage(L”./RES/BG.PNH”);       //加载图片的类
int nWidth = bkImage.GetWidth();                 //返回图片的宽度
int nHeight = bkImage.GetHeight();               //返回图片的高度
::SetWindowPos(g_hMainWnd, HWND_TOP, 0, 0, nWidth*2, nHeight*2, SWP_NOMOVE | SWP_SHOWWINDOW);
 
//画图片
Gdiplus::Graphics graphics(hDC);
//相对GDI来说,1。封装了图片解码部分, 2. 接口更加的易用
graphics.DrawImage(&bkImage, 0, 0, nWidthth*2, nHeight*2);
  //画笔,颜色是什么? 多粗?0xffff0000   ARGB格式  alpha red green blue   GDI-BITMAP  BGRA
Pen *pen = new Pen(0xffff0000, 1.0f);
//画线
graphics.DrawLine(pen, 10, 10, 20, 20);
//画椭圆
graphics.DrawEllipse(pen, 20, 20, 100, 50);
//画矩形
graphics.DrawRectangle(pen, 120, 70, 30, 20);
delete pen;
//实体画刷
SolidBrush * solidB = new SolidBrush(Color(255, 0, 0, 255));
graphics.FillRectangle(solidB, 120, 70, 30, 20);
delete solidB;
 
//贴图画刷
Image ironMan(L”.PNG”);
TextureBrush tBrush(&ironMan);      //通过图片生成画刷
Pen *pen1 = new Pen(&tBrush, 40);   //通过画刷来生成一支笔
graphics.DrawRectangle(pen1, 100, 100, 100, 60);
delete pen1;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值