Programowanie pod Windows

9
Programowanie pod Windows W środowisku Visual C+ + Część IV Anna Tomkowska Politechnika Koszalińska 2007

description

Programowanie pod Windows. W środowisku Visual C++ Część IV. Anna Tomkowska Politechnika Koszalińska 2007. 1/8. Pasek narzędziowy. #include … HWND hToolBar; HINSTANCE hInstance; HWND hStatus; LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int WINAPI ( … ) { - PowerPoint PPT Presentation

Transcript of Programowanie pod Windows

Page 1: Programowanie  pod Windows

Programowanie pod Windows

W środowisku Visual C++Część IV

Anna TomkowskaPolitechnika Koszalińska 2007

Page 2: Programowanie  pod Windows

#include <commctrl.h>…HWND hToolBar;HINSTANCE hInstance;HWND hStatus;

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI( …){ InitCommonControls(); …}

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp){ …}

Pasek narzędziowy

int WINAPI( HINSTANCE hInst ,…){ InitCommonControls(); hInstance = hInst; …}

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp){ …}

1/8

Page 3: Programowanie  pod Windows

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));

Pasek narzędziowy / WM_CREATE

2/8

Page 4: Programowanie  pod Windows

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; }…

Pasek narzędziowy / WM_SIZE

3/8

Page 5: Programowanie  pod Windows

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;

}…

Pasek narzędziowy / WM_COMMAND

4/8

Page 6: Programowanie  pod Windows

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){ switch (lpttt->hdr.idFrom) { case CM_NOWY:

lpttt->lpszText = "NowyDocument"; break;

case CM_ZAPISZ: lpttt->lpszText = "Zapisz dokument";

break; } }

Pasek narzędziowy / WM_NOTIFY

typedef struct { NMHDR hdr; LPTSTR lpszText; WCHAR szText[80]; HINSTANCE hinst; UINT uflags; } TOOLTIPTEXT, FAR *LPTOOLTIPTEXT;

typedef struct tagNMHDR { HWND hwndFrom; UINT idFrom; UINT code; } NMHDR;

5/8

Page 7: Programowanie  pod Windows

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 indeks

np.#define BITMAP_5 5

Dodawanie pliku bmp do zasobów6/8

Page 8: Programowanie  pod Windows

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; } } … }

Pasek Statusu / WM_CREATE

7/8

Page 9: Programowanie  pod Windows

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); …

Pasek Statusu / WM_SIZE

8/8