| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3209 人关注过本帖
标题:抛体运动
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
DrawTextW(hDC, msg, ARRAYSIZE(msg), &rect, DT_BOTTOM | DT_SINGLELINE);
这样写了后 在修改下参数 还是无法显示字符串
图片附件: 游客没有浏览图片的权限,请 登录注册

梅尚程荀
马谭杨奚







                                                       
2012-04-18 20:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
自己看帮助嘛

授人以渔,不授人以鱼。
2012-04-18 20:19
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
我原以为是输出文字那段没有重新获取句柄 在DrawGraph();后无法使用不提示刷新的窗口,就把HANDLE hConsole(GetStdHandle(STD_OUTPUT_HANDLE));   // 控制台句柄 提上去了
又以为 RECT rect = { Border.left, Border.bottom + 20, Border.right, Border.bottom + 50 };
的定义超出了原窗口的范围改成了RECT rect = { Border.left + 10, Border.top + 10, Border.left + 100, Border.top + 30 };
然后用两个输出文字函数 试了下 还是没效果 光标也不动 说明什么呢 难道需要PAINTSTRUCT ? InvalidateRect()?
程序代码:
HANDLE hConsole(GetStdHandle(STD_OUTPUT_HANDLE));   // 控制台句柄
    const WCHAR msg[] = L"按<Enter>键结束程序";
    RECT rect = { Border.left + 10, Border.top + 10, Border.left + 100, Border.top + 30 };
    SetTextColor(hDC, RGB(255,255,255));
    SetBkColor(hDC, TRANSPARENT);
    TextOut(hDC, Border.left + 10, Border.top + 10,msg, lstrlen(msg));
   // DrawTextW(hDC, msg, ARRAYSIZE(msg), &rect, DT_BOTTOM | DT_SINGLELINE);


梅尚程荀
马谭杨奚







                                                       
2012-04-18 20:54
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
是不是原程序没有使用消息机制 所以窗口无法重绘,导致画出抛物线后无法输出文字?

梅尚程荀
马谭杨奚







                                                       
2012-04-18 21:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我没有问题啊

程序代码:
void Wait(void)
{
    const WCHAR msg[] = L"按<Enter>键结束程序";
    RECT rect = { Border.left, Border.bottom + 20, Border.right, Border.bottom + 50 };
    SetTextColor(hDC, RGB(255,255,255));
    SetBkColor(hDC, TRANSPARENT);
    DrawTextW(hDC, msg, ARRAYSIZE(msg), &rect, DT_SINGLELINE | DT_BOTTOM);

    HANDLE hConsole(GetStdHandle(STD_OUTPUT_HANDLE));   // 控制台句柄
    CONSOLE_CURSOR_INFO CursorInfo;
    GetConsoleCursorInfo(hConsole, &CursorInfo);
    CursorInfo.bVisible = false;
    SetConsoleCursorInfo(hConsole, &CursorInfo);
    while (_getwch() != K_ENTER)
    {
        ;
    }
    CursorInfo.bVisible = true;
    SetConsoleCursorInfo(hConsole, &CursorInfo);
}

图片附件: 游客没有浏览图片的权限,请 登录注册

没有使用消息机制的。你看看是不是超界输出到窗口下面去了,把rect的底边往上抬一点。

[ 本帖最后由 TonyDeng 于 2012-4-18 21:09 编辑 ]

授人以渔,不授人以鱼。
2012-04-18 21:08
qidian123
Rank: 2
等 级:论坛游民
帖 子:19
专家分:34
注 册:2012-4-18
收藏
得分:0 
有点意思,不错啊

www.jiajunyuanlin.com  www.futegz.comjtiao.com
2012-04-18 21:12
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 35楼 TonyDeng
复制了你的代码 还是不行 就有个光标闪啊闪。难道是我的编译器问题?

梅尚程荀
马谭杨奚







                                                       
2012-04-18 21:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你修改过最上面Border的尺寸?rect的top从Border的bottom下面开始算,你看整个底部到哪去了。DT_BOTTOM是底对齐的,底超界,文字也超界。

授人以渔,不授人以鱼。
2012-04-18 21:14
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
没有修改Border 试着去改了下修改left  top  能改变窗体的位置 再修改 right bottom结果无法改变窗体的大小只是位置在移动。

梅尚程荀
马谭杨奚







                                                       
2012-04-18 21:33
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
为什么rect的top要从从Border的bottom下面开始算呢? Border.bottom + 20不是超出Border的范围了吗,不解。

梅尚程荀
马谭杨奚







                                                       
2012-04-18 21:36
快速回复:抛体运动
数据加载中...
 
   



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

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