窗口失去焦点如何不让标题栏重绘成灰色?有哪些API函数或消息可供使用?

解决方案 »

  1.   

    用setwindowpos把picture设为总在最前
      

  2.   

    不好用.首先,setparent后,是将picture1放到一个窗口中去的,所以想将picture1置于顶层,应该得到picture1.parent.hwnd,将此句柄置于顶层,而不是picture1.hwnd.其次,picture1.parent已经置为桌面窗口,所以setwindowpos picture1.parent.hwnd并不起作用. 请测试.
      

  3.   

    关于非客户区的消息:
    ON_WM_NCPAINT()//绘非客户区时。
    ON_WM_NCACTIVATE()//非客户区有焦点和失去焦点时。
    ON_WM_NCCALCSIZE()//计算窗体尺寸时
    应该是安装一个钩子,并拦截失去焦点的消息.如何操作?
      

  4.   


    SendMessage xx.hWnd, WM_NCACTIVATE, true/false, ByVal 0&
      

  5.   

    经你这么一说,我倒想到另一个方法,新建一个Form2,把标题栏隐去,总在最前,鼠标拖动即可Private Const WM_NCLBUTTONDOWN = &HA1
    Private Const HTCAPTION = 2
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function ReleaseCapture Lib "user32" () As LongPrivate Declare Function SetWindowPos Lib "user32" (ByVal Hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Const HWND_TOPMOST& = -1
    Private Const SWP_NOSIZE& = &H1
    Private Const SWP_NOMOVE& = &H2Private Sub Form_Load()
    SetWindowPos Me.Hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        Call ReleaseCapture
        Call PostMessage(Hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
    End If
    End Sub
      

  6.   

    6楼江南春,如何把你的那段代码'创建所有者窗口
        m_hOwner = CreateWindowEx(0, wc.lpszClassName, "OwnerWindow", _
            WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, App.hInstance, ByVal 0&)
        UpdateWindow m_hOwner
        ShowWindow m_hOwner, SW_SHOWNORMAL中的m_hOwner换成已存在的Form1,如:m_hOwner=Form1.hwnd, m_hTool=Form2.hwnd?
      

  7.   

    二者无法换,因为前者是API直接创建的,后者虽然也间接调用了API,但继承了IDispatch,属于COM接口,故无法对换。
      

  8.   

    关于此主题(完全自绘超出父窗口的窗口)的贴子:
    http://topic.csdn.net/u/20090716/19/772419b0-b147-45d7-a81b-6085de55926c.html
    http://topic.csdn.net/u/20090715/21/da4a07db-15ea-4fef-a110-0dc9be9f3e6a.html
    http://topic.csdn.net/u/20090714/09/5f9e994f-5f79-4aaa-b7b9-5b6543632341.html
    http://topic.csdn.net/u/20090714/09/aff8197b-ae7a-40ad-bbd8-38f05ffd6c83.html
    经过一星期的奋战终于解决。用这种原理开发的ShayooMenu.ocx,vista日历控件,combobox控件,listbox控件和其他ocx界面及测试程序如下:
    测试程序for VB 6.0欢迎交流  [email protected],欢迎开发非Microsoft自带控件.从底层和原理关注软件开发.
      

  9.   

    近期将推出全套控件.包括:
    1.vistaShayooForm
    2.vistaShayooListBox
    3.vistaShayooMenu
    4.vistaShayooTextBox
    5.vistaShayooStatusBar
    6.vistaShayooTooltip
    7.vistaShayooCalendar
    8.vistaShayooScrollBar
    9.vistaShayooCheckBox
    10.vistaShayooRadio
    11.vistaShayooGrid
    12.vistaShayooButton
    13.vistaShayooMdiTabs
    14.vistaShayooFrame
    15.vistaShayooToolBar
    16.vistaShayooRibbon
    17.vistaShayooListView
    18.vistaShayooMsgbox
    19.vistaShayooLed
    20.vistaShayooDock