Witam. utworzyłem dialog wedlug poradnika http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Okna-dialogowe-cz-7/190.
gdy tworze dialog modalny funkcją:
DialogBoxIndirect( hThisInstance,( DLGTEMPLATE * ) hgbl, hwnd,( DLGPROC ) DialogProc );
widze swój dialog, jednak ja potrzebuje niemodalnego dialogu. Z poprzednich kursów CreateDialog() wywoływało dialog niemodalny, więc spróbowałem funkcji z powyższego kursu:
CreateDialogIndirect( hThisInstance,( DLGTEMPLATE * ) hgbl, hwnd,( DLGPROC ) DialogProc );
Niestety teraz nie widzę żadnego dialogu jakbym w ogóle go nie wyświetlał. Macie jakies pomysły?
Tutaj tworze okno dialogu i go wyświetlam:
{ /// okno pulpitu
WINDOWINFO Info;
Info.cbSize = sizeof(WINDOWINFO);
GetWindowInfo(GetDesktopWindow(), &Info);
int x = Info.rcClient.right -150 -0;
int y = Info.rcClient.bottom -23 -30;
hgbl = GlobalAlloc( GMEM_ZEROINIT, 1024 );
pdt =( DLGTEMPLATE * ) GlobalLock( hgbl );
pdt->style = WS_POPUP;
pdt->cdit = 1;
RECT rcDlg = { x, y, 150, 23 };
PixelsToDialogUnits( rcDlg );
pdt->x =( short ) rcDlg.left;
pdt->y =( short ) rcDlg.top;
pdt->cx =( short ) rcDlg.right;
pdt->cy =( short ) rcDlg.bottom;
pw =( WORD * )( pdt + 1 );
* pw++ = 0x0; // brak menu
* pw++ = 0x0; // predefiniowana klasa dialogu
pws =( LPWSTR ) pw;
nchar = 1 + MultiByteToWideChar( CP_ACP, 0, "Dodaj wpis...", - 1, pws, 50 );
pw += nchar;
pw = lpwAlign( pw );
pdit =( DLGITEMTEMPLATE * ) pw;
/// EDIT
pw = lpwAlign( pw );
pdit =( DLGITEMTEMPLATE * ) pw;
RECT rcEdit = { 25, 10, 150, 25 };
PixelsToDialogUnits( rcEdit );
pdit->x =( short ) rcEdit.left;
pdit->y =( short ) rcEdit.top;
pdit->cx =( short ) rcEdit.right;
pdit->cy =( short ) rcEdit.bottom;
pdit->id = 1000;
pdit->style = WS_CHILD | WS_VISIBLE | WS_BORDER;
pw =( WORD * )( pdit + 1 );
* pw++ = 0xffff;
* pw++ = 0x0081; // edit box
pws =( LPWSTR ) pw;
nchar = 1 + MultiByteToWideChar( CP_ACP, 0, "Tekst", - 1, pws, 50 );
pw += nchar;
* pw++ = 0; // brak dodatkowych danych
}
a po wyświetleniu głównego okna próbuje wywołac dialog:
ShowWindow (hwnd, nCmdShow);
GlobalUnlock( hgbl );
CreateDialogIndirect( hThisInstance,( DLGTEMPLATE * ) hgbl, hwnd,( DLGPROC ) DialogProc );
GlobalFree( hgbl );