windows设计

个人信息:就读于燕大本科软件工程专业 目前大三;

本人博客:google搜索“cqs_2012”即可;

个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献;

编程语言:C++ ;

编程坏境:Windows 7 专业版 x64;

编程工具:vs2008;

制图工具:office 2010 powerpoint;

硬件信息:7G-3 笔记本;

真言

有些事不能着急,但是有些事不能不知道,有些事必须等,有些事还得必须做,有些事就是这些事:

对于资金:少支出,多收入

对于时间:少玩耍,多工作

对于感情:少动情,多平淡

题目

用windows技术,创建自己的windows应用程序。

代码

// test.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "resource.h"

#define MAX_LOADSTRING 100
#define WM_SETCOLOR WM_USER+1

// Global Variables:
HINSTANCE hInst;								// current instance
TCHAR szTitle[MAX_LOADSTRING];								// The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];								// The title bar text

struct DrawStruct
{
	POINT start;
	POINT end;
	bool use;
	int penwidth;
	COLORREF pencolor;
	int shape;
};

LRESULT CALLBACK SetWidth(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
//void DrawDraw(HWND hwnd,int shape,POINT s,POINT e,COLORREF color,int width);
void DrawDraw(HWND hwnd,DrawStruct *mydraw);
LRESULT CALLBACK ColorProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);

// Foward declarations of functions included in this code module:
ATOM				MyRegisterClass(HINSTANCE hInstance);
BOOL				InitInstance(HINSTANCE, int);
LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK	About(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
	MSG msg;
	HACCEL hAccelTable;

	// Initialize global strings
	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
	LoadString(hInstance, IDC_TEST, szWindowClass, MAX_LOADSTRING);
	MyRegisterClass(hInstance);

	// Perform application initialization:
	if (!InitInstance (hInstance, nCmdShow))
	{
		return FALSE;
	}

	hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_TEST);

	// Main message loop:
	while (GetMessage(&msg, NULL, 0, 0))
	{
		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return msg.wParam;
}

ATOM MyRegisterClass(HINSTANCE hInstance)
{
	WNDCLASSEX wcex;

	wcex.cbSize = sizeof(WNDCLASSEX); 

	wcex.style			= CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc	= (WNDPROC)WndProc;
	wcex.cbClsExtra		= 0;
	wcex.cbWndExtra		= 0;
	wcex.hInstance		= hInstance;
	wcex.hIcon			= LoadIcon(hInstance, (LPCTSTR)IDI_TEST);
	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
	wcex.lpszMenuName	= (LPCSTR)IDC_TEST;
	wcex.lpszClassName	= szWindowClass;
	wcex.hIconSm		= LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

	return RegisterClassEx(&wcex);
}

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;
   hInst = hInstance; // Store instance handle in our global variable
   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
   if (!hWnd)
   {
      return FALSE;
   }
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
   return TRUE;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

	static DrawStruct * mydraw = new DrawStruct;
	static HWND hwndcolor;

	int wmId, wmEvent;
	PAINTSTRUCT ps;
	HDC hdc;
	static HDC hMemDC;

	TCHAR szHello[MAX_LOADSTRING];
	LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

	switch (message)
	{
		case WM_CREATE:
			mydraw->pencolor = RGB(1,1,1);
			mydraw->penwidth = 1;
			mydraw->shape = 1;
			mydraw->use = false;
			break;

		case WM_COMMAND:
			wmId    = LOWORD(wParam);
			wmEvent = HIWORD(wParam); 

			switch (wmId)
			{
				case IDM_ABOUT:
				   DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
				   break;
				case IDM_EXIT:
				   DestroyWindow(hWnd);
				   break;
				case IDM_LINE:
					mydraw->shape = 1;
					break;
				case IDM_Juxing:
					mydraw->shape = 2;
					break;
				case IDM_Tuoyuan:
					mydraw->shape = 3;
					break;
				case IDM_Width:
					DialogBoxParam(hInst,(LPCTSTR)IDD_Penwidth,hWnd,(DLGPROC)SetWidth,(LPARAM)&(mydraw->penwidth));
					break;

				case IDM_Color:
					if(! hwndcolor)
						hwndcolor = CreateDialog(hInst,(LPCTSTR)IDD_Color,hWnd,(DLGPROC)ColorProc);
					ShowWindow(hwndcolor,SW_SHOW);
					break;

				default:
				   return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;
		case WM_SETCOLOR:
			mydraw->pencolor = (COLORREF)lParam;
			break;
		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);

			RECT rt;
			GetClientRect(hWnd, &rt);
			DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
			EndPaint(hWnd, &ps);

			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;

		case WM_LBUTTONDOWN:
			mydraw->start.x = LOWORD(lParam);
			mydraw->start.y = HIWORD(lParam);
			mydraw->end = mydraw->start;
			mydraw->use = true;
			break;
		case WM_LBUTTONUP:
			if(mydraw->use == true)
			{
				//DrawDraw(hWnd,mydraw.shape,mydraw.start,mydraw.end,mydraw.pencolor,mydraw.penwidth);
				DrawDraw(hWnd,mydraw);
				mydraw->end.x= LOWORD(lParam);
				mydraw->end.y= HIWORD(lParam);
				DrawDraw(hWnd,mydraw);
				//DrawDraw(hWnd,mydraw.shape,mydraw.start,mydraw.end,mydraw.pencolor,mydraw.penwidth);
			}
			mydraw->use = false;
			break;
		case WM_MOUSEMOVE:
			if(mydraw->use == true)
			{
				DrawDraw(hWnd,mydraw);
				//DrawDraw(hWnd,mydraw.shape,mydraw.start,mydraw.end,mydraw.pencolor,mydraw.penwidth);
				mydraw->end.x= LOWORD(lParam);
				mydraw->end.y= HIWORD(lParam);
				//DrawDraw(hWnd,mydraw.shape,mydraw.start,mydraw.end,mydraw.pencolor,mydraw.penwidth);
				DrawDraw(hWnd,mydraw);
			}
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
				return TRUE;

		case WM_COMMAND:
			if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
    return FALSE;
}

