如何实现直接在屏幕上输出文字

sksgod 2010-02-21 06:42:28
注意啊,不是用mfc程序输出在程序上面,而是调用后直接显示在屏幕上,可以自定义文字大小,颜色,位置等,程序可以是一个mfc程序,也可以是一个控制台程序,调用后就直接在屏幕上画上了一段文字,过N秒后消失
...全文
1413 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dadi728990217 2010-08-06
  • 打赏
  • 举报
回复
void CScreenFontView::OnScreenfont()
{
CDlg dlg;
dlg.DoModal();
CString str;
int x,y;
UpdateData();
str=dlg.m_edit;
x=dlg.m_x;
y=dlg.m_y;

CWindowDC dc(NULL);
CFont myFont;
myFont.CreateFont(
160,
40,
0,
0,
FW_NORMAL,
true,
false,
0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|FF_SWISS,
"Arial");
CFont *oldFont=dc.SelectObject(&myFont);
dc.SetTextColor(RGB(255,0,0));
dc.SetBkMode(TRANSPARENT);
dc.TextOut(x,y,str);
dc.SelectObject(oldFont);
UpdateData(FALSE);

}
CDlg 是与新建的一个对话框相关联的类,里面m_edit,m_x,m_y,是与对话框内三个编辑框控件相关联的变量,onscreenfont 是一个菜单的映射函数。这个可以实现点击菜单,弹出对话框,输入要显示的文字和位置,不过屏幕刷新一下文字就会消失
sksgod 2010-02-22
  • 打赏
  • 举报
回复
3楼这种答案太聪明了,复制下来就直接用了
yhp1888 2010-02-21
  • 打赏
  • 举报
回复
引用楼主 sksgod 的回复:
注意啊,不是用mfc程序输出在程序上面,而是调用后直接显示在屏幕上,可以自定义文字大小,颜色,位置等,程序可以是一个mfc程序,也可以是一个控制台程序,调用后就直接在屏幕上画上了一段文字,过N秒后消失


才认真看,楼主想写音乐播放器软件呀,用透明窗口实现更好
liyelun 2010-02-21
  • 打赏
  • 举报
回复
引用 3 楼 wan8520 的回复:
void CMainFrame::OnScreenfont()
{
// TODO: Add your command handler code here
// CDC * pDC = CWnd::GetDesktopWindow()->GetDC();
// pDC ->TextOut(0 ,0, "font");
CWindowDC dc(NULL);

CFont myFont;
myFont.CreateFont (
  120,                        // nHeight 字体高度
  40,                        // nWidth  字体宽度
  0,                        // nEscapement 显示角度
  0,                        // nOrientation 字体角度
  FW_NORMAL,                // nWeight 字体磅值
  FALSE,                    // bItalic 是否倾斜
  FALSE,                    // bUnderline 是否斜体
  0,                        // cStrikeOut 是否加删除线
  ANSI_CHARSET,              // nCharSet 指定字符集
  OUT_DEFAULT_PRECIS,        // nOutPrecision 指定输出精度
  CLIP_DEFAULT_PRECIS,      // nClipPrecision 指定剪切精度
  DEFAULT_QUALITY,          // nQuality 指定输出质量
  DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily 字符族
  "Arial");                  // 指定字体的字样名

CFont* oldFont = dc.SelectObject ( &myFont);
dc.SetTextColor (RGB (255,0,0));

dc.SetBkMode ( TRANSPARENT);    //背景模式为透明

    dc.TextOut(200,200,"屏幕上显示文字");

dc.SelectObject ( oldFont);
}

不知道OnScreenfont()是什么函数?是自定义的函数?还是通过添加消息自动生成的啊?
学习下
zfm1988 2010-02-21
  • 打赏
  • 举报
