我正在覆盖表单中的CreateParams属性以绘制自定义的超大标题栏:
Protected Overrides ReadOnly Property CreateParams As System.Windows.Forms.CreateParams
Get
CreateParams = MyBase.CreateParams
CreateParams.Style = CInt(CreateParams.Style And Not &HC00000L) 'WS_CAPTION
End Get
End Property
我已经覆盖了WndProc以允许拖动表单:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = &H84 AndAlso m.Result.ToInt32() = 1 Then m.Result = New IntPtr(2)
End Sub
但是控制盒(关闭和最小化)消失了。有没有办法将控制框和文本保留在任务栏中,但删除通常的标题?
答案 0 :(得分:2)
如果我理解你的话,你想隐藏标题栏中的标题(也许是图标),而不是从任务栏中隐藏,就像Vista / 7资源管理器窗口一样。
这可以帮到你: MSDN Forums 在pvAttribute中使用this method和首选的WTA_OPTIONS(应为0x03)。
答案 1 :(得分:1)
一旦您选择自己绘制非客户区域,您必须全部绘制。没有混合选项。
答案 2 :(得分:0)
您覆盖创建参数以获取窗口而不标题栏。实现对WM_NCHITTEST的支持是正确的,用户没有其他方式可以移动窗口。
您不必重写CreateParams来获取此行为。只需将ControlBox属性设置为False,将Text属性设置为空字符串即可。你想要什么很难猜到。如果您不想丢失标题栏上的按钮,则只需将ControlBox设置为False即可。 “不寻常的标题”也很难猜测,你看到的只有Text属性的值。如果您不想要标题,请将其设置为空字符串。