kaczor112 Temat założony przez niniejszego użytkownika |
WinAIP Okno dialogowe jako tło. » 2017-08-11 23:28:56 Dzień dobry. Mam problem korzystam z Visual Studio 2015. Jest tak że do okien dialogowych jest w nim (bardzo) dużo opcji. I próbuję zrobić tak po po naciśnięciu guzika w głównym oknie, wyskakiwało okno dialogowe gdzie bym wpisał/zaznaczył jakieś dane i chcę je wysłać do aplikacji. To jest cel główny. Niestety okna dialogowe dały mi w kość nie chcąc się jakkolwiek robić w sposób jaki chcę. Tych wszystkich opcji jest tyle że się w nich gubię. Zrobiłem przykładowe okno, udało się coś wskórać, ale owe okno staje się TŁEM aplikacji! https://ibb.co/jGQKcF Nie mam pojęcia jak to się dzieje. Proszę o pomoc! #include <windows.h> #include "resource.h"
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); BOOL CALLBACK DlgProc( HWND, UINT, WPARAM, LPARAM ); HWND hwnd2;
int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil ) { WNDCLASSEX window; HWND hwnd = NULL; MSG msg; TCHAR Class_Name[] = TEXT( "OKNO_TEST" ); TCHAR Title[] = TEXT( "Tytul" ); window.cbClsExtra = NULL; window.cbSize = sizeof( WNDCLASSEX ); window.cbWndExtra = NULL; window.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 ); window.hCursor = LoadCursor( NULL, IDC_ARROW ); window.hIcon = LoadIcon( NULL, IDI_APPLICATION ); window.hIconSm = NULL; window.hInstance = hThisInstance; window.lpfnWndProc = WndProc; window.lpszClassName = Class_Name; window.lpszMenuName = 0; window.style = CS_VREDRAW | CS_HREDRAW; RegisterClassEx( & window ); hwnd =(( CreateWindowEx( WS_EX_WINDOWEDGE, Class_Name, Title, WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hThisInstance, NULL ) ) ); hwnd2 =(( CreateWindowEx( WS_EX_WINDOWEDGE, NULL, NULL, WS_VISIBLE | WS_CHILD, CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, NULL, NULL ) ) ); HWND hPrzyc = CreateWindowEx( 0, TEXT( "BUTTON" ), TEXT( "Dialog" ), WS_CHILD | WS_VISIBLE, 5, 5, 50, 25, hwnd, NULL, hThisInstance, NULL ); ShowWindow( hwnd, nFunsterStil ); UpdateWindow( hwnd ); while( GetMessage( & msg, NULL, 0, 0 ) ) { if( !IsDialogMessage( hwnd2, & msg ) ) { TranslateMessage( & msg ); DispatchMessage( & msg ); } } return msg.wParam; }
LRESULT CALLBACK WndProc( HWND hwnd, UINT mesg, WPARAM wParam, LPARAM lParam ) { HWND hwn2d; switch( mesg ) { case WM_LBUTTONDOWN: break; case WM_COMMAND: { int ret = DialogBox( GetModuleHandle( NULL ), MAKEINTRESOURCE( IDD_PROPPAGE_SMALL ), hwnd, DlgProc ); if( ret == IDOK ) MessageBox( hwnd, L"Wybrałeś \'Fajnie\' w oknie dialogowym!", L"Test", MB_ICONINFORMATION ); else if( ret == IDCANCEL ) MessageBox( hwnd, L"Wybrałeś \'Anuluj\' w oknie dialogowym!", L"Test", MB_ICONINFORMATION ); } break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, mesg, wParam, lParam ); } return 0; }
BOOL CALLBACK DlgProc( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam ) { switch( Msg ) { case WM_COMMAND: { switch( LOWORD( wParam ) ) { case IDC_BUTTON1: MessageBox( hwnd, L"Wybrałeś \'Fajnie\' w oknie dialogowym!", L"Test", MB_ICONINFORMATION ); case IDOK: EndDialog( hwnd, IDOK ); break; case IDCANCEL: EndDialog( hwnd, IDCANCEL ); break; } } break; default: return FALSE; } return TRUE; } |