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

程序代码:
#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
kingsroot
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:284
专家分:1159
注 册:2010-3-28
收藏
得分:0 
牛!你还可以用SDK写程序!
2010-11-05 17:14
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
有些人总以为用 GDI 比用 Tc的 graphics 要高尚, 实际上里子是一样的。/

我就是真命天子,顺我者生,逆我者死!
2010-11-05 17:48
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
不错不错。 不过ShowWindow完为什么不写UpdateWindow?
过程里再加上WM_PAINT处理就行了。
被其他窗口遮挡一下的话 ,没重绘就空了

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2011-01-25 16:41
瓦药墙
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:218
专家分:556
注 册:2009-9-16
收藏
得分:0 
回复 5楼 你们都要疼我哦
那个程序着实存在很多问题,因为每次发生重绘的时候并没有保存之前的图形,所以就像你说的那样留空了…那时候写这个程序还并不知道怎么解决这个问题,不过若现在要我重写的话,我会用上内存dc缓冲…
现在来看这个帖子,还真有点兴奋,因为俺发现比以前进步啦,啊哈哈哈哈~飘过
2011-01-26 03:10
hulipingo
Rank: 1
等 级:新手上路
帖 子:27
专家分:1
注 册:2010-12-13
收藏
得分:0 
感觉蛮神奇的!
2011-03-05 01:08
观弈寒儒
Rank: 7Rank: 7Rank: 7
来 自:自 来
等 级:黑侠
帖 子:359
专家分:545
注 册:2011-1-9
收藏
得分:0 
回复 4楼 BlueGuy
貌似你也说过只要hello world运行起来了,其他的都很简单了。。。。
境界真高啊。。。。。
不错,你目前应该懂hello world了,一切神马,对你来说,都是浮云了。。。。
不像我们。。。

事件记录,值得关注! http://bbs.bccn.net/z_court.php?fid=5
2011-03-05 19:24
蕙雨星
Rank: 2
等 级:论坛游民
帖 子:25
专家分:24
注 册:2011-2-23
收藏
得分:0 
怎么我就运行不行呢
2011-03-07 10:23
小小菜头
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2011-4-7
收藏
得分:0 
为什么这么多wc啊,是不是版主编程时想去厕所了?
2011-04-07 10:38
快速回复:鼠标绘图
数据加载中...
 
   



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

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