可以将你的所有界面做成单独的UserControl,然后嵌入到主窗口中。实现的功能类似于Panel,还可以增加一些独特的 *** 作,如拖曳等。
这是简单的形式,如果想做更复杂的,可能就需要用图形工具全部重画界面,那就是复杂游戏的设计方式了。
在另一个窗体所属的类中定义一个函数,比如:public string GetAllControlData();功能是获取当前所有控件的数据并作为字符串返回。
每次需要另一个窗体的所有控件的数据时,就在本窗体中调用这个函数。假设本窗体为f1,另一个窗体为f2,则这样调用:string
data=f2GetAllControlData();
new出这个窗体的时候,获取主窗体的坐标,thisLocationX,thisLocationY;
当新窗体show之后,你说可以移动,没问题的,有一个locationChanged事件,这时把新窗体的坐标获取出来就可以了,再和之前主窗体的坐标可以比较了。
在发送信息的 richtextbox 里面的内容存到数据库,然后调用数据库里面的信息以后把这些信息些在上面就可以了。
richtextboxtext=richtextboxtext+"select informatin from chat where fromid ='{0}' and toid='{1}'" 这样就实现了聊天的交互了
你这里要记住,要使用time空间,调用他的 tick事件来每隔 1000 就去select一次数据库,看看有没有状态为0 的聊天数据, 有就把他 读取出来,并且updata一下他的状态为1
先用FindWindow查找到程序的窗口句柄,之后用GetWindowRect窗口的边框矩形,就可以啦!例如
procedure TForm1Button1Click(Sender: TObject);
var
hwn :THandle;
r :TRect;
begin
hwn := FindWindow('CabinetWClass','我的电脑);//XP的是'我的电脑',vista是'计算机'
if hwn <> 0 then
begin
GetWindowRect(hwn,r);
showmessage(inttostr(rLeft));
showmessage(inttostr(rTop));
end;
end;
这个问题,需要分几种情况考虑:
1 你要获取的窗体是规则窗体,标题栏是系统定义的,获取就简单了,直接使用 Windows API: GetSystemMetrics(SM_CYCAPTION); 就可以了。
2 如果你要获取的窗体是不规则的,那么就比较困难了,因为这个窗体的标题栏,很可能是自己画的,也就是说根本不是标题栏,而是某个控件模拟的,或者这个高度,要具体情况具体分析了。
一般都是用autohotkey自带的window spy,右击运行中的autohotkey的托盘图标即可看到。但并不是所有的窗体都有控件的。通常获取不了的控件都是用颜色或图像来判断位置所在。
以上就是关于C#游戏窗体编程全部的内容,包括:C#游戏窗体编程、如何从c#窗体中获取另一个窗体中所有控件输入的信息,一定要获取多个控件的数据、C# 请问如何获取当前窗体(可以拖动)的位置,从而去确定它所调用的窗体之间的相对位置。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)