API 툴바1
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, 0, 0, 0, 0,
1, ID_FILEOPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0,
2, ID_FILESAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0,
3, ID_EDITCUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0,
4, ID_EDITCOPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0,
5, ID_EDITPASTE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0,0, 0,
6, ID_FILEPRINT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0,
7, IDM_ABOUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0
};
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, 1, 1, hInst, IDB_BITMAP, ptb, 7, 16, 16, 16, 15, sizeof(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 |