GVKun编程网logo

使用C在窗口中显示string输出(在WIN32 API中)(c++输出窗口停留)

10

在本文中,我们将给您介绍关于使用C在窗口中显示string输出的详细内容,并且为您解答在WIN32API中的相关问题,此外,我们还将为您提供关于c–删除窗口背景win32API、c–在Win32API

在本文中,我们将给您介绍关于使用C在窗口中显示string输出的详细内容,并且为您解答在WIN32 API中的相关问题,此外,我们还将为您提供关于c – 删除窗口背景win32API、c – 在Win32 API中绘制格式化文本的最快方法是什么?、cocoaMac是Win32 API或MFC在Windows中的等价物吗?、Cocoa是Mac在Windows中与Win32 API或MFC等效吗?的知识。

本文目录一览:

使用C在窗口中显示string输出(在WIN32 API中)(c++输出窗口停留)

使用C在窗口中显示string输出(在WIN32 API中)(c++输出窗口停留)

我想要一个适当的方式,我可以输出一个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);

c – 删除窗口背景win32API

c – 删除窗口背景win32API

我的同学开始使用带有pascal的Delphi,但我作为一个程序员必须使用win32 API.他们正在改变背景颜色,所以我需要知道这一点,但有一些不同之处.

在delphi中,每个表单看起来都有它自己的实例,并且为一个窗口设置背景颜色只是改变一个值的问题.不是win32的情况,当你更改该值时,它会影响使用该类的每个窗口(更新后的c).

我需要做的是清除/擦除我的窗口背景.我可以用FillRect(..)做到这一点并且它的工作非常好,但我发现WM_ERASEBKGND似乎正在做我需要的东西.他们提到,如果这个消息被处理,我应该返回一个非零,但他们没有告诉如何处理它.

那么FillRect(和similliar)可以让我用我定义的画笔擦除一个窗口而不是默认的类吗?

谢谢

解决方法

只需擦除背景即可处理WM_ERASEBKGND(使用FillRect()就可以了).

通过返回非零值,您只需告诉Windows此消息已被处理,无需进一步操作.没有比这更正式的了.

c – 在Win32 API中绘制格式化文本的最快方法是什么?

c – 在Win32 API中绘制格式化文本的最快方法是什么?

我正在C中实现一个文本编辑器,只需使用vanilla Win32 API,我正在尝试找到实现语法高亮的最佳方法.我知道现在有一些控制,像闪烁,但我正在做这个为了好玩,所以我想自己做大部分的工作.我也希望它快速轻便.

从我迄今为止所学到的东西,看起来像在GDI中绘制文本的最低级别的选项是textout函数.然而,如果我需要继续改变字体颜色,那意味着我需要对textout进行很多的调用,以便使用混合格式绘制一个文本.这是没有效率的吗?当语法突出显示和富文本控件实现时,他们是否可能在幕后使用textout?还有其他方式吗?在GDI中绘制文本的其他方法只是在textout周围的更高级别的包装器吗?

解决方法

DrawText和textout都是Exttextout的包装器,所以Exttextout是低级API.根据我的经验,Exttextout非常快,所以我怀疑你会看到Exttextout本身的任何性能问题.然而,创建/选择字体可能是性能问题的根源,所以如果您在字体之间来回切换,您可以通过缓存和重用字体(HFONT)而不是每次CreateFont / SelectObject / DeleteObject来实现显着的性能提升.基本上,首次在创建新字体后调用SelectObject,Windows将执行字体匹配过程,以找到您请求的逻辑字体的最佳物理字体.这是一个相当复杂的过程,因此您希望最大限度地减少在性能重要的情况下发生的次数.

许多年前,我开发了一个丰富的编辑控件,这本身就是Microsoft Word的迷你版本.我使用Exttextout作为所有文本输出的主要工作.该控件将维护最近使用的字体的字体缓存(默认缓存大小为10个字体).它支持WYSIWYG布局,所以它实际上是使用打印机DC和字体进行所有布局,然后使用屏幕DC和类似的字体渲染屏幕兼容版本,所以有很多额外的工作,这可能不适用于你的情况即使如此,在一天的典型硬件(例如,266 mhz Pentium)上,性能也非常出色.

cocoaMac是Win32 API或MFC在Windows中的等价物吗?

cocoaMac是Win32 API或MFC在Windows中的等价物吗?

在MFC下面的Cocoa下面的Win32 API是否有较低级别的API? 如果有,是否广泛用于Mac OS X或iOS应用程序开发?

用C编写的用Cocoa前端编写的OpenGL游戏我想移植到Windows

cocoa,Windows和线程?

OpenGL获取背景像素信息

cocoa消息循环? (与Windows消息循环)

SysEx不会发送字节“AD”

CoreFoundation是较低级别的C API:

http://developer.apple.com/corefoundation/

基础课程是更高级的目标-C基础课程集合:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/ObjC_classic/_index.html

苹果在这些之间提供了“免费”桥接类型:

http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFDesignConcepts/Articles/tollFreeBridgedTypes.html

对于OSX AppKit(Cocoa)是使用基础类的更高级的UI框架:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/_index.html

对于设备(iOS),在基础类上有UIKit(Cocoa Touch):

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKit_Framework/_index.html

所有这些在OSX和iOS开发中被广泛使用…

Cocoa是Mac在Windows中与Win32 API或MFC等效吗?

Cocoa是Mac在Windows中与Win32 API或MFC等效吗?

Cocoa下面的API是否低于MFC下的Win32 API?如果有,它是否广泛用于Mac OS X或iOS Application develepment?

解决方法

CoreFoundation是较低级别的C API:

http://developer.apple.com/corefoundation/

基础课程是更高的Objective-c基础课程集:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/ObjC_classic/_index.html

Apple提供以下类型的“免费”桥接类型:

http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFDesignConcepts/Articles/tollFreeBridgedTypes.html

对于OSX AppKit(Cocoa)是使用基础类的更高级UI框架:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/_index.html

对于设备(iOS),基础类上有UIKit(Cocoa Touch):

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKit_Framework/_index.html

所有这些都广泛用于OSX和iOS开发……

关于使用C在窗口中显示string输出在WIN32 API中的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于c – 删除窗口背景win32API、c – 在Win32 API中绘制格式化文本的最快方法是什么?、cocoaMac是Win32 API或MFC在Windows中的等价物吗?、Cocoa是Mac在Windows中与Win32 API或MFC等效吗?的相关信息,请在本站寻找。

本文标签: