80 likes | 237 Views
Programowanie Windows. W środowisku Visual C++ Część II. Anna Tomkowska Politechnika Koszalińska 2007. 1/7. Wyświetlanie tekstu. COLORREF fontColor = RGB(0,0,0); ; … LRESULT CALLBACK WndProc ( … ) { … LOGFONT lf; HFONT hfont; case WM_PAINT: … SetTextColor(hdc, kolorCzcionki);
E N D
Programowanie Windows W środowisku Visual C++ Część II Anna Tomkowska Politechnika Koszalińska 2007
1/7 Wyświetlanie tekstu COLORREF fontColor =RGB(0,0,0);; … LRESULT CALLBACK WndProc(…) { … LOGFONT lf; HFONT hfont; case WM_PAINT: … SetTextColor(hdc, kolorCzcionki); SetBkMode(hdc,TRANSPARENT); memset(&lf,0,sizeof(lf)); lf.lfItalic=1; _tcscpy(lf.lfFaceName,TEXT("Times New Roman")); hfont=CreateFontIndirect(&lf); hfont=(HFONT) SelectObject(hdc,hfont); TextOut(hdc,100,100,TEXT("ABCdefg"),7); DrawText(hdc,TEXT(„ab"),-1,&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE); hfont=(HFONT) SelectObject(hdc,hfont); DeleteObject(hfont); … return 0; …
2/7 Wyświetlanie dialogu BOOL CALLBACK DialogProc(HWND,UINT,WPARAM, LPARAM); … LRESULT CALLBACK WndProc(…) { … case WM_COMMAND: … case ID_OPCJE_KOLOR: if(DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1), hWnd,(DLGPROC)DlgProc)) InvalidateRect(hWnd,0,1); break; … } BOOL CALLBACK DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam, LPARAM lParam) { … }
3/7 Niestandardowe kontrolki #include <commctrl.h> … int WINAPI(…) { InitCommonControls(); … } Project → Properties Configurations Properties- →Linker →Command Line Additional Options: comctl32.lib Dodać bibliotekę comctl32.lib
4/7 Ustawianie wart. początkowych BOOL CALLBACK DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam, LPARAM lParam) { static COLORREF kolor=RGB(0,0,0); static HWND hOkienko; switch(uMsg) { case WM_INITDIALOG: hOkienko=GetDlgItem(hDlg,IDC_COLOR); SetDlgItemInt(hDlg,IDC_EDIT1,GetRValue(kolor),0); … SendDlgItemMessage(hDlg,IDC_SLIDER1,TBM_SETRANGE, TRUE,MAKELONG(0,255)); … SendDlgItemMessage(hDlg,IDC_SLIDER1,TBM_SETPOS, TRUE,GetRValue(kolor)); … return 1; case WM_CLOSE: EndDialog(hwndDlg,FALSE); return 1; } …
5/7 Komunikat WM_COMMAND BOOL CALLBACK DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam, LPARAM lParam) { … case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: fontColor =kolor; EndDialog(hwndDlg,TRUE); return 1; case IDCANCEL: EndDialog(hwndDlg,FALSE); return 1; } return 1; … }
6/7 Komunikat WM_COMMAND BOOL CALLBACK DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam, LPARAM lParam) { … case WM_COMMAND: switch (LOWORD(wParam)) { … case IDC_EDIT1: { int R=GetDlgItemInt(hDlg,IDC_EDIT1,NULL,0); kolor=RGB(R,GetGValue(kolor),GetBValue(kolor)); SendDlgItemMessage(hDlg,IDC_SLIDER1,TBM_SETPOS, TRUE,GetRValue(kolor)); InvalidateRect(hwndDlg,0,0); } return 1; … } return 1; … }
7/7 Komunikat WM_PAINT BOOL CALLBACK DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam, LPARAM lParam) { … HBRUSH hbrush; RECT rc; … case WM_PAINT: hdc=BeginPaint(hOkienko,&ps); hbrush=CreateSolidBrush(kolor); hbrush=(HBRUSH) SelectObject(hdc,hbrush); GetClientRect(hOkienko,&rc); Rectangle(hdc,0,0,rc.right,rc.bottom); hbrush=(HBRUSH) SelectObject(hdc,hbrush); DeleteObject(hbrush); EndPaint(hOkienko,&ps); break; … …