用MFC写的程序输入汉字乱码,而且按退格键还有竖线残留

用MFC写的程序输入汉字乱码,而且按退格键还有竖线残留,第1张

你需要计算被删除字符所在的区域(CRect),并使用InvalidateRect函数刷新这个区域来清除区域;

根据你当前代码,并不能保证在一行的中间删除和中间插入可以正常(这需要更多计算和处理),另外,也不能保证窗口最小化(或被遮盖)后重新显示可以正常(尤其多行)。

其实在视图中处理文本,应该使用CEditView更方便,使用标准CView基类,太多事情需要自己处理了,不划算。

void

c**view::oninitialupdate()

{

cformview::oninitialupdate()

/*

加入你要的初始化代码*/

getparentframe()->recalclayout()

resizeparenttofit()

}

在cformview中,通过跟踪可发现程序不会去调用cdialog::oninitdialog(),在cformview::create(**)中有如下语句createdlg(m_lpsztemplatename,

pparentwnd),既对话框通过非模态创建,创建期间会发送wm_create消息,但初始化代码不能写在oncreate函数里面,因为此时对话框还没创建完毕,在所有的创建工作结束后,既cformview::create(**)执行完毕后系统会调用oninitialupdate(),这时候就可以加入你的初始化代码了

// 打字母游戏

#include <graphics.h>

#include <conio.h>

#include <time.h>

// 欢迎界面

void welcome()

{

// 输出屏幕提示

cleardevice()

setcolor(YELLOW)

setfont(64, 0, "黑体")

outtextxy(160, 50, "打字母游戏")

setcolor(WHITE)

setfont(16, 0, "宋体")

outtextxy(100, 200, "就是很传统的那个掉字母然后按相应键就消失的游戏")

outtextxy(100, 240, "只是做了一个简单的实现")

outtextxy(100, 280, "功能并不很完善,比如生命数、分数等都没有写")

outtextxy(100, 320, "感兴趣的自己加进去吧")

// 实现闪烁的“按任意键继续”

int c=255

while(!kbhit())

{

setcolor(RGB(c, 0, 0))

outtextxy(280, 400, "按任意键继续")

c -= 8

if (c <0) c = 255

Sleep(20)

}

getch()

cleardevice()

}

// 退出界面

void goodbye()

{

cleardevice()

setcolor(YELLOW)

setfont(48, 0, "黑体")

outtextxy(104, 180, "多写程序 不老青春")

getch()

}

// 主函数

void main()

{

initgraph(640, 480) // 初始化屏幕为 640x480

welcome()// 显示欢迎界面

srand(time(NULL)) // 设置随机种子

setfont(16, 0, "Arial")// 设置字母的字体和大小

setfillstyle(BLACK) // 设置清除字母的填充区域颜色

char target // 目标字母

char key// 用户的按键

int x, y// 字母的位置

// 主循环

while(true)

{

target = 65 + rand() % 26 // 产生任意大写字母

x = rand() % 620 // 产生任意下落位置

for (y=0y<460y++)

{

setcolor(WHITE) // 设置字母的颜色

outtextxy(x, y, target)// 显示字母

if(kbhit())

{

key = getch() // 获取用户按键

if((key == target) || (key == target + 32))

{

// 按键正确,“击落”字母(画黑色方块擦除)

bar(x, y, x + 16, y + 16)

break // 跳出循环,进行下一个字母

}

else if (key == 27)

{

goto EXIT // 如果按 ESC,退出游戏主循环

}

}

// 延时,并清除字母

Sleep(10)

bar(x, y, x + 16, y + 16)

}

}

EXIT:

// 退出部分

goodbye()

// 关闭图形界面

closegraph()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11643953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存