LRESULT CALLBACK SetWidth(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	static  int * width;
	switch (message)
	{
	case WM_INITDIALOG:
		width = (int *)lParam;
		SetDlgItemInt(hDlg,IDC_Width,*width,TRUE);
		return TRUE;

	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDOK:
			BOOL abuse;
			(*width) = GetDlgItemInt(hDlg,IDC_Width,&abuse,TRUE);
			EndDialog(hDlg, LOWORD(wParam));
			return TRUE;
		case IDCANCEL:
			EndDialog(hDlg, LOWORD(wParam));
			return TRUE;
		}
		break;
	}
	return FALSE;
}

//void DrawDraw(HWND hwnd,int shape,POINT s,POINT e,COLORREF color,int width)
void DrawDraw(HWND hwnd,DrawStruct * mydraw)
{
	HPEN pen,oldpen;
	pen = CreatePen(PS_SOLID,mydraw->penwidth,mydraw->pencolor);
	HDC hdc = GetDC(hwnd);
	oldpen = (HPEN)SelectObject(hdc,pen);
	SetROP2(hdc,R2_NOTXORPEN);

	switch(mydraw->shape)
	{
		case 1:
			MoveToEx(hdc,mydraw->start.x,mydraw->start.y,NULL);
			LineTo(hdc,mydraw->end.x,mydraw->end.y);
			break;
		case 2:
			Rectangle(hdc,mydraw->start.x,mydraw->start.y,mydraw->end.x,mydraw->end.y);
			break;
		case 3:
			Ellipse(hdc,mydraw->start.x,mydraw->start.y,mydraw->end.x,mydraw->end.y);
			break;
	}

	SelectObject(hdc,oldpen);
	DeleteObject(pen);
	ReleaseDC(hwnd,hdc);
}

LRESULT CALLBACK ColorProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	int i;
	HBRUSH hbr;
	HPEN hpen;
	COLORREF color;
	switch (message)
	{
	case WM_INITDIALOG:

		//return TRUE;
		break;
	case WM_PAINT:
		hdc = BeginPaint(hDlg, &ps);
		// TODO: Add any drawing code here...
		RECT rt;
		GetClientRect(hDlg, &rt);

		for(i =0;i<rt.right/50;i++){
			color = RGB(20*i,255-30*i,50+10*i);
			hbr = CreateSolidBrush(color);
			hpen = CreatePen(PS_SOLID,1,color);
			SelectObject(hdc,hbr);
			SelectObject(hdc,hpen);
			Rectangle(hdc,50*i,0,50*(i+1),50);

			color = RGB(255-30*i,30*i,50+10*i);
			hbr = CreateSolidBrush(color);
			hpen = CreatePen(PS_SOLID,1,color);
			SelectObject(hdc,hbr);
			SelectObject(hdc,hpen);
			Rectangle(hdc,50*i,50,50*(i+1),rt.bottom);
		}
		EndPaint(hDlg, &ps);
		break;
	case WM_LBUTTONDOWN:
		color = GetPixel(GetDC(hDlg),LOWORD(lParam),HIWORD(lParam));
		SendMessage(GetParent(hDlg),WM_SETCOLOR,WPARAM(0L),LPARAM(color));
		break;
	case WM_COMMAND:
		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
		{
			//EndDialog(hDlg, LOWORD(wParam));
			ShowWindow(hDlg,SW_HIDE);
			return TRUE;
		}
		break;
	}
	return FALSE;
}

