| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1087 人关注过本帖
标题:鼠标绘图
取消只看楼主 加入收藏
瓦药墙
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:218
专家分:556
注 册:2009-9-16
结帖率:100%
收藏
 问题点数:0 回复次数:2 
鼠标绘图

程序代码:
#include <windows.h>

#define ID_TIME                1

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine,
                    int iCmdShow)
{
    TCHAR                    Title[] = "按下鼠标左键进行绘图,按下右键清屏";
    TCHAR                    ClsName[] = "szCls";
    HWND                    hwnd;
    WNDCLASS                wc;
    MSG                        msg;

    wc.cbClsExtra            =    0;
    wc.cbWndExtra            =    0;
    wc.hbrBackground        =    (HBRUSH) GetStockObject (BLACK_BRUSH);
    wc.hCursor                =    LoadCursor (hInstance, IDC_ARROW);
    wc.hIcon                =    LoadIcon (hInstance, IDI_APPLICATION);
    wc.hInstance            =    hInstance;
    wc.lpfnWndProc            =    WndProc;
    wc.lpszClassName        =    ClsName;
    wc.lpszMenuName            =    NULL;
    wc.style                =    CS_HREDRAW | CS_VREDRAW;

    if ( !RegisterClass (&wc) )
    {
        MessageBox (NULL, TEXT ("RegisterError"), TEXT ("ERROR"), MB_OK | MB_ICONINFORMATION);
        return -1;
    }
    hwnd = CreateWindow (
        ClsName, Title,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, NULL, hInstance, NULL);
    ShowWindow (hwnd, SW_SHOW);

    while ( GetMessage (&msg, NULL, 0, 0) > 0 )
    {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
    return msg.wParam;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC                    hdc;
    static int            cur_x, cur_y;
    switch (message)
    {
    case WM_CREATE:
        {
        }
        break;
    case WM_MOUSEMOVE:
        {
            cur_x = (int) LOWORD(lParam);
            cur_y = (int) HIWORD(lParam);
        }
        break;
    case WM_LBUTTONDOWN:
        {
            SetTimer (hwnd, ID_TIME, 1, NULL);
        }
        break;
    case WM_LBUTTONUP:
        {
            KillTimer (hwnd, ID_TIME);
        }
        break;
    case WM_TIMER:
        {
            hdc = GetDC (hwnd);
           
            SetPixel (hdc, cur_x, cur_y, RGB (255, 0, 0));

            ReleaseDC (hwnd, hdc);
        }
        break;
    case WM_RBUTTONDOWN:
        {
            InvalidateRect (hwnd, NULL, TRUE);
        }
        break;
    case WM_CLOSE:
        {
            PostQuitMessage (0);
        }
        break;
    default:
        return DefWindowProc (hwnd, message, wParam, lParam);
    }
    return 0;
}


鼠绘.rar (12.15 KB)
搜索更多相关主题的帖子: 绘图 鼠标 
2010-11-04 19:22
瓦药墙
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:218
专家分:556
注 册:2009-9-16
收藏
得分:0 
很菜鸟,贴出来记录下自己学习的脚步
2010-11-04 19:32
瓦药墙
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:218
专家分:556
注 册:2009-9-16
收藏
得分:0 
回复 5楼 你们都要疼我哦
那个程序着实存在很多问题,因为每次发生重绘的时候并没有保存之前的图形,所以就像你说的那样留空了…那时候写这个程序还并不知道怎么解决这个问题,不过若现在要我重写的话,我会用上内存dc缓冲…
现在来看这个帖子,还真有点兴奋,因为俺发现比以前进步啦,啊哈哈哈哈~飘过
2011-01-26 03:10
快速回复:鼠标绘图
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013968 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved