hejka. Możecie mnie naprowadzić, dlaczego po wykonaniu owego kodu nie pojawia mi się dialog?
/// DIALOGI
void PixelsToDialogUnits( RECT & rc );
BOOL CALLBACK Procedura_DodajGracza( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam );
void f_CreateDialog();
///======================================
HGLOBAL hgbl;
DLGTEMPLATE * pdt;
DLGITEMTEMPLATE * pdit;
WORD * pw;
LPWSTR pws;
int nchar;
void PixelsToDialogUnits( RECT & rc ){
LONG base = GetDialogBaseUnits();
int baseX = LOWORD( base );
int baseY = HIWORD( base );
rc.left = MulDiv( rc.left, 4, baseX );
rc.right = MulDiv( rc.right, 4, baseX );
rc.top = MulDiv( rc.top, 8, baseY );
rc.bottom = MulDiv( rc.bottom, 8, baseY );
}
WORD * lpwAlign( WORD * in ){
ULONG_PTR ul =( ULONG_PTR ) in;
ul += 3;
ul >>= 2;
ul <<= 2;
return( WORD * ) ul;
}
///======================================
BOOL CALLBACK Procedura_DodajGracza( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam ){
switch( Msg )
{
case WM_INITDIALOG:
{
}
break;
case WM_COMMAND:
{
}
break;
default: return FALSE;
}
return TRUE;
}
void f_CreateDialog(){
GlobalUnlock( hgbl );
DialogBoxIndirect( *hInstance,( DLGTEMPLATE * ) hgbl, hwnd,( DLGPROC ) Procedura_DodajGracza );
GlobalFree( hgbl );
}
- main.cpp - tworzenie dialogu
hgbl = GlobalAlloc( GMEM_ZEROINIT, 1024 );
pdt =( DLGTEMPLATE * ) GlobalLock( hgbl );
pdt->style = WS_POPUP | WS_BORDER | WS_SYSMENU | DS_MODALFRAME | WS_CAPTION;
pdt->cdit = 2;
RECT rcDlg = { 10, 10, 200, 150 };
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 Gracza", - 1, pws, 50 );
pw += nchar;
pw = lpwAlign( pw );
pdit =( DLGITEMTEMPLATE * ) pw;
///--------------------------------------------------------------------------------------
RECT rcBtn = { 50, 100, 100, 25 };
PixelsToDialogUnits( rcBtn );
pdit->x =( short ) rcBtn.left;
pdit->y =( short ) rcBtn.top;
pdit->cx =( short ) rcBtn.right;
pdit->cy =( short ) rcBtn.bottom;
pdit->id = IDOK;
pdit->style = WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON;
pw =( WORD * )( pdit + 1 );
* pw++ = 0xffff;
* pw++ = 0x0080; // przycisk
pws =( LPWSTR ) pw;
nchar = 1 + MultiByteToWideChar( CP_ACP, 0, "OK", - 1, pws, 50 );
pw += nchar;
* pw++ = 0; // brak dodatkowych danych
///----------------------------------------------------------------------------
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