代码压缩包

http://download.csdn.net/detail/cqs_2012/7582253

windows设计,布布扣,bubuko.com

时间: 2024-12-23 06:33:49

windows设计的相关文章

很多人不愿意承认汉澳sinox已经超过windows

汉澳sinox采用的zfs和jail打造高可靠性存储服务器和矩阵计算机,这不是windows和linux能相提并论的. 不过很多人马上出来出来反驳说,windows驱动程序多(就是支持硬件多),软件多,游戏多! 但是sinox安全多,稳定多,可靠多.sinox是高性能计算机的最佳选择,打造高级工作站和可靠服务器的首选. windows也有病毒多,漏洞多,木马多,危险多.这些对用户追求安全操作系统是难以接受的.可是人们又不得不选择,因为他们没有别的选择. 最重要的是他们不愿意承认,也无法接受汉澳s

为什么要设置Java环境变量(windows)

在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示一步一步地正确配置,但时间一长就忘了,出现了问题也无从下手.究其原因,就是对这些概念没有理解,知其然但不知其所以然.下面的内容,就是帮助大家知其所以然. 一.基本原理 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系

Windows系统中path环境变量详解

在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示一步一步地正确配置,但时间一长就忘了,出现了问题也无从下手.究其原因,就是对这些概念没有理解,知其然但不知其所以然.下面的内容,就是帮助大家知其所以然. 一.基本原理 首先看PATH环境变量. JAVA的初学者,必须要学会配置PATH环境变量,否则无法编译.运行JAVA程序.那么,为什么要配置PAT

《Windows程序设计》复习题

<Windows程序设计>模拟题 一.单项选择题 1. 在VC++中,项目文件的扩展名是(B). A)exe                                             B)dsp C) dsw                                             D)cpp 2. 在MFC中,利用ClassWizard不能(D ). A)建立新类                                    B)进行消息映射 C) 增加类

windows系统的PATH变量@转载

在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示一步一步地正确配置,但时间一长就忘了,出现了问题也无从下手.究其原因,就是对这些概念没有理解,知其然但不知其所以然.下面的内容,就是帮助大家知其所以然. 一.基本原理 首先看PATH环境变量. JAVA的初学者,必须要学会配置PATH环境变量,否则无法编译.运行JAVA程序.那么,为什么要配置PAT

Windows平台下使用Beyond Compare作为GIT默认的比对与合并工具

在Windows平台使用GUI习惯了,因此在CMD命令下反而感到不适 特别是在使用GIT时,尤其明显(这主要是GIT在工作中已经不可或缺) 使用GIT最常用的功能就是提交,添加,比较差异和合并分支,特别是在更改的文件比较多的情况下在CMD命令下查看差异下显得特别的不人性化(鼠标不停的向下翻) 终于实在是忍受不了,所以就想能不能通过自己最常用的方式来比较差异呢? 因为在工作中一直使用的就是Beyond Compare,所以决定将其作为默认的GIT比较工具 编辑GIT配置文件 C:\Users\Ad

【转】Windows下PATH等环境变量详解

[转]“肖凡的专栏” 博客,请务必保留此出处http://legend2011.blog.51cto.com/3018495/553255 在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示一步一步地正确配置,但时间一长就忘了,出现了问题也无从下手.究其原因,就是对这些概念没有理解,知其然但不知其所以然.下面的内容,就是帮助大家知其所以然. 一.基

非常多人不愿意承认汉澳sinox已经超过windows

汉澳sinox採用的zfs和jail打造高可靠性存储server和矩阵计算机,这不是windows和linux能相提并论的. 只是非常多人立即出来出来反驳说,windows驱动程序多(就是支持硬件多),软件多,游戏多! 可是sinox安全多,稳定多,可靠多.sinox是高性能计算机的最佳选择,打造高级工作站和可靠server的首选. windows也有病毒多,漏洞多,木马多,危急多.这些对用户追求安全操作系统是难以接受的.但是人们又不得不选择,由于他们没有别的选择. 最重要的是他们不愿意承认,也

Windows API参考大全新编

书名:新编Windows API参考大全 作者:本书编写组 页数:981页 开数:16开 字数:2392千字 出版日期:2000年4月第二次印刷 出版社:电子工业出版社 书号:ISBN 7-5053-5777-8 定价:98.00元 内容简介 作为Microsoft 32位平台的应用程序编程接口,Win32 API是从事Windows应用程序开发所必备的.本书首先对Win32 API函数做完整的概述:然后收录五大类函数:窗口管理.图形设备接口.系统服务.国际特性以及网络服务:在附录部分,讲解如何