API - część IV

Download Report

Transcript API - część IV

Programowanie
pod Windows
W środowisku Visual C++
Część IV
Anna Tomkowska
Politechnika Koszalińska 2007
1/8
Pasek narzędziowy
#include <commctrl.h>
…
HWND hToolBar;
HINSTANCE hInstance;
HWND hStatus;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
WINAPI(…)
HINSTANCE hInst ,…)
intintWINAPI(
{{
InitCommonControls();
InitCommonControls();
…hInstance = hInst;
} …
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp)
{ LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp)
{…
} …
}
2/8
Pasek narzędziowy / WM_CREATE
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg)
{
case WM_CREATE:
{
TBBUTTON przyciski[6];
memset(przyciski, 0, sizeof(TBBUTTON)*6);
przyciski[0].iBitmap = 0;
przyciski[0].idCommand = CM_NOWY;
przyciski[0].fsState = TBSTATE_ENABLED;
przyciski[0].fsStyle = TBSTYLE_BUTTON;
…
przyciski[5].iBitmap=3;
…
hToolBar = CreateToolbarEx( hwnd,
TBSTYLE_TOOLTIPS|WS_VISIBLE|WS_CHILD,
200, 4, hInstance,1,
przyciski, 6, 0, 0, 32, 32, sizeof(TBBUTTON));
…
3/8
Pasek narzędziowy / WM_SIZE
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg)
{
case WM_CREATE:
…
case WM_SIZE:
SendMessage(hToolBar, WM_SIZE, wParam, lParam);
break;
}
…
4/8
Pasek narzędziowy / WM_COMMAND
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg)
{
…
case WM_COMMAND:
switch(LOWORD(wParam))
{
case CM_NOWY:
…
break;
case CM_OTWORZ:
…
break;
…
}
…
5/8
Pasek narzędziowy / WM_NOTIFY
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg)
{
…
case WM_NOTIFY:
{
LPTOOLTIPTEXT lpttt= (LPTOOLTIPTEXT)lParam;
if (lpttt->hdr.code == TTN_NEEDTEXT)
{
typedef struct {
NMHDR hdr;
switch (lpttt->hdr.idFrom)
LPTSTR lpszText;
{
WCHAR szText[80];
case CM_NOWY:
HINSTANCE hinst;
lpttt->lpszText = "NowyDocument";
UINT uflags;
break;
} TOOLTIPTEXT, FAR *LPTOOLTIPTEXT;
case CM_ZAPISZ:
lpttt->lpszText = "Zapisz dokument";
break;
}
}
…
typedef struct tagNMHDR {
HWND hwndFrom;
UINT idFrom;
UINT code;
} NMHDR;
6/8
Dodawanie pliku bmp do zasobów
W pliku RC należy dopisać linijkę:
identyfikator BITMAP " NazwaPliku.bmp „
np.
BITMAP_5 BITMAP " Toolbar.bmp "
W pliku H należy dopisać linijkę:
#define identyfikator
np.
#define BITMAP_5
indeks
5
7/8
Pasek Statusu / WM_CREATE
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg)
{
case WM_CREATE:
{
…
hStatus = CreateStatusWindow(WS_CHILD|WS_VISIBLE,
„napis w pasku",
hwnd,
700);
break;
}
}
…
}
8/8
Pasek Statusu / WM_SIZE
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg)
{
case WM_SIZE:
{
RECT rect;
SetRect(&rec, 0, 0, LOWORD(lParam), HIWORD(lParam));
int parts[2] = {rect.right/3,rect.right};
SendMessage(hStatus,WM_SIZE,wParam,lParam);
SendMessage(hStatus,SB_SETPARTS,(WPARAM) 2, (LPARAM) parts );
SendMessage(hStatus, SB_SETTEXT, (WPARAM) 0, (LPARAM) "WM_SIZE");
itoa(LOWORD(lParam), tekst,10);
strcat(tekst, ", ");
itoa(HIWORD(lParam), tekst+strlen(tekst),10);
SendMessage(hStatus, SB_SETTEXT, (WPARAM) 1, (LPARAM) tekst);
…