Programowanie pod Windows
description
Transcript of Programowanie pod Windows
Programowanie pod Windows
W środowisku Visual C++Część IV
Anna TomkowskaPolitechnika Koszalińska 2007
#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
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
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
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
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
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
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
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