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

winapi i commctrl.h

Ostatnio zmodyfikowano 2011-04-21 10:49
Autor Wiadomość
unreal
Temat założony przez niniejszego użytkownika
» 2011-04-21 10:36:01
kod:
C/C++
#include <windows.h>
#define _WIN32_IE 0x0600
#include <commctrl.h>

#include "dialog.h"



INITCOMMONCONTROLSEX icc;
icc.dwSize = sizeof( INITCOMMONCONTROLSEX );
icc.dwICC = ICC_BAR_CLASSES; // toolbary, statusbary i tooltipy
InitCommonControlsEx( & icc );

LPSTR ClassName = "Okienko"; // nazwa klasy okna
MSG Komunikat; // Komunikat
HWND button1; // Deklaracja uchwytu

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); // funkcja obslugi komunikatow
BOOL CALLBACK DlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); // funkcja obslugi komunikatow dla okna nr 2

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    // Wysylanie struktury
    //--------------------
    WNDCLASSEX wc;
   
    wc.cbSize = sizeof( WNDCLASSEX ); // Rozmiar stuktury w bajtach
    wc.style = 0; // Styl okna
    wc.lpfnWndProc = WndProc; // Wskazaznik do procedury obslugujacej okno
    wc.cbClsExtra = 0; // Dodatkowe bajty pamieci dla okna
    wc.cbWndExtra = 0; // Dodatkowe bajty pamieci dla okna
    wc.hInstance = hInstance; // Identyfikato aplikacji ktora jest posiadaczem okna
    wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); // Ikona okna
    wc.hCursor = LoadCursor( NULL, IDC_ARROW ); // Kursor myszki
    wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 ); // Kolor okna
    wc.lpszMenuName = NULL; // Nazwa identyfikujaca menu okna
    wc.lpszClassName = ClassName; // Nazwa klasy
    wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); // ma³a ikona okna + pasek zadan
    //--------------------
    // Rejestrowanie klasy okna
    //--------------------
    if( !RegisterClassEx( & wc ) )
    {
        MessageBox( NULL, "Niestety rejestra okna siê nie powiod³a", "Error", MB_ICONEXCLAMATION | MB_OK );
        return 1;
    }
    //--------------------
    // Tworzenie okna
    //--------------------
    HWND hwnd;
    hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, ClassName, "Tytul okna", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL );
    if( hwnd == NULL )
    {
        MessageBox( NULL, "B³¹d tworzenia okna", "Error", MB_ICONEXCLAMATION );
        return 1;
    }
    //--------------------
    // Tworzenie przycisku
    //--------------------
    button1 = CreateWindowEx( 0, "BUTTON", "Dialog", WS_CHILD | WS_VISIBLE, 100, 100, 150, 30, hwnd, NULL, hInstance, NULL );
    //--------------------
    //  Tworzenie pola txt
    //--------------------
    //HWND hText = CreateWindowEx( 0, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 50, 50, 150, 20, hwnd, NULL, hInstance, NULL );
    //SetWindowText( hText, "Wpisz tu cos" );
    //--------------------
    //  Tworznie tollbar
    //--------------------
    HWND hStatusBar = CreateWindowEx( 0, STATUSCLASSNAME, NULL, SBARS_SIZEGRIP | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd,( HMENU ) 200, hInstance, NULL );
    int statusBarWidths[] = { 200, 300, - 1 };
    SendMessage( hStatusBar, SB_SETPARTS, 3,( LPARAM ) statusBarWidths );
    SendMessage( hStatusBar, SB_SETTEXT, 2,( LPARAM ) "To jest mój własny StatusBar!" );
    //--------------------
    // Wyswietlanie okna
    //--------------------
    ShowWindow( hwnd, nCmdShow );
    UpdateWindow( hwnd );
    //--------------------
    // Petla komunikatow
    //--------------------
    while( GetMessage( & Komunikat, NULL, 0, 0 ) )
    {
        TranslateMessage( & Komunikat );
        DispatchMessage( & Komunikat );
    }
    return Komunikat.wParam;
}
//--------------------
// Funkcja do obslugi komunikatow
//--------------------
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
    case WM_COMMAND:
        if(( HWND ) lParam == button1 )
        {
            //MessageBox(hwnd, "Nacisnoles przyciska", "haha", MB_ICONINFORMATION);
            int ret = DialogBox( GetModuleHandle( NULL ), MAKEINTRESOURCE( 200 ), hwnd, DlgProc );
            if( ret == IDOK )
                 MessageBox( hwnd, "Wybrałeś \'Fajnie\' w oknie dialogowym!", "Test", MB_ICONINFORMATION );
            else if( ret == IDCANCEL )
                 MessageBox( hwnd, "Wybrałeś \'Anuluj\' w oknie dialogowym!", "Test", MB_ICONINFORMATION );
           
        }
        break;
       
    case WM_CLOSE:
        DestroyWindow( hwnd );
        break;
       
    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;
       
        default:
        return DefWindowProc( hwnd, msg, wParam, lParam );
    }
    return 0;
}

BOOL CALLBACK DlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
    case WM_COMMAND:
        {
            switch( LOWORD( wParam ) )
            {
            case IDOK: EndDialog( hwnd, IDOK ); break;
            case IDCANCEL: EndDialog( hwnd, IDCANCEL ); break;
            }
        }
        break;
        default: return FALSE;
    }
    return TRUE;
}
P-31404
malan
» 2011-04-21 10:47:14
C/C++
INITCOMMONCONTROLSEX icc;
icc.dwSize = sizeof( INITCOMMONCONTROLSEX );
icc.dwICC = ICC_BAR_CLASSES; // toolbary, statusbary i tooltipy
InitCommonControlsEx( & icc );
Wrzuć to do
WinMain
.
P-31405
unreal
Temat założony przez niniejszego użytkownika
» 2011-04-21 10:49:34
Działa wielkie dzięki za pomoc.
P-31407
1 « 2 »
Poprzednia strona Strona 2 z 2