gylopl Temat założony przez niniejszego użytkownika |
[WinAPI] Brak rysowania tła » 2012-12-29 11:08:32 Witam, chcialem sobie zrobic tlo w moim programie, wydaje mi sie ze wszystko zrobilem jak najbardziej ok, jednak nie chce sie wyswietlac tlo. jednak gdy dodam zaraz po case WM_PAINT:{ messageboxa to tlo sie pojawia, chcialem po prostu zobaczyc czy wchodzi do tego case. moglby ktos poprawic zeby dobrze kolorowalo skladnie? linie 37,73,205 #include <windows.h> #include <Windowsx.h> #include <commctrl.h> #include <wchar.h> #include <locale.h> #include <time.h> #include <c:\Program Files\MySQL\MySQL Connector C 6.0.2\include\mysql.h>
#define ID_TAB_D 0 #define ID_TAB_M 1 #define ID_DODAJ_KANARA 503 #define ID_PRZYCISK1 501 #define ID_PRZYCISK2 502 #define HRAMKA 504
MYSQL mysql; MYSQL_RES * res; MYSQL_ROW row; int num_fields; int mysql_set; time_t ltime;
MSG msgs; CHAR szClassName[] = "AntyKanar";
HWND MainWindow; HWND hTab; HWND hCombo; HWND hRamka; HWND hDodajKanara;
HINSTANCE * hInst;
HBITMAP hbmTlo; BITMAP tlo_info; HDC hdc, hdcBitmapy, hdcMapy;
LRESULT CALLBACK NewWndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); WNDPROC g_OldWndProc; INT WINAPI WinMain( HINSTANCE hInstance, HINSTANCE, LPSTR lStart, INT nShow ) { mysql_init( & mysql ); mysql_options( & mysql, MYSQL_SET_CHARSET_NAME, "UTF8" ); INT a; mysql_real_connect( & mysql, "localhost", "root", "", "kanary", 0, NULL, 0 ); hInst = & hInstance; WNDCLASSEX wc; wc.hInstance = * hInst; wc.lpszClassName = szClassName; wc.lpfnWndProc = WndProc; wc.style = 0; wc.cbSize = sizeof( WNDCLASSEX ); wc.hIcon = LoadIcon( 0, IDI_APPLICATION ); wc.hIconSm = LoadIcon( 0, IDI_APPLICATION ); wc.hCursor = LoadCursor( 0, IDC_ARROW ); wc.lpszMenuName = 0; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground =( HBRUSH ) COLOR_BACKGROUND; if( !RegisterClassEx( & wc ) ) return 0; MainWindow = CreateWindowEx( 0, szClassName, "AntyKanar Lublin", WS_OVERLAPPEDWINDOW, 20, 20, 860, 510, 0, 0, * hInst, 0 ); hbmTlo =( HBITMAP ) LoadImage( NULL, "bitmapa.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); GetObject( hbmTlo, sizeof( tlo_info ), & tlo_info ); typedef struct { UINT mask; #if (_WIN32_IE >= 0x0300) DWORD dwState; DWORD dwStateMask; #else UINT lpReserved1; UINT lpReserved2; #endif LPTSTR pszText; int cchTextMax; int iImage; LPARAM lParam; } TCITEM, * LPTCITEM; hTab = CreateWindowEx( 0, WC_TABCONTROL, 0, WS_CHILD | WS_VISIBLE | TCS_FIXEDWIDTH, 0, 0, 860, 510, MainWindow,( HMENU ) 10, * hInst, NULL ); TabCtrl_SetItemSize( hTab, 425, 20 ); TCITEM tci1, tci2; tci1.mask = TCIF_TEXT; tci2.mask = TCIF_TEXT; tci1.pszText = "Dodawanie kanara"; tci2.pszText = "Mapa"; tci1.cchTextMax = sizeof( "Dodawanie kanara" ); tci2.cchTextMax = sizeof( "Mapa" ); TabCtrl_InsertItem( hTab, ID_TAB_D, & tci1 ); TabCtrl_InsertItem( hTab, ID_TAB_M, & tci2 ); hRamka = CreateWindowEx( 0, "BUTTON", "Zauważyłeś kanara? Dodaj go!", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 70, 70, 600, 70, MainWindow, NULL, * hInst, NULL ); hCombo = CreateWindowEx( 0, WC_COMBOBOX, 0, WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_VSCROLL, 30, 30, 300, 300, hRamka, 0, * hInst, 0 ); mysql_query( & mysql, "SELECT `przystanek` FROM `baza_przystankow`" ); res = mysql_store_result( & mysql ); num_fields = mysql_num_fields( res ); while(( row = mysql_fetch_row( res ) ) ) { for( int i = 0; i < num_fields; i++ ) { const WCHAR * przystanek_wchar; int nChars = MultiByteToWideChar( CP_UTF8, 0, row[ i ], - 1, NULL, 0 ); przystanek_wchar = new WCHAR[ nChars ]; MultiByteToWideChar( CP_UTF8, 0, row[ i ], - 1,( LPWSTR ) przystanek_wchar, nChars ); SendMessageW( hCombo, CB_ADDSTRING, 0,( LPARAM ) przystanek_wchar ); delete[] przystanek_wchar; } } hDodajKanara = CreateWindowEx( 0, "BUTTON", "Dodaj Kanara!", WS_CHILD | WS_VISIBLE, 360, 25, 100, 30, hRamka,( HMENU ) ID_DODAJ_KANARA, * hInst, NULL ); g_OldWndProc =( WNDPROC ) SetWindowLong( hRamka, GWL_WNDPROC,( LONG ) NewWndProc ); ShowWindow( MainWindow, nShow ); while( GetMessage( & msgs, 0, 0, 0 ) ) { TranslateMessage( & msgs ); DispatchMessage( & msgs ); } return msgs.wParam; }
LRESULT CALLBACK NewWndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_COMMAND: { switch( wParam ) { case ID_DODAJ_KANARA: { int numer = ComboBox_GetCurSel( hCombo ); char * numer_char = new char; itoa( numer + 1, numer_char, 10 ); if( numer == - 1 ) { MessageBox( hwnd, "Nie wybrałeś przystanku", "Błąd", MB_ICONINFORMATION ); } else { time( & ltime ); char * czas = new char; itoa( ltime, czas, 10 ); char zapytanie[ 100 ] = "UPDATE `baza_przystankow` SET `status` = '1',`godzina` = '"; LPSTR zapytanie1 = "' WHERE id = '"; LPSTR zapytanie2 = "'"; lstrcat( zapytanie, czas ); lstrcat( zapytanie, zapytanie1 ); lstrcat( zapytanie, numer_char ); lstrcat( zapytanie, zapytanie2 ); MessageBox( hwnd, zapytanie, numer_char, MB_ICONINFORMATION ); mysql_query( & mysql, zapytanie ); delete czas; delete zapytanie; delete czas; } delete numer_char; } break; case ID_PRZYCISK2: MessageBox( hwnd, "Wcisnąłeś przycisk 2", "Test", MB_ICONINFORMATION ); break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } } break; } return CallWindowProc( g_OldWndProc, hwnd, msg, wParam, lParam ); }
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar ) { HDC hdc, hdcMapy; PAINTSTRUCT ps; switch( msg ) { case WM_PAINT: { hdc = BeginPaint( hwnd, & ps ); hdcMapy = CreateCompatibleDC( hdc ); hbmTlo =( HBITMAP ) SelectObject( hdcMapy, hbmTlo ); BitBlt( hdc, 0, 0, tlo_info.bmWidth, tlo_info.bmHeight, hdcMapy, 0, 0, SRCCOPY ); hbmTlo =( HBITMAP ) SelectObject( hdcMapy, hbmTlo ); ReleaseDC( hwnd, hdc ); DeleteDC( hdcMapy ); EndPaint( hwnd, & ps ); break; } case WM_NOTIFY: LPNMHDR n; n =( LPNMHDR ) lPar; if( n->code == TCN_SELCHANGE && n->hwndFrom == hTab ) { int index = TabCtrl_GetCurSel( hTab ); switch( index ) { case ID_TAB_D: ShowWindow( hRamka, SW_SHOW ); break; case ID_TAB_M: ShowWindow( hRamka, SW_HIDE ); break; } } break; case WM_DESTROY: DestroyWindow( hCombo ); PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wParam, lPar ); } return 0; }
|