#undef UNICODE //要加,否则outtextxy报错
#include <stdio.h>
#include <graphics.h>
int main() {
ABC:;
MOUSEMSG m;
initgraph(600, 600); //设置窗口的长宽(沿x轴长度,沿y轴长度)
setbkcolor(GREEN); //设置窗口背景为绿色
cleardevice(); //刷新一次 略等于那个system(cls),注意一定要加,否则背景色设置了但无法更新
setfillcolor(LIGHTBLUE); //设置窗口填充色为蓝色,即下面矩形颜色
//距离窗口 左边30 上边300 左边100 高330 围成的一个矩形
fillrectangle(30, 300, 100, 330);
fillrectangle(110, 300, 180, 330);
fillrectangle(190, 300, 260, 330);
settextstyle(17, 0, "宋体");//设置文字格式(文字大小,文字垂直压缩,字体)
setbkmode(TRANSPARENT);//去掉文字背景,否则矩形中文字也会有绿色阴影
//距离窗口 左边30 上边310
outtextxy(40, 310, "按钮1");
outtextxy(120, 310, "按钮2");
outtextxy(200, 310, "刷新");
while (1) { //注意一定要while循环,这样才能不停获取鼠标的位置,从而更新对应的操作
m = GetMouseMsg(); //获取鼠标对象
if (m.x >= 30 && m.x <= 100 && m.y >= 300 && m.y <= 330) {
setlinecolor(RED);
//绘制一个矩形框,比原矩形大5
rectangle(25, 295, 105, 335);
settextstyle(50, 0, "宋体");//设置文字格式(文字大小,文字垂直压缩,字体)
settextcolor(BLACK); //设置字体颜色为黑色
if (m.uMsg == WM_LBUTTONDOWN) {
outtextxy(200, 200, "阿伟是你爹");
}
}
else if (m.x >= 110 && m.x <= 180 && m.y >= 300 && m.y <= 330) {
setlinecolor(RED);
//绘制一个矩形框,比原矩形大5
rectangle(105, 295, 185, 335);
settextstyle(50, 0, "宋体");//设置文字格式(文字大小,文字垂直压缩,字体)
settextcolor(BLACK); //设置字体颜色为黑色
if (m.uMsg == WM_LBUTTONDOWN) {
outtextxy(200, 200, "猪头");
}
}
else if (m.x >= 190 && m.x <= 260 && m.y >= 300 && m.y <= 330) {
setlinecolor(RED);
//绘制一个矩形框,比原矩形大5
rectangle(185, 295, 265, 335);
settextstyle(50, 0, "宋体");//设置文字格式(文字大小,文字垂直压缩,字体)
settextcolor(BLACK); //设置字体颜色为黑色
if (m.uMsg == WM_LBUTTONDOWN) {
cleardevice();
goto ABC;
}
}
else {
setlinecolor(WHITE); //当鼠标焦点不在按钮上时,重新设置边框为白色,要结合下面的才能成功设置
rectangle(25, 295, 105, 335); //按钮1边框
rectangle(105, 295, 185, 335); //按钮2边框
rectangle(185, 295, 265, 335); //刷新边框
}
}
return 0;
}
效果: