请问在winform程序中如何嵌入自己的循环代码?

sftk 2007-09-15 03:23:35
比如我需要每一帧都调用自己写的Render和Update函数,以前用win32程序时可以直接写在它的while循环里,但现在winform程序把这些都封装起来了,又应该写在哪里呢?
...全文
323 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sftk 2007-09-17
  • 打赏
  • 举报
回复
恩,这是个办法,不过在WndProc里处理多了整个窗口就变得反应迟钝,看来最佳的方案还得用多线程。

结贴
真相重于对错 2007-09-17
  • 打赏
  • 举报
回复
Control.WndProc 方法 [C#]请参见
Control 类 | Control 成员 | System.Windows.Forms 命名空间 | PreProcessMessage | DefWndProc | Control 成员(Visual J# 语法) | C++ 托管扩展编程
要求
平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列

.NET Framework 安全性:

SecurityPermission,它允许继承类调用非托管代码。关联枚举:SecurityPermissionFlag.UnmanagedCode
SecurityPermission,它允许直接调用方调用非托管代码。关联的枚举:SecurityPermissionFlag.UnmanagedCode
语言
C#

C++

JScript

Visual Basic

全部显示
处理 Windows 消息。

[Visual Basic]
Protected Overridable Sub WndProc( _
ByRef m As Message _
)

[C#]
protected virtual void WndProc(
ref Message m
);

[C++]
protected: virtual void WndProc(
Message* m
);

[JScript]
protected function WndProc(
m : Message
);

参数
m
要处理的 Windows Message。
备注
在通过 PreProcessMessage 方法筛选之后,所有消息都发送到 WndProc 方法。

WndProc 方法与 Windows WindowProc 函数完全对应。有关处理 Windows 消息的更多信息,请参见 MSDN Library 中 Windows Platform SDK 参考中的 WindowProc 函数文档。

对继承者的说明: 进行继承的控件应调用基类的 WndProc 方法以处理它们不处理的任何消息。

真相重于对错 2007-09-17
  • 打赏
  • 举报
回复
Form.WndProc 方法 [C#]请参见
Form 类 | Form 成员 | System.Windows.Forms 命名空间 | Form 成员(Visual J# 语法) | C++ 托管扩展编程
要求
平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列
语言
C#

C++

JScript

Visual Basic

全部显示
该成员重写 Control.WndProc。

[Visual Basic]
Overrides Protected Sub WndProc( _
ByRef m As Message _
)

[C#]
protected override void WndProc(
ref Message m
);
sftk 2007-09-17
  • 打赏
  • 举报
回复
怎么又扯到foreach上去了? 这个问题应该不困难吧 ,难道是我表述有问题??
sftk 2007-09-16
  • 打赏
  • 举报
回复
大哥,说明白点吧,代码应该写在哪里?
panzi667 2007-09-16
  • 打赏
  • 举报
回复
学习中~
angelsxw 2007-09-16
  • 打赏
  • 举报
回复
不知...foreach有办法解决没?
sftk 2007-09-16
  • 打赏
  • 举报
回复
-_-! 我还是只想知道这个循环代码写在winform程序的哪里? 有人说可以另外开一个线程来不停调用Form->Invalidate(),以此来调用Form->OnPaint(), 但这样麻烦做有必要吗?
真相重于对错 2007-09-16
  • 打赏
  • 举报
回复
winform 也有wndproc
sftk 2007-09-16
  • 打赏
  • 举报
回复
是啊,如果是win32程序就写在wndproc里,但winform都封装起来了,变成了

main()
{
Application::Run( gcnew Form() );
}

应该写在哪里呢? 如果Form类有个重载函数,能够不停调用就行。
真相重于对错 2007-09-16
  • 打赏
  • 举报
回复
wndproc ???
songle912 2007-09-16
  • 打赏
  • 举报
回复
up
sftk 2007-09-16
  • 打赏
  • 举报
回复
就是FrameFunc, 在游戏程序中每一帧都要刷新画面和更新游戏逻辑,win32程序里就是
while(1)
{
Game.Render();
Game.Update(dt);

//windows消息处理
}

这次我写了个winform程序,需要不停调用自己的Render和Update函数,但不知应该放在Form类的哪一个函数里(就是Form每一帧都会不停调用的函数)
xiaomimiya 2007-09-16
  • 打赏
  • 举报
回复
需要把跳出条件写进循环,避免造成死循环。比如一个鼠标单击事件或其他的事件作为跳出条件。
真相重于对错 2007-09-16
  • 打赏
  • 举报
回复
没明白搂主要求。
什么叫帧循环
英文是什么??
sftk 2007-09-15
  • 打赏
  • 举报
回复
呵呵,至少要说些东西才能拿分吧。

其实我的要求很简单,就是能在winform程序里写自己的帧循环函数,但不知写在哪里。
WZHS1983 2007-09-15
  • 打赏
  • 举报
回复
UP
不懂
那分走人
sftk 2007-09-15
  • 打赏
  • 举报
回复
估计是写在什么重载函数里,但我实在搞不清。。 肯定不能是OnPaint里,因为那个只有在刷新时才调用

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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