要求:
{
1。当键盘上输入任一字符串时(如:abcde), 在窗口中,从左至右显示该字符串2。当键入一个Enter 键时能另起一行显示后续键入的字符串。
提示:每个字符大致高14宽8(可根据实际效果作更改)。
}
我是用vc++6.0
我建立工程是用:Win32 Application---An empty project----然后写源代码文件。窗口是用windouw的API函数建立的,就是:注册窗口类--创建窗口--显示窗口--消息循环,这些都没问题,就是最后的消息处理有问题。原来的字符处理是这样的:case WM_CHAR:
hdc=GetDC(hwnd);
TextOut(hdc,1,1," ",3);
sprintf(str,"%c",(char)wParam);
TextOut(hdc,1,1,str,strlen(str));
ReleaseDC(hwnd,hdc);
break;但是这样只能显示1个字符,第二个字符会覆盖到第一个字符上去,也没有处理回车的功能。
我应该怎么改?其中的str在一开始是这样定义的:char str[255]=""
此外,不过我还有点不明白,后面的""是干吗的。我想过把一个个字符写到数组里去,可是具体怎么弄呢?我想要源代码。
能帮我写一下关于消息处理这里的源代码吗?(另:能给我个c++教程的连接吗?不是vc++的)
{
1。当键盘上输入任一字符串时(如:abcde), 在窗口中,从左至右显示该字符串2。当键入一个Enter 键时能另起一行显示后续键入的字符串。
提示:每个字符大致高14宽8(可根据实际效果作更改)。
}
我是用vc++6.0
我建立工程是用:Win32 Application---An empty project----然后写源代码文件。窗口是用windouw的API函数建立的,就是:注册窗口类--创建窗口--显示窗口--消息循环,这些都没问题,就是最后的消息处理有问题。原来的字符处理是这样的:case WM_CHAR:
hdc=GetDC(hwnd);
TextOut(hdc,1,1," ",3);
sprintf(str,"%c",(char)wParam);
TextOut(hdc,1,1,str,strlen(str));
ReleaseDC(hwnd,hdc);
break;但是这样只能显示1个字符,第二个字符会覆盖到第一个字符上去,也没有处理回车的功能。
我应该怎么改?其中的str在一开始是这样定义的:char str[255]=""
此外,不过我还有点不明白,后面的""是干吗的。我想过把一个个字符写到数组里去,可是具体怎么弄呢?我想要源代码。
能帮我写一下关于消息处理这里的源代码吗?(另:能给我个c++教程的连接吗?不是vc++的)
解决方案 »
- 在vc环镜中,如何关闭没有关闭按钮的窗口呢?
- CFormView继承类的构造函数是protected类型的,那么我该如何构造一个对象呢?
- 怎样提高在对话框上绘制背景图的效率??都有一些什么方法呢??谢谢!!
- 小问题,帮忙解决
- 为什么我找到的是地址栏的句柄?
- 请教,Explorer是不是被某个进程保护着?????
- 大家好!用USB是不是一定要自己开发驱动?有没有什么封装好的类用。高人应该做一个!谢谢大家!
- 工具栏的问题
- 【提问】可以做一个COM组件嵌入在EXCEL里吗?
- 讨论:关于链接时的Precomplied Header的问题?
- 一个简单的问题,如何生成界面。。。。。
- 急???????????????
switch
case WM_CHAR:
i++; //定以为整形变量
hdc=GetDC(hwnd);
TextOut(hdc,i*9,1," ",3);
sprintf(str,"%c",(char)wParam);
TextOut(hdc,1,1,str,strlen(str));
ReleaseDC(hwnd,hdc);
break;
其中的str在一开始是这样定义的:char str[255]=""
此外,不过我还有点不明白,后面的""是干吗的。把str初始化为空!
case WM_CHAR:
if(wParam!=13)
{
TEXTMETRIC tm;
int nHeight,nWeight;
hdc=GetDC(hwnd); GetTextMetrics(hdc,&tm);
nHeight=tm.tmHeight+tm.ExternalLeading;
nWeight=tm.tmWeight; sprintf(str,"%c",(char)wParam); TextOut(hdc,m_nXPosition*nWeight,nHeight*m_nYPostion,str,
strlen(str));
m_nXPostion++; ReleaseDC(hwnd,hdc);
}
else
{
m_nYPosition++;
m_nXPostion=0;
}