/*******************************************************************
程序:univ
文件:univ.cpp
功能:综合实验
********************************************************************/
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
extern int QuerySaveFile(HWND hWnd, TCHAR * szTitleName);
BOOL InitWindow (HINSTANCE hInstance, int nCmdShow);
LRESULT CALLBACK WinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
//子窗口函数原型
BOOL CALLBACK DlgWndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
#define UNTITLED TEXT ("无标题")
BOOL bDrawing;
static int opensign=0;
DWORD fsize;
static int ndraws=0;
static int opdraws=0;
int width=1;
static int pattern=0;
static TCHAR szAppName[] = TEXT ("univ"); //应用程序名称
int WINAPI WinMain (HINSTANCE hInstance, //当前实例句柄
HINSTANCE hPrevInstance, //前一个实例句柄
PSTR szCmdLine, //命令行字符
int iCmdShow) //窗口显示方式
{
MSG msg;
//创建主窗口
if (!InitWindow (hInstance, iCmdShow))
return FALSE;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;
}
/******************************************************************
函数:InitWindow ()
功能:创建窗口。
*******************************************************************/
static BOOL InitWindow (HINSTANCE hInstance, int iCmdShow)
{
HWND hwnd; //窗口句柄
WNDCLASS wcMainWnd; //窗口类结构
ATOM a;
//填充窗口类结构
wcMainWnd.style = CS_VREDRAW | CS_HREDRAW;
wcMainWnd.lpfnWndProc = WinProc;
wcMainWnd.cbClsExtra = 0;
wcMainWnd.cbWndExtra = 0;
wcMainWnd.hInstance = hInstance;
wcMainWnd.hIcon = LoadIcon (hInstance, IDI_APPLICATION);
wcMainWnd.hCursor = LoadCursor (NULL, IDC_ARROW);
wcMainWnd.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH);
wcMainWnd.lpszMenuName = szAppName;
wcMainWnd.lpszClassName = szAppName;
//注册窗口类
a = RegisterClass (&wcMainWnd);
if (!a)
{
MessageBox (NULL, TEXT ("注册窗口类失败!"), szAppName,
MB_ICONERROR);
return 0;
}
//创建主窗口
hwnd = CreateWindow (szAppName, //窗口类名称
TEXT ("简易绘图—20068002102"), //窗口标题
WS_OVERLAPPEDWINDOW, //窗口风格
100, //窗口位置的x坐标
100, //窗口位置的y坐标
600, //窗口的宽度
400, //窗口的高度
NULL, //父窗口句柄
LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1)), //菜单句柄
hInstance, //应用程序实例句柄
NULL); //窗口创建数据指针
if( !hwnd ) return FALSE;
//显示并更新窗口
ShowWindow( hwnd, iCmdShow );
UpdateWindow( hwnd );
return TRUE;
}
struct MyDraw
{
POINT start;
POINT end;
int myfunc;
COLORREF mycolor;
int penwidth;
LOGFONT mylogfont;
char mystr[64];
};
typedef struct MyDraw MYDRAW;
MYDRAW mydraws[128];
MYDRAW nonedraw;
/******************************************************************
函数:WinProc ()
功能:处理主窗口消息
*******************************************************************/
LRESULT CALLBACK WinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
HMENU hMenu;
static int iSelectionFunc = IDM_MY_LINE;
static HPEN hPen0;
static HPEN hPen1;
static HBRUSH hBrush0, hBrush1;
static HINSTANCE hInstance;
static CHOOSECOLOR cc;
static COLORREF crCustomColors[16];
static COLORREF crPen = RGB (0, 0, 0);
static COLORREF crBrush = RGB (0, 0, 0);
static COLORREF crText = RGB (0, 0, 0);
int i=0;
static TCHAR szFileFilter[] = TEXT ("Text Files (*.TXT)\0*.txt\0") \
TEXT ("Text Files (*.C)\0*.c\0") \
TEXT ("Text Files (*.H)\0*.h\0") \
TEXT ("Text Files (*.RC)\0*.rc\0") \
TEXT ("All Files (*.*)\0*.*\0\0");
static TCHAR szFileName[MAX_PATH], szFileTitle[MAX_PATH];
static OPENFILENAME ofn;
static HANDLE hFile;
static BOOL bFileChange = FALSE;
TCHAR szWndCaption[MAX_PATH];
DWORD dwBytes;
static CHOOSEFONT cf;
static LOGFONT logfont;
static HFONT hfont1;
static HFONT hfont0;
static POINT movedownpoint;
static POINT movemovepoint;
static int mytop,mybottom,myleft,myright;
static int nmove;
switch (message)
{
case WM_CREATE:
hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
//初始化结构cf
GetObject (GetStockObject (SYSTEM_FONT), sizeof (LOGFONT),
(PTSTR) &logfont); //初始化结构 logfont
cf.lStructSize = sizeof (CHOOSEFONT);
cf.hwndOwner = hWnd;
cf.hDC = NULL;
cf.lpLogFont = &logfont;
cf.iPointSize = 0;
cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS | CF_EFFECTS;
cf.rgbColors = 0;
cf.lCustData = 0;
cf.lpfnHook = NULL;
cf.lpTemplateName = NULL;
cf.hInstance = NULL;
cf.lpszStyle = NULL;
cf.nFontType = 0;
cf.nSizeMin = 0;
cf.nSizeMax = 0;
//初始化结构变量 ofn
ofn.lStructSize = sizeof (OPENFILENAME);
ofn.hwndOwner = hWnd;
ofn.hInstance = NULL;
ofn.lpstrFilter = szFileFilter;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.nFilterIndex = 0;
ofn.lpstrFile = NULL; //调用 GetOpenFileName 函数前设置
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = NULL; //调用 GetOpenFileName 函数前设置
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = NULL;
ofn.Flags = 0; //调用 GetOpenFileName 函数前设置
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = TEXT ("txt");
ofn.lCustData = 0L;
ofn.lpfnHook = NULL;
//显示窗口标题
szFileName[0] = '\0';
szFileTitle[0] = '\0';
wsprintf (szWndCaption, TEXT ("%s - %s"), UNTITLED, szAppName);
SetWindowText (hWnd, szWndCaption) ;
//初始化结构 cc
cc.lStructSize = sizeof (CHOOSECOLOR);
cc.hwndOwner = hWnd;
cc.hInstance = NULL;
cc.rgbResult = RGB (0, 0, 0);
cc.lpCustColors = crCustomColors;
cc.Flags = CC_RGBINIT | CC_FULLOPEN;
cc.lCustData = 0;
cc.lpfnHook = NULL;
cc.lpTemplateName = NULL;
return 0;
case WM_LBUTTONDOWN:
if (!bDrawing)
SetCapture (hWnd);
if (pattern==0) // 绘图模式下响应
{
if (opensign==1) ndraws=opdraws+1;
mydraws[ndraws].start.x = LOWORD (lParam);
mydraws[ndraws].start.y = HIWORD (lParam);
mydraws[ndraws].end.x = LOWORD (lParam);
mydraws[ndraws].end.y = HIWORD (lParam);
switch (iSelectionFunc)
{
case IDM_MY_LINE:
mydraws[ndraws].mycolor=crPen;
mydraws[ndraws].myfunc=IDM_MY_LINE;
mydraws[ndraws].penwidth=width;
bDrawing = TRUE;
break;
case IDM_MY_RECTANGLE:
mydraws[ndraws].mycolor=crBrush;
mydraws[ndraws].myfunc=IDM_MY_RECTANGLE;
bDrawing = TRUE;
break;
case IDM_MY_ELLIPSE:
mydraws[ndraws].mycolor=crBrush;
mydraws[ndraws].myfunc=IDM_MY_ELLIPSE;
bDrawing = TRUE;
break;
case IDM_MY_TEXT:
mydraws[ndraws].mylogfont=logfont;
mydraws[ndraws].mycolor=crT
没有合适的资源?快使用搜索试试~ 我知道了~
windows编程交互式绘图完整程序
共7个文件
cpp:2个
dsw:1个
aps:1个
5星 · 超过95%的资源 需积分: 32 59 下载量 119 浏览量
2009-04-15
19:58:11
上传
评论 2
收藏 16KB RAR 举报
温馨提示
利用windows编程实现交互式绘图,可绘制各种图形,并对绘制的图形进行文件存储,并可从文件读出。资源包括整个工程,下载后用vc6.0打开dsw文件,编译即可
资源推荐
资源详情
资源评论
收起资源包目录
windows编程交互式绘图.rar (7个子文件)
windows编程交互式绘图
resource.h 3KB
univ.cpp 20KB
univ0.cpp 966B
Script1.aps 19KB
univ.dsp 4KB
Script1.rc 5KB
univ.dsw 533B
共 7 条
- 1
roger18
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页