Тоолокно как в офисе2003 сделал, но текст на заголовке не могу сделать

Тема в разделе "WASM.BEGINNERS", создана пользователем God_Father, 21 мар 2008.

  1. God_Father

    God_Father New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2007
    Сообщения:
    99
    Всем привет.
    Лежал сырец док тоолбара.
    Я его модифицировал так что когда тоолбар на ребаре превращается в тоолокно, то оно становится такое же как в офисе 2003.
    Не знаю как текст на заголовок окна поставить.
    чтоб допустим Форматирование
    отображалось как Формати...
    вида сама ... ставит обрезая строку по окну.
    Вот она моя подпрограмма, которую я добавил

    Код (Text):
    1. ;-----------------------------------------------
    2. .ELSEIF uMsg  == WM_NCPAINT
    3.     invoke NC_PAINT_proc, hWnd
    4.     ret
    5.     .ELSEIF uMsg  == WM_NCACTIVATE
    6.     invoke NC_PAINT_proc, hWnd
    7.     ret
    8. ;-----------------------------------------------
    9.  
    10. и вот
    11.  
    12. NC_PAINT_proc proc hWnd :DWORD
    13. local RCT : RECT
    14. local wt : DWORD
    15. local ht : DWORD
    16. local sm :DWORD
    17.     invoke GetWindowRect,hWnd, addr RCT
    18.     mov eax, RCT.right
    19.     sub eax, RCT.left
    20.     ;int 3
    21.     mov wt,eax
    22.         dec wt
    23.     mov eax, RCT.bottom
    24.     sub eax, RCT.top
    25.     ;int 3
    26.     mov ht,eax
    27.         dec ht
    28.     invoke GetSystemMetrics,SM_CYSMCAPTION
    29.     mov sm,eax
    30.     ;inc sm
    31.     ;add sm,10
    32.     invoke GetWindowDC,hWnd
    33.     mov hDC,eax
    34.         RGB 122,121,153
    35.         invoke  CreatePen,PS_SOLID,3,eax    ;Shape1
    36.         mov hPen,eax
    37.            invoke   SelectObject,hDC,hPen           ;Shape1
    38.         ;RGB 122,121,153
    39.         ;invoke CreateSolidBrush,eax     ;чтоб кнопки не затирать
    40.         invoke GetStockObject,NULL_BRUSH  ;\\
    41.         mov hSolid,eax                    ;\\
    42.            invoke SelectObject,hDC,hSolid     ;\\       ;Shape1
    43.         invoke Rectangle,hDC,1,1,wt,ht          ;Shape1
    44.            invoke DeleteObject,hPen
    45.            invoke DeleteObject,hSolid
    46.         RGB 219,218,228
    47.         invoke  CreatePen,PS_SOLID,1,eax    ;Shape1
    48.         mov hPen,eax
    49.            invoke   SelectObject,hDC,hPen
    50.         invoke GetStockObject,NULL_BRUSH  ;\\
    51.         mov hSolid,eax
    52.            invoke SelectObject,hDC,hSolid
    53.         dec wt
    54.         dec ht
    55.             invoke RoundRect,hDC,2,2,wt,ht,3,3
    56.            invoke DeleteObject,hPen
    57.            invoke DeleteObject,hSolid
    58. ;---------------------------------------------------
    59.         dec wt
    60.         dec wt
    61.         ;dec sm
    62.         inc sm
    63.         inc sm
    64.         RGB 122,121,153
    65.         invoke  CreatePen,PS_SOLID,3,eax    ;Shape1
    66.         mov hPen,eax
    67.            invoke   SelectObject,hDC,hPen           ;Shape1
    68.         RGB 122,121,153
    69.         invoke  CreateSolidBrush,eax     ;чтоб кнопки не затирать
    70.         ;invoke GetStockObject,NULL_BRUSH  ;\\
    71.         mov hSolid,eax                    ;\\
    72.            invoke SelectObject,hDC,hSolid     ;\\       ;Shape1
    73.         invoke Rectangle,hDC,4,4,wt,sm          ;Shape1
    74.            invoke DeleteObject,hPen
    75.            invoke DeleteObject,hSolid
    76. ;---------------------------------------------------
    77.         mov RCT.right,4
    78.         mov RCT.top,4
    79.         m2m RCT.right,80
    80.         m2m RCT.bottom,20
    81.                invoke GetWindowText,hWnd,addr szbuffer,127
    82.         invoke GetWindowTextLength,hWnd
    83.         mov ebx,eax
    84.        
    85.     invoke ReleaseDC,hWnd,hDC
    86. xor eax,eax
    87. inc eax
    88. ret
    89. NC_PAINT_proc endp
    Выкладываю сырец.