我想要一个适当的方式,我可以输出一个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] 举报,一经查实,本站将立刻删除。