搜索
查看: 8076|回复: 22
打印 上一主题 下一主题

[原创] 画板C程序[鼠标控制]

[复制链接]
跳转到指定楼层
楼主
发表于 2012-8-18 22:14:33 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
[ 本帖最后由 virfyf 于 2012-11-25 12:57 编辑 ]\n\n

新版本http://www.ahalei.com/thread-369-1-1.html

是的,你没有看错,就是用鼠标操控.

操作说明:
左键切换开始画/停止画
右键切换画笔/橡皮擦
将鼠标移到左上方字符上切换画笔

附编译好的可执行文件下载

C语言代码如下(啊哈C可编译):
[mw_shl_code=c,true]#include <windows.h>
#include <string.h>
#define LEFT_KEY 1
#define RIGHT_KEY 2
#define bool short
#define true 1
#define false 0
int main()
{
        HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
        HANDLE hIn=GetStdHandle(STD_INPUT_HANDLE);
        INPUT_RECORD mouseRec;
        DWORD res,task;
        CONSOLE_CURSOR_INFO CCI;
        char title[]="控制台画板 Ver 0.21 Alpha";
        char tools[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,30,31,36,0};
        bool enable=false,eraser=false;
        short mode=1,toolsNum=strlen(tools);
        COORD modePos={0,0},enablePos={36,0},titlePos={80-strlen(title),0},foo;
        CCI.bVisible=true;
        CCI.dwSize=100;
        SetConsoleCursorInfo(hOut,&CCI);
        SetConsoleCursorPosition(hOut,modePos);
        WriteConsoleOutputCharacter(hOut,tools,toolsNum,modePos,&task);
        WriteConsoleOutputCharacter(hOut,title,strlen(title),titlePos,&task);
        
        while(true)
        {
                WriteConsoleOutputCharacter(hOut,(enable?"Enable   ":"Disenable"),9,enablePos,&task);
                ReadConsoleInput(hIn, &mouseRec, 2, &res);
                if(mouseRec.Event.MouseEvent.dwMousePosition.Y==0)
                {
                        if(mouseRec.Event.MouseEvent.dwMousePosition.X<=toolsNum)
                        {
                                mode=mouseRec.Event.MouseEvent.dwMousePosition.X;
                                foo.X=mode;
                                foo.Y=0;
                                SetConsoleCursorPosition(hOut,foo);
                        }
                        continue;
                }
                if(mouseRec.Event.MouseEvent.dwEventFlags==0)
                         switch(mouseRec.Event.MouseEvent.dwButtonState)
                         {
                                case LEFT_KEY:
                                         enable=!enable;break;
                                 case RIGHT_KEY:
                                        eraser=!eraser;
                        }
                 if(enable)
                         WriteConsoleOutputCharacter(hOut,(eraser?" ":&tools[mode]),1,mouseRec.Event.MouseEvent.dwMousePosition,&task);
        }
}[/mw_shl_code]
欢迎大家把自己画的贴上来.







s.JPG (47.67 KB, 下载次数: 51)

s.JPG

控制台画板.zip

140.46 KB, 下载次数: 177

32位的程序

评分

参与人数 1啊哈币 +5 收起 理由
admin + 5 很给力!

查看全部评分

23#
发表于 2013-7-22 21:44:38 | 只看该作者
{:soso_e124:}
22#
发表于 2013-2-9 15:03:28 | 只看该作者
试了试 有意思 厉害
21#
发表于 2013-1-31 16:25:48 | 只看该作者
画完了,没办法清除啊,还想再画啊,但是要从新关掉再开了
20#
发表于 2012-11-21 17:29:31 | 只看该作者
看不懂啊,太深奥了
19#
发表于 2012-10-26 11:06:42 | 只看该作者
{:soso__8447121693616695191_4:}好厉害!
18#
发表于 2012-9-25 23:54:36 | 只看该作者
这个程序值得研究,可惜正在学习当中。。。。很多地方还是看不动。
17#
发表于 2012-9-10 16:06:40 | 只看该作者
16#
发表于 2012-8-27 00:00:34 | 只看该作者
厉害!
15#
发表于 2012-8-20 15:58:11 | 只看该作者
NBNB,小人跪下
14#
发表于 2012-8-19 11:31:59 | 只看该作者
admin 发表于 2012-8-19 11:26
不错不错

呃 ,aha-c。com                     
13#
发表于 2012-8-19 11:26:58 | 只看该作者
不错不错{:soso_e100:}


12#
发表于 2012-8-19 11:15:12 | 只看该作者
virfyf 发表于 2012-8-19 11:10
http://msdn.microsoft.com/en-us/library/ms682073(VS.85).aspx
不过是英文的.
也可以自己Google

那windows程序设计这本书可以吗
11#
 楼主| 发表于 2012-8-19 11:10:48 | 只看该作者
=student= 发表于 2012-8-19 11:02
过了,那windows.h有哪些函数,哪些功能

http://msdn.microsoft.com/en-us/library/ms682073(VS.85).aspx
不过是英文的.
也可以自己Google
10#
发表于 2012-8-19 11:02:39 | 只看该作者
virfyf 发表于 2012-8-19 10:58
编译过了吗

过了,那windows.h有哪些函数,哪些功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表