实现窗体的标题栏消除,分数是身外物,别客气,在线等!!!

wcm7474 2003-03-08 10:02:35
郁闷,用setwindowpos,代码在窗体1上书写,想实现对窗体2的标题栏消除,就是不行,帮我一把啊(备注:用API函数实现窗体1的标题栏消除很容易的了)
...全文
45 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcm7474 2003-03-09
  • 打赏
  • 举报
回复
我尝试过了,都不行,在这前,我试着用最简方式,一个工程,两个窗体,代码写在FORM1,对FORM2的STYLE的修改都无效,包括对最大化和最小化的改变,但对ME.HWND就可以,奇怪
AechoJohn 2003-03-09
  • 打赏
  • 举报
回复
这句(SetWindowLong myform, -16, mystyle And Not WS_CAPTION)中的WS_CAPTION属性在MSDN中是这样解释的:
WS_CAPTION Creates a window that has a title bar (implies the WS_BORDER style). Cannot be used with the WS_DLGFRAME style
它是不是和别的Window Style属性有关,你试试把相关的属性也改一下,看看问题是不是出在这里。
wcm7474 2003-03-09
  • 打赏
  • 举报
回复
-回答: hsn1982(我 爱 猫 猫):
我要的就是这种效果,但要在运行过程中实现
谢谢所有UP的朋友
我已经贴出了代码,不知道错在那里,希望高手指点.
happybeyond 2003-03-09
  • 打赏
  • 举报
回复
up
wcm7474 2003-03-09
  • 打赏
  • 举报
回复
难道就没有人来回答了吗?
wcm7474 2003-03-09
  • 打赏
  • 举报
回复
up
wcm7474 2003-03-08
  • 打赏
  • 举报
回复
up
wcm7474 2003-03-08
  • 打赏
  • 举报
回复

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Dim myform As Long
Dim mystyle As Long

Shell "content\" & TreeView1.SelectedItem & ".exe", 4
myform = FindWindow(vbNullString, TreeView1.SelectedItem)
mystyle = GetWindowLong(myform, -16)
SetWindowLong myform, -16, mystyle And Not WS_CAPTION
SetWindowPos myform, hwnd_topmost, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_FRAMECHANGED

SetParent myform, Picture2.hwnd
End Sub

这里我实现点击treeview,打开相应的窗体,把窗体置入另外一个窗体的picture2中
codekiwi 2003-03-08
  • 打赏
  • 举报
回复
不会的
fangboy 2003-03-08
  • 打赏
  • 举报
回复
"我现在怀疑setwindowpos仅仅是对me.hwnd有效"

怎么可能呢!
你把你的代码都贴出来看看吧。

hengxin54 2003-03-08
  • 打赏
  • 举报
回复
先load了窗体2后取窗体2的窗口句柄试试
wcm7474 2003-03-08
  • 打赏
  • 举报
回复
我问一下各位,你们有没有试过,我现在怀疑setwindowpos仅仅是对me.hwnd有效,不知道你们认为呢
northwolves 2003-03-08
  • 打赏
  • 举报
回复
下面是兄弟以前写的代码,你试试:

'This sample show you how to cut the caption title exactly and create controls with code.
'add form1,form2 ,do nothing but copy this codes for it,then run form1
Option Explicit
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Private WithEvents cmd1 As CommandButton
Private WithEvents cmd2 As CommandButton
Private Sub cmd1_Click() '******************

Dim capheight As Long, area As Long
Form2.ScaleMode = 2
Form2.ForeColor = vbRed
Form2.Line (1, 0)-(Form2.Width, 0) '紧贴标题栏画线做标记
capheight = GetSystemMetrics(33) + GetSystemMetrics(4) ' 边框宽度+标题栏高度
area = CreateRectRgn(0, capheight, Form2.Width, Form2.Height) '画无标题栏的矩形框
area = SetWindowRgn(Form2.hWnd, area, True) '裁剪标题栏
End Sub
Private Sub cmd2_Click() '*******************
Form2.ScaleMode = 2
Dim area As Long
area = CreateRectRgn(0, 0, Form2.Width, Form2.Height) '画含标题栏的矩形框
area = SetWindowRgn(Form2.hWnd, area, True) '恢复标题栏
End Sub
Private Sub Form_Load()
Me.WindowState = 0
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2, 8000, 5000 '居中及设置窗体大小
Set cmd1 = Controls.Add("VB.CommandButton", "cmd1", Me) '添加cmd1按纽
Set cmd2 = Controls.Add("VB.CommandButton", "cmd2", Me) '添加cmd2按纽
cmd1.Move 1000, 1000, 1500, 500
cmd2.Move 3000, 1000, 1500, 500
cmd1.Caption = "裁剪标题栏"
cmd2.Caption = "恢复标题栏"
cmd1.Visible = True
cmd2.Visible = True
Form2.Show
End Sub



codekiwi 2003-03-08
  • 打赏
  • 举报
回复
把api的hwnd改成窗体2的就可以了.

比如原来是form1.hwnd,改成form2.hwnd
Sean918 2003-03-08
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1507/1507455.xml?temp=.719433

不是有人给你解答了吗?

wcm7474 2003-03-08
  • 打赏
  • 举报
回复
up

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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