//------------------------------------------------------------------------------
// Copyright (c) 2009 eryar All rights reserved.
//
// File : Main.cpp
// Author : eryar@163.com
// Date : 2009-9-18 23:04
// Version : 1.0v
//
// Description :
//
//==============================================================================
#include "List.h"
char* szAppName = "GraphicsPro";
HINSTANCE ghInst;
LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int iShowCmd)
{
HWND hWnd;
MSG Msg;
WNDCLASS wndclass;
char* szClassName = "CGraphics";
ghInst = hInstance;
wndclass.style = CS_HREDRAW|CS_VREDRAW;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.lpfnWndProc = WndProc;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szClassName;
if (!RegisterClass(&wndclass)) {
MessageBox(NULL, "This program requires Windows NT!", szAppName, MB_ICONERROR);
return 0;
}
hWnd = CreateWindow(
szClassName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd, iShowCmd);
UpdateWindow(hWnd);
while (GetMessage(&Msg, NULL, 0, 0) ) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
//RECT rcClient;
//int cyVScroll;
static HMENU hMenu;
//static HWND hProgressBar;
static List graphics;
switch (Msg) {
case WM_CREATE: {
InitCommonControls();
hMenu = WinMenu(hWnd);
hMenu = GetSubMenu(hMenu, 0);
// Status bars
//GetClientRect(hWnd, &rcClient);
//cyVScroll = GetSystemMetrics(SM_CYVSCROLL);
//hProgressBar = CreateWindow(
// PROGRESS_CLASS,
// "",
// WS_CHILD|WS_VISIBLE,
// rcClient.left,
// rcClient.bottom - cyVScroll,
// rcClient.right,
// cyVScroll,
/// hWnd,
// NULL,
// ghInst,NULL);
}
return 0;
case WM_SIZE:
return 0;
case WM_MOUSEMOVE:
return 0;
case WM_RBUTTONUP:
POINT point;
point.x = LOWORD(lParam);
point.y = HIWORD(lParam);
ClientToScreen(hWnd,&point);
TrackMenu(hWnd, point);
return 0;
case WM_PAINT:
hDC = BeginPaint(hWnd,&ps);
EndPaint(hWnd, &ps);
RenderScene(hWnd, graphics);
return 0;
case WM_KEYDOWN:
switch (wParam) {
case VK_ESCAPE:
if (MessageBox(hWnd, "Are you sure to quit? ", szAppName, MB_YESNOCANCEL|MB_ICONQUESTION) == IDYES) {
PostQuitMessage(0);
}
return 0;
case VK_RETURN:
return 0;
}
return 0;
case WM_SYSCOMMAND:
switch (wParam) {
case SC_CLOSE:
if (MessageBox(hWnd, "Save before quit? ", szAppName, MB_YESNOCANCEL|MB_ICONQUESTION) == IDYES) {
PostQuitMessage(0);
}
return 0;
default:
return DefWindowProc(hWnd, Msg, wParam, lParam);
}
return 0;
case WM_COMMAND:
CommandAction(hWnd, wParam, graphics);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, Msg, wParam, lParam);
}
/*
Parameter : HWND
Return : HMENU
Description : create window menu in dynamic way
*/
HMENU WinMenu(HWND hWnd)
{
HMENU hMenu;
HMENU hMenuPopup;
hMenu = CreateMenu();
hMenuPopup = CreatePopupMenu();
AppendMenu(hMenuPopup, MF_STRING, IDM_FILE_OPEN, "&Open");
AppendMenu(hMenuPopup, MF_STRING, IDM_FILE_SAVE, "&Save");
AppendMenu(hMenuPopup, MF_STRING, IDM_FILE_EXIT, "&Exit");
AppendMenu(hMenu, MF_POPUP,(UINT)hMenuPopup, "&File");
hMenuPopup = CreatePopupMenu();
AppendMenu(hMenuPopup, MF_STRING, IDM_EDIT_COPY, "&Copy");
AppendMenu(hMenuPopup, MF_STRING, IDM_EDIT_CUT, "&Cut");
AppendMenu(hMenu, MF_POPUP,(UINT)hMenuPopup, "&Edit");
hMenuPopup = CreatePopupMenu();
AppendMenu(hMenuPopup, MF_STRING, IDM_VIEW_SOLID, "&Solid");
AppendMenu(hMenuPopup, MF_STRING, IDM_VIEW_WIRE, "&Wireline");
AppendMenu(hMenuPopup, MF_STRING, IDM_VIEW_SHADE, "&Shade");
AppendMenu(hMenu, MF_POPUP,(UINT)hMenuPopup, "&View");
hMenuPopup = CreatePopupMenu();
AppendMenu(hMenuPopup, MF_STRING, IDM_DRAW_LINE, "&Line");
AppendMenu(hMenuPopup, MF_STRING, IDM_DRAW_CIRCLE, "&Circle");
AppendMenu(hMenu, MF_POPUP,(UINT)hMenuPopup, "&Draw");
hMenuPopup = CreatePopupMenu();
AppendMenu(hMenuPopup, MF_STRING, IDM_WINDOW_CLOSE, "&Close");
AppendMenu(hMenuPopup, MF_STRING, IDM_WINDOW_NEXT, "&Next");
AppendMenu(hMenu, MF_POPUP,(UINT)hMenuPopup, "&Window");
hMenuPopup = CreatePopupMenu();
AppendMenu(hMenuPopup, MF_STRING, IDM_HELP_CONTENT, "&Content");
AppendMenu(hMenuPopup, MF_STRING, IDM_HELP_ABOUT, "&About");
AppendMenu(hMenu, MF_POPUP,(UINT)hMenuPopup, "&Help");
SetMenu(hWnd, hMenu);
return hMenu;
} // WinMenu
void TrackMenu(HWND hWnd, POINT point)
{
HMENU hMenu;
HMENU hMenuPopup;
hMenu = CreatePopupMenu();
hMenuPopup = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING|MF_CHECKED, IDM_DRAW_LINE, "&Move");
AppendMenu(hMenu, MF_STRING|MF_GRAYED, IDM_HELP_ABOUT, "&Zoom");
AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
AppendMenu(hMenuPopup, MF_STRING, IDM_VIEW_SOLID, "&Solid");
AppendMenu(hMenuPopup, MF_STRING, IDM_VIEW_WIRE, "&Wireline");
AppendMenu(hMenuPopup, MF_STRING, IDM_VIEW_SHADE, "&Shade");
AppendMenu(hMenu, MF_POPUP,(UINT)hMenuPopup, "&View");
TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, point.x, point.y, 0, hWnd, NULL);
}
WinAPI 读取DXF文件
4星 · 超过85%的资源 需积分: 13 9 浏览量
2009-09-26
23:49:15
上传
评论 1
收藏 798KB RAR 举报
eryar
- 粉丝: 71
- 资源: 12
- 1
- 2
- 3
前往页