微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用C在窗口中显示string输出在WIN32 API中

我想要一个适当的方式,我可以输出一个string,并将其显示在创build的窗口上。 我一直使用textout()函数,但是由于它只绘制窗口,一旦窗口最小化并恢复,窗口上显示的数据就消失了。 另外当要显示的数据超过Window的大小时,只显示等于窗口大小的数据,其他数据被截断。 有没有其他的方法输出窗口上的数据?

如何获得Windows解锁事件在C#窗口应用程序?

为Windows服务提供版本号C#

通过共享内存IPC在进程之间共享指针

在Linux上可以实现正确的故障安全stream程共享障碍吗?

GCC不再执行<varargs.h>

您可以在窗口上放置一个Static或Edit控件(标签和文本框)以显示数据。

在WM_CREATE期间调用其中之一:

HWND hWndExample = CreateWindow("STATIC","Text Goes Here",WS_VISIBLE | WS_CHILD | SS_LEFT,10,100,hWnd,NULL,hInstance,NULL);

要么

HWND hWndExample = CreateWindow("EDIT",WS_VISIBLE | WS_CHILD | ES_LEFT,NULL);

如果您使用Edit那么用户也将能够滚动,并复制和粘贴文本。

在这两种情况下,都可以使用SetwindowText()更新文本:

SetwindowText(hWndExample,TEXT("Control string"));

( Daboyzuk的Curtosy )

textout应该工作得很好,如果在WM_PAINT中完成,每次都应该绘制。 (包括最小化和调整大小)

LRESULT CALLBACK MyWndProc(HWND hWnd,UINT message,WParaM wParam,LParaM lParam) { switch(message) { case WM_PAINT: PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd,&ps); textout(hdc,TEXT("Text Out String"),strlen("Text Out String")); EndPaint(hWnd,&ps); ReleaseDC(hWnd,hdc); break; default: return DefWindowProc(hWnd,message,wParam,lParam); } return 0; }

您可能也对DrawText感兴趣

LRESULT CALLBACK MyWndProc(HWND hWnd,&ps); RECT rec; // SetRect(rect,x,y,width,height) SetRect(&rec,100); // DrawText(HDC,text,text length,drawing area,parameters "DT_XXX") DrawText(hdc,strlen("Text Out String"),&rec,DT_TOP|DT_LEFT); EndPaint(hWnd,lParam); } return 0; }

这将在给定的矩形绘制文本到你的窗口,

绘制文本将Word包装在给定的矩形内。

如果你想把整个窗口作为绘制区域,你可以使用GetClientRect(hWnd,&rec); 而不是SetRect(&rec,100);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