Dialog kutusu hakkında...

Dialog kutusu hakkında...

programci(cpp)

#include <windows.h>
#include "resource.h"

// ana mesaj döngü fonksiyonu --> tüm mesajlar bu fonksiyondan geçecektir
const char Classismi[] = "pencere";
// gelen mesajları işleyen kısım
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HWND hdialog;
switch(msg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}


static BOOL CALLBACK DialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{

switch (msg) {

case WM_COMMAND: //düğmeye basıldı mesajı

//hangi düğme olduğunu anlamak için mesajın alt parametresine bakıyoruz
switch (LOWORD(wParam))
{
case IDOK: // ilk düğme
EndDialog(hwndDlg,1);
return 1;

case IDCANCEL: // ikinci düğme
EndDialog(hwndDlg,0);
return 1;
}
break;

case WM_CLOSE: //pencere kapatıldı mesajı gelirse
EndDialog(hwndDlg,0); //pencereyi kapat
return TRUE;

}
return FALSE;
}

//program girişi ana fonksiyon
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hinstPrev, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
HWND hdialog;
MSG Msg;
//birinci adım: Pencere özelliklerini belirten bir sınıf değişkeni tanımlanıyor
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = Classismi;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Pencere tanımlama hatası!", "Hata!", MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// ikinci adım pencere oluşturma
hwnd = CreateWindow(Classismi,"Pencere başlığı",WS_OVERLAPPEDWINDOW, 200, 200, 300, 200,NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
hdialog = CreateDialog(

hInstance, // handle to application instance
MAKEINTRESOURCE(IDD_DIALOG1), // identifies dialog box template name
hwnd, // handle to owner window
NULL, // pointer to dialog box procedure
);
ShowWindow(hdialog, SW_SHOW);

// üçüncü adım: mesajların alınması ve ayrılması

while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;

}

Arkadaşlar bu kod ile bir dialog kutusu yapabiliyorum.Fakat LRESULT CALLBACK fonksiyonu altında dialog penceresini gizleyemiyorum ve de dialog penceresindeki tuşlara basılınca işlem yapamıyorum.
Acaba ne yapmam gerek?

(Kodlar visual c++ 6.0´da yazıldı)

2007-12-15 14:08:25