프로그래밍/API

API 툴바1

에어버스 2016. 5. 8. 09:45

API 툴바1

HWND CreateToolbarEx(
  HWND             부모윈도우핸들,
  DWORD            툴바스타일,
  UINT                툴바ID
  int                   툴바 이미지 수,
  HINSTANCE       hInst, 
  UINT                비트맵ID,
  LPCTBBUTTON    버튼정보 구조체,
  int                    버튼 수,
  int                    버튼 가로 크기,
  int                    버튼 새로크기,
  int                    버튼에 설정할 미이지 가로크기,
  int                    버튼에 설정할 미이지 세로크기,
  UINT                 버튼정보 구조체 크기);

<툴바스타일>
WS_VISIBLE | WS_CHILD | WS_BORDER
WS_CLIPSIBLINGS    프레임에 붙게 만듬
CCS_TOP               상단에 붙임
CCS_BOTTOM
TBSTYLE_TOOLTIPS    풍선도움말
...

<버튼 정보 구조체>
typedef struct _TBBUTTON {
  int            비트맵번호, // 0부터 시작
  int            WM_COMMAND와 함께 설정될 이벤트 메시지, // 어느 버튼에서 이벤트가 발생했는지 구분
  BYTE         버튼상태, // TBSTATE_CHECKED, TBSTATE_ENABLED
  BYTE         버튼스타일,
  DWORD    사용자에게 필요한 데이터 값, 
  INT_PTR    사용자에게 필요한 특정정보를 넣고자 하는 경우 사용되는 값 // 보통 풍선도움말
} TBBUTTON, NEAR* PTBBUTTON, *LPTBBUTTON;
typedef const TBBUTTON* LPCTBBUTTON;

풍선 도움말 사용하기

툴바 스타일에 TBSTYLE_TOOLTIPS 추가한다.

툴바 풍선도움말 이벤트코드

TTN_NEEDTEXT    마우스가 툴바 위치에 있어 풍선 도움말 필요할때
TTN_SHOW         풍선 도움말이 출력되었을떄
TTN_POP            풍선 도움말이 감춰질때

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <CommCtrl.h>
#pragma comment(lib, "comctl32.lib")
 
TBBUTTON tbb[8= {
    0, ID_FILENEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0000,
    1, ID_FILEOPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0000,
    2, ID_FILESAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0000,
    3, ID_EDITCUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0000,
    4, ID_EDITCOPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0000,
    5, ID_EDITPASTE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 00,00,
    6, ID_FILEPRINT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0000,
    7, IDM_ABOUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0000
};
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    
    LPTBBUTTON ptb;
    static HWND toolbar, floatWnd;
    LPNMHDR pnmhdr; // 풍선말용
    LPTOOLTIPTEXT lpTooltip;
    TCHAR* pStrText = L"";
 
    switch (message)
    {
    case WM_CREATE:
        ptb = tbb;
        toolbar = CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_BORDER | CCS_TOP | TBSTYLE_TOOLTIPS, 11, hInst, IDB_BITMAP, ptb, 716161615sizeof(TBBUTTON));
        break;
    case WM_NOTIFY:
        pnmhdr = (LPNMHDR)lParam;
        if (pnmhdr->code == TTN_NEEDTEXT)
        {
            lpTooltip = (LPTOOLTIPTEXT)lParam;
            switch (lpTooltip->hdr.idFrom)
            {
            case ID_FILENEW:
                pStrText = L"새파일";
                break;
            case ID_FILEOPEN:
                pStrText = L"파일열기";
                break;
            }
            wcscpy_s(lpTooltip->szText, pStrText);
        }
        break;
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 메뉴 선택을 구문 분석합니다.
            switch (wmId)
            {
            case ID_FILENEW:
                MessageBox(hWnd, L"파일을 새로 만듭니다.", L"새파일", MB_OK);
                break;
            case ID_FILEOPEN:
                MessageBox(hWnd, L"파일을 엽니다.", L"파일열기", MB_OK);
                break;
 
 
cs