Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

WinAIP Okno dialogowe jako tło.

Ostatnio zmodyfikowano 2017-08-11 23:28
Autor Wiadomość
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!

C/C++
#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 ) ) );
    //
    // Tworzenie okna - saaaam to sobie zrób ;-)
    //
   
    hwnd2 =(( CreateWindowEx( WS_EX_WINDOWEDGE, NULL, NULL,
    WS_VISIBLE | WS_CHILD, CW_USEDEFAULT, CW_USEDEFAULT,
    800, 600, NULL, NULL, NULL, NULL ) ) );
    // Tworzymy jakiś przycisk do wywołania dialogu
   
    HWND hPrzyc = CreateWindowEx( 0, TEXT( "BUTTON" ), TEXT( "Dialog" ), WS_CHILD | WS_VISIBLE,
    5, 5, 50, 25, hwnd, NULL, hThisInstance, NULL );
   
    // Pokazujemy główne okno
    ShowWindow( hwnd, nFunsterStil );
    UpdateWindow( hwnd );
   
    // No i standardowo - pętelka
    while( GetMessage( & msg, NULL, 0, 0 ) )
    {
       
        if( !IsDialogMessage( hwnd2, & msg ) )
        {
            TranslateMessage( & msg );
            DispatchMessage( & msg );
        }
    }
   
    return msg.wParam;
}

// Procedura okna
LRESULT CALLBACK WndProc( HWND hwnd, UINT mesg, WPARAM wParam, LPARAM lParam )
{
    HWND hwn2d;
    switch( mesg )
    {
    case WM_LBUTTONDOWN:
       
        /*hwn2d = CreateWindowEx(WS_EX_WINDOWEDGE, L"Joapa", L"Jolo",
        WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT,
        800, 600, hwnd, NULL, GetModuleHandle(NULL), NULL);
        ShowWindow(hwn2d, SW_SHOW);*/
       
        break;
    case WM_COMMAND:
       
        {
           
            //ShowWindow(hwnd2, SW_SHOW);
           
            // Tutaj wywołujemy nasz dialog
            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;
}

// Procedura dialogowa
BOOL CALLBACK DlgProc( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
    switch( Msg )
    {
    case WM_COMMAND:
        {
           
            // reakcja na przyciski
            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;
}
P-163925
« 1 »
  Strona 1 z 1