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

[WinAPI] Jak poprawnie pisać program, gdzie umieszczać poszczególne jego elementy?

Ostatnio zmodyfikowano 2011-05-31 07:04
Autor Wiadomość
GoldWolf
Temat założony przez niniejszego użytkownika
[WinAPI] Jak poprawnie pisać program, gdzie umieszczać poszczególne jego elementy?
» 2011-05-30 11:09:42
Szukałem sposobu zmiany rozmiaru czcionki i trafiłem na takie przykład:

C/C++
#include <windows.h>
#include <commctrl.h>

HWND hEdit, hButton, hWnd;
HFONT hFont; //uchwyt do czcionki

CHAR szClassName[] = "OknoRodzica";
HINSTANCE * hInst;

LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );

INT WINAPI WinMain( HINSTANCE hInstance, HINSTANCE, LPSTR lStart, INT nShow )
{
    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;
   
    hWnd = CreateWindowEx( 0, szClassName, "Użycie edit'a", WS_OVERLAPPEDWINDOW, 20, 20, 600, 300, 0, 0, * hInst, 0 );
    ShowWindow( hWnd, nShow );
    MSG msgs;
    while( GetMessage( & msgs, 0, 0, 0 ) )
    {
        TranslateMessage( & msgs );
        DispatchMessage( & msgs );
    }
    return msgs.wParam;
}

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wPar, LPARAM lPar )
{
    switch( msg )
    {
    case WM_CREATE:
       
        //tworzymy kontrolkę edit
       
        hEdit = CreateWindowEx( WS_EX_CLIENTEDGE, WC_EDIT, "Tu mozna cos napisac", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | WS_VSCROLL | WS_HSCROLL,
        10, 10, 570, 200, hwnd, 0, * hInst, 0 );
       
        //ustawiamy czcionkę
        hFont = CreateFont( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Arial" );
        SendMessage( hEdit, WM_SETFONT,( WPARAM ) hFont, 0 );
       
        //tworzymy przycisk
        hButton = CreateWindowEx( 0, WC_BUTTON, "Wyczyść tekst w kontrolce", WS_CHILD | WS_VISIBLE, 10, 220, 570, 40, hwnd,( HMENU ) 1, * hInst, 0 );
        break;
       
    case WM_COMMAND:
       
        //obsługa przycisku
       
        if( wPar == 1 ) SetWindowText( hEdit, "" );
       
        //funkcją SetWindowText czyścimy tekst w kontrolce
       
        break;
    case WM_DESTROY:
        //przed usunięciem okna
       
        DeleteObject( hFont );
        //zwalniamy czcionkę
       
        DestroyWindow( hEdit );
        //zwalniamy kontrolke edit
       
        DestroyWindow( hButton );
        //zwalniamy przycisk
       
        PostQuitMessage( 0 );
        break;
        default:
        return DefWindowProc( hwnd, msg, wPar, lPar );
    }
    return 0;
}

Pytam o metodologie, bo w kursie tutaj zamieszczonym tworzenie niektórych elementów odbywa się w ciele klasy okna. Ma to w ogóle jakieś znaczenie? W msdn jest podobnie jak tutaj.

Tak na chłopski co umieszczać w "INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR lStart,INT nShow)", a co w "LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wPar,LPARAM lPar)". Czy w ogóle się tym przejmować?
P-33652
DejaVu
» 2011-05-30 12:45:37
To Twoja sprawa jak zorganizujesz sobie kod :) Sposób organizacji kodu zależy przede wszystkim od posiadanej wiedzy i doświadczenia, a nie od tego jak się powinno coś robić.
P-33655
GoldWolf
Temat założony przez niniejszego użytkownika
» 2011-05-30 13:00:55
A co mówi doświadczenie, wg. mnie lepiej jest podczas uruchamiania aplikacji. Czyli nie w ciele okna.
A z drugiej strony miałbyś strukturę okna i z nim tworząc cała budowę. Pytałem, bo czasami po prostu są pewne pewniki.
Czyli wszystko co nie jest oknem nie wrzucam do okna. Dla mnie są dwie drogi...?
P-33656
DejaVu
» 2011-05-30 14:42:19
Do wielu rzeczy w programowaniu dochodzi się empirycznie (doświadczalnie) :)
P-33659
GoldWolf
Temat założony przez niniejszego użytkownika
» 2011-05-31 07:04:08
Dobrze mamo ;-P
P-33680
« 1 »
  Strona 1 z 1