Skocz do zawartości

DialogBox


Riddle

Recommended Posts

1. W jaki sposób ładuje się akceleratory do dialogBox'a??
Sądze że LoadAccelerator dobrze pobiera uchwyt!! I błąd chyba jest w translateAccelerator, a dokładniej w hwnd.

2. Czy można w dialogBox'u w polu CAPTION po lewej stronie (przed tekstem) umieścic ikonkę??

3. Dlaczego nie mój program nie może załadować ikony do tray'a-> mam tylko puste pole?? Moja ikona ma rozmiary 32*32 w 256 kolorach.

tray.hIcon = Loadicon(hInst,(MAKEINTRESOURCE(113))); //gdzie 113 to numer mojej ikony!!

Link do komentarza
Udostępnij na innych stronach

1. Nic nie stoi na przeszkodzie aby do dialogboxow przypisac akcelerator klawiatury. Blad pewnie lezy w zlym napisaniu algorytmu przez ciebie.

2. Mozna, ale sam musisz odrysowywac taki caption - rowniez z tekstem. Zapoznaj sie z takimi komunikatami jak WM_NCPAINT.

3. Jezeli nie twoj to co sie martwisz? :)  Na pewno blad lezy...patrz na punkt nr. 1.

Link do komentarza
Udostępnij na innych stronach

Akceleratory, gdzie mam błąd??

HWND hwnd; \\globalna
HACCEL hAccel; \\globalna
WinMain(..)
{
    DialogBox(..,...,hwnd,..);
    hAccel = LoadAccelerators(hInst,"AKCELERATOR");
    
    while(GetMessage(&msg, NULL, 0, 0)) 
    {
         if(!TranslateAccelerator (hwnd, hAccel, &msg))
         {
             TranslateMessage(&msg); 
             DispatchMessage(&msg); 
          }
     }
      return ...;
}

W funkcji powrotnej dialogBox'u nie wykorzustuje nigdzie zmiennej hAccel;

A jeśli chodzi o pytanie 3, to sorki ale pomyliłem się, chodziło tu o mój program!!!

Link do komentarza
Udostępnij na innych stronach

DialogBox powoduje utworzenie okna modalnego, dlatego...ja tez zle odpowiedzialem, ale nie mozna uzyc akceleratorow bo jak wyzej. Poprostu jak wywolujesz funkcje DialogBox to dlasza czesc kodu dopiero wykonuje sie po zamknieciu DialogBoxa. Aby uzyc akceleratory w oknach dialogowych to wywolaj je poprzez CreateDialog.

Link do komentarza
Udostępnij na innych stronach

Zrobiłem tak jak powiedziałeś i nadal nie che działać!
Dialog box'a tworze przez CreateDialog, zmodyfikowałem pętle komunikatową i podczas ładowania akceleratorów nie przypisuje mi uchwytu.

---w WinMain--zaraz po utworzeniu dialogBoxu
hAccel = LoadAccelerator(hInst,"AKC");

hAccel - zmienna globalna
hInst - hinstance do dialog boxu
"AKC" - nazwa skrótów klawiaturowych

Gdzie jest błąd???

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...