Win32 CreateWindow GdiPlus
#include "stdafx.h"
#include "TestGidPlus.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
// Initialize GDI+.
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); WNDCLASSEX wcApp;
wcApp.lpszClassName = TEXT("Test_Window");
wcApp.cbSize = sizeof(wcApp);
wcApp.style = CS_HREDRAW | CS_VREDRAW;
wcApp.hInstance = hInstance;
wcApp.cbWndExtra = 0;
wcApp.cbClsExtra = 0;
wcApp.hCursor = LoadCursor(NULL,IDC_ARROW);
wcApp.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wcApp.lpfnWndProc = WndProc;
wcApp.hCursor = LoadCursor(NULL,IDC_ARROW);
wcApp.hbrBackground = (HBRUSH)(COLOR_WINDOW);
wcApp.lpszMenuName = NULL;
wcApp.hIconSm = NULL;
RegisterClassExW(&wcApp); HWND hwnd = CreateWindowExW (NULL, TEXT("Test_Window"), TEXT(""), WS_OVERLAPPEDWINDOW, 100, 100, 600, 400, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd,SW_NORMAL);
UpdateWindow(hwnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
GdiplusShutdown(gdiplusToken);
return msg.lParam;
} LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT b;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_CREATE:
//SendMessage(hwnd,WM_PAINT,0,0);
break;
case WM_PAINT:
{
///////////////////Gdiplus与Gdi混合实现双缓冲////////////////////
//HDC hMemDC = CreateCompatibleDC(m_hDC);
//HBITMAP hMemBitmap = CreateCompatibleBitmap(m_hDC, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT);
//SelectObject(hMemDC, hMemBitmap);
//Graphics *memGraphics = new Graphics(hMemDC);
//Pen pen(Color(192, 192, 192));
//SolidBrush brush(Color(255, 255, 255));
//memGraphics->FillRectangle(&brush, xPos, yPos, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT);
//memGraphics->DrawRectangle(&pen, xPos, yPos, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT);
//for (int i = 0; i < SMALL_IMAGE_COUNT; i++)
//{
// DrawImageFromId(memGraphics, imgID[i], imgXPos[i], imgYPos[i]);
//}
//DeleteObject(hMemBitmap);
//BitBlt(m_hDC, xPos, yPos, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT, hMemDC, 0, 0, SRCCOPY);
//DeleteDC(hMemDC);
//delete memGraphics; hdc = BeginPaint(hwnd, &ps);
Graphics graphics(hdc);
Pen pen(Color(255, 0, 0));
graphics.DrawLine(&pen, 0, 0, 0, 500);
EndPaint(hwnd, &ps);
break;
}
case WM_NCHITTEST:
{
POINT pt;
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam); RECT rcClient;
GetClientRect(hwnd, &rcClient); b = DefWindowProc(hwnd,message,wParam,lParam);
switch(b)
{
case HTCLIENT:
SetWindowText(hwnd,TEXT("点击的是客户区"));
return b;
case HTCAPTION:
SetWindowText(hwnd,TEXT("点击的是标题栏"));
return b;
case HTBOTTOM:
SetWindowText(hwnd,TEXT("点击的是下边框"));
return b;
case HTBOTTOMLEFT:
SetWindowText(hwnd,TEXT("点击的是左下边框"));
return b;
return b;
case HTCLOSE:
SetWindowText(hwnd,TEXT("点击的是关闭按钮"));
return b;
case HTLEFT:
SetWindowText(hwnd,TEXT("点击的是左边框"));
return b;
case HTMAXBUTTON:
SetWindowText(hwnd,TEXT("点击的是最大化按钮"));
return b;
case HTMINBUTTON:
SetWindowText(hwnd,TEXT("点击的是最小化按钮"));
return b;
case HTRIGHT:
SetWindowText(hwnd,TEXT("点击的是右边框"));
return b;
case HTSYSMENU:
SetWindowText(hwnd,TEXT("点击的是系统菜单"));
return b;
case HTTOP:
SetWindowText(hwnd,TEXT("点击的是上边框"));
return b;
case HTBOTTOMRIGHT:
SetWindowText(hwnd,TEXT("点击的是右下边框"));
return b;
case HTTOPRIGHT:
SetWindowText(hwnd,TEXT("点击的是右上边框"));
return b;
case HTTOPLEFT:
SetWindowText(hwnd,TEXT("点击的是左上边框"));
return b;
default:
return b;
}
}
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
Win32 CreateWindow GdiPlus的更多相关文章
- win32窗口机制之CreateWindow
CreateWindow 函数功能:该函数创建一个重叠式窗口.弹出式窗口或子窗口.它指定窗口类,窗口标题,窗口 风格,以及窗口的初始位置及大小(可选的).该函数也指定该窗口的父窗口或所属窗 ...
- win32自绘按钮,使用GDI+(一)
第一次写随笔,我本来想将win32窗口的标题栏设置成渐变色,像这样的效果 但发现找不到设置标题栏属性的api,SetWindowLong也只是增减窗口的固定的样式而已.所以想到一个思路,把标题栏去掉, ...
- Win32基础知识整理
1.定义字符串 在资源新建String table,增加新字符串: (win32加载) TCHAR tcIDName[255]=_T(""); LoadString(hInstan ...
- 2013 duilib入门简明教程 -- 结合win32和MFC (16)
虽然duilib自带在MFC中使用duilib的Demo,但只是MFC窗口和duilib窗口不重叠的情况.如果要在MFC窗口中嵌入duilib控件,或者在duilib控件中嵌入MFC的控件的话 ...
- win32记事本程序(一)
我不会取标题,大体上我想用win32,模仿windows的记事本,写个记事本程序,最后让我的程序和微软的程序在外观和功能上都差不多.这样一来我可以学到一些新知识,巩固旧的知识. 一.首先做个菜单栏吧. ...
- win32自绘按钮,使用GDI+(三)
解决前面的问题.实现鼠标移动进入到按钮的特效. 效果是这样的 鼠标移到按钮上,改变按钮的颜色(这里用的是直接换贴在按钮上的图片) 程序运行 鼠标进入按钮 代码 #ifndef ULONG_PTR // ...
- Microsoft Win32 to Microsoft .NET Framework API Map
Microsoft Win32 to Microsoft .NET Framework API Map .NET Development (General) Technical Articles ...
- 1、win32创建窗口函数(windows程序内部运行机制)
利用win32创建窗口函数,主要操作步骤为: 1.设计一个窗口类 2.注册窗口类 3.创建窗口 4.显示及窗口更新 5.消息循环 6.窗口过程函数 (1)设计一个窗口类 设计窗口类,这样的类型已经 ...
- Win32 RGB三原色
以前看到三原色的图案,一直很好奇是如何画出来.后来终于搞清楚了,其实很简单,实际上就是RGB三个分量的"位与"运算. 下面给出Win32绘制三原色图案的例子,特此记录在此: #in ...
随机推荐
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
简记: CGAffineTransformMake(a,b,c,d,tx,ty) ad缩放bc旋转tx,ty位移,基础的2D矩阵 公式 x=ax+cy+tx y=bx+dy+ty 1.矩阵的基本 ...
- [读书笔记]算法(Sedgewick著)·第一章(2)
接着上一篇,mindmap更新如下内容. 3.背包.队列和栈 这节主要讲述了这三种数据结构(Bag.Queue.Stack)的API.实现以及链表.Queue和Stack还含有删除元素的方法.并引出了 ...
- pptp vpn
webalizer是一个高效的.免费的web服务器日志分析程序.其分析结果以HTML文件格式保存,从而可以很方便的通过web服务器进行浏览; http://daliang1215.iteye.com/ ...
- MSSQLSERVER数据库- 游标
游标是属于级行操作,遍历一个表一行一行读,而SQL查询是基于数据集的,在数据量大的时候,使用游标会降低查询速度.这是很明显的.但是有些操作就用游标实现.所以游标又是不或缺少的.我很久都没用游标了,一时 ...
- 使用jdom操作xml文件 去除子节点带有命名空间
package com.soft.common; import java.util.HashMap; import java.util.Map; import org.jdom2.Namespace; ...
- JS/JQ综合总结
总结 js部分 一 语法结构 1 区分大小写 2注意 //单行 /*多行注释*/ 3子面量(直接量 literal) 12//数字 5.8//小数 "hello"字符串 true ...
- Hyper-V性能监控_CPU
Hyper-V性能监控: 物理CPU: \Hyper-V Hypervisor Logical Processor(*)\%Total Run Time %Total Run Time :处理器处理来 ...
- PHP获取客户端和服务器IP地址
/** * 获取客户端IP地址 * @return string */ function get_client_ip() { if(getenv('HTTP_CLIENT_IP')){ $client ...
- Linux系统及应用问题分析排查工具
linux 阿里技术协会 摘要: Linux服务器上经常遇到一些系统和应用上的问题,如何分析排查,需要利器,下面总结列表了一些常用工具.trace tool:最后也列举了最近hadoop社区在开发发展 ...
- [转]Form Builder:app_field.clear_dependent_fields和APP_FIELD.set_dependent_field的用法
转自:http://www.cnblogs.com/toowang/p/3668070.html 可以调用APP_FIELD.clear_dependent_fields和APP_FIELD.set_ ...