回复
引用 3 楼 wan8520 的回复:
void CMainFrame::OnScreenfont()
{
// TODO: Add your command handler code here
// CDC * pDC = CWnd::GetDesktopWindow()->GetDC();
// pDC ->TextOut(0 ,0, "font");
CWindowDC dc(NULL);

CFont myFont;
myFont.CreateFont (
  120,                        // nHeight 字体高度
  40,                        // nWidth  字体宽度
  0,                        // nEscapement 显示角度
  0,                        // nOrientation 字体角度
  FW_NORMAL,                // nWeight 字体磅值
  FALSE,                    // bItalic 是否倾斜
  FALSE,                    // bUnderline 是否斜体
  0,                        // cStrikeOut 是否加删除线
  ANSI_CHARSET,              // nCharSet 指定字符集
  OUT_DEFAULT_PRECIS,        // nOutPrecision 指定输出精度
  CLIP_DEFAULT_PRECIS,      // nClipPrecision 指定剪切精度
  DEFAULT_QUALITY,          // nQuality 指定输出质量
  DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily 字符族
  "Arial");                  // 指定字体的字样名

CFont* oldFont = dc.SelectObject ( &myFont);
dc.SetTextColor (RGB (255,0,0));

dc.SetBkMode ( TRANSPARENT);    //背景模式为透明

    dc.TextOut(200,200,"屏幕上显示文字");

dc.SelectObject ( oldFont);
}

这个好像不是吧!楼主
msdn结束The GetDesktopWindow function returns a handle to the desktop window. The desktop window covers the entire screen. The desktop window is the area on top of which other windows are painted.
zfm1988 2010-02-21
  • 打赏
  • 举报
回复
其实CWindowDC,可以获取窗口设备环境,然后调用函数就可以输出了!不知道是不是你要的!
liyelun 2010-02-21
  • 打赏
  • 举报
回复
引用 7 楼 wizardk 的回复:
你所谓的显示文字,也是要有载体的,WINDOWS上你最好依靠WINDOW去显示,窗体透明而已,除非你直接读写显存,有些游戏有这种情况。

这个也顶哈
liyelun 2010-02-21
  • 打赏
  • 举报
回复
引用 6 楼 magic7004 的回复:
其实做一个背景透明的窗口比较简单

顶!
WizardK 2010-02-21
  • 打赏
  • 举报
回复
你所谓的显示文字,也是要有载体的,WINDOWS上你最好依靠WINDOW去显示,窗体透明而已,除非你直接读写显存,有些游戏有这种情况。
magic7004 2010-02-21
  • 打赏
  • 举报
回复
其实做一个背景透明的窗口比较简单
yxwsbobo 2010-02-21
  • 打赏
  • 举报
回复
需要不少内容 你不会
0="0" 2010-02-21
  • 打赏
  • 举报
回复
这是我前不久看到的,不知道是不是你要的.
0="0" 2010-02-21
  • 打赏
  • 举报
回复
void CMainFrame::OnScreenfont()
{
// TODO: Add your command handler code here
// CDC * pDC = CWnd::GetDesktopWindow()->GetDC();
// pDC ->TextOut(0 ,0, "font");
CWindowDC dc(NULL);

CFont myFont;
myFont.CreateFont (
120, // nHeight 字体高度
40, // nWidth 字体宽度
0, // nEscapement 显示角度
0, // nOrientation 字体角度
FW_NORMAL, // nWeight 字体磅值
FALSE, // bItalic 是否倾斜
FALSE, // bUnderline 是否斜体
0, // cStrikeOut 是否加删除线
ANSI_CHARSET, // nCharSet 指定字符集
OUT_DEFAULT_PRECIS, // nOutPrecision 指定输出精度
CLIP_DEFAULT_PRECIS, // nClipPrecision 指定剪切精度
DEFAULT_QUALITY, // nQuality 指定输出质量
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily 字符族
"Arial"); // 指定字体的字样名

CFont* oldFont = dc.SelectObject ( &myFont);
dc.SetTextColor (RGB (255,0,0));

dc.SetBkMode ( TRANSPARENT); //背景模式为透明

dc.TextOut(200,200,"屏幕上显示文字");

dc.SelectObject ( oldFont);
}
yhp1888 2010-02-21
  • 打赏
  • 举报
回复
TextOut(x,y,...)
兔子想吃人 2010-02-21
  • 打赏
  • 举报
回复
帮顶 顺便提示
HWND hwnd;
hwnd=GetDesktopWindow();

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