Mrowqa Temat założony przez niniejszego użytkownika |
[WinAPI] Problem z przykładem » 2011-05-18 18:18:23 Witam! Wczoraj uczyłem się tej lekcji Okno dialogowe, cz.7. Problem polega na tym, że u mnie ten przykład nie chce działać ;/ Tzn skopiowałem go i sprawdziłem wszystko. Dialog się wywołuje ( sprawdziłem w procedurze przez MessageBox ), ale jest niewidoczny ;/ Korzystam z VC++ 2010. Nie wiem w czym problem :/ Pewnie kolejna 'osobliwość' Visuala ... ( albo bład w przykładzie :P ) Pozdrawiam, Mrowqa |
|
DejaVu |
» 2011-05-18 22:37:53 Bo tam nie ma kompletnego kodu i nie da rady go złożyć tylko i wyłącznie poprzez kopiowanie zamieszczonych fragmentów. |
|
Mrowqa Temat założony przez niniejszego użytkownika |
» 2011-05-19 15:35:37 Przez analogię też starałem się to zrobić ... Poprawiłem trochę ( kodowanie VC++ ), ale nie chce wejść ;/ A kod po złożeniu w całość ma trochę sensu ( np. button do edita taki sam - składniowo :P ). W każdym razie nie jest mi to potrzebne ( na razie :D ) i jak co to poszukam gdzie indziej :P ( albo tu napiszę ^^ )
Dzięki :D
Pozdrawiam,
Mrowqa |
|
malan |
» 2011-05-20 16:14:37 Może procedurę dialogową masz źle napisaną? |
|
Mrowqa Temat założony przez niniejszego użytkownika |
» 2011-05-21 14:15:56 Wątpię :P To było w lekcji: BOOL CALLBACK DialogProc( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam ) { return false; }
Mogę wkleić kod, który złożyłem... ( o ile chcecie :D ) |
|
malan |
» 2011-05-21 14:49:17 Taką procedurę masz w kodzie? :O |
|
Mrowqa Temat założony przez niniejszego użytkownika |
» 2011-05-21 17:13:13 Nie :P Taka była w przykładzie :D Ja na razie się uczę. Głównie mi chodzi o to by działało :P Procedurkę łatwo 'nabazgrolić' :D To to co stworzyłem: BOOL CALLBACK DialogProc( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam ) { if( Msg == WM_COMMAND ) { MessageBox( hwnd, L"Coś przycisnąłeś ...", L"Ehh... znowu?", MB_ICONWARNING ); EndDialog( hwnd, 0 ); } return false; }
i od razu ( skoro włączyłem Visuala :D ) kodzik tworzenia okna: HGLOBAL hgbl; DLGTEMPLATE * pdt; DLGITEMTEMPLATE * pdit; WORD * pw; LPWSTR pws; int nchar;
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; * pw++ = 0x0; pws =( LPWSTR ) pw; nchar = 1 + MultiByteToWideChar( CP_ACP, 0, "Mój dialog", - 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; pws =( LPWSTR ) pw; nchar = 1 + MultiByteToWideChar( CP_ACP, 0, "OK", - 1, pws, 50 ); pw += nchar; * pw++ = 0;
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;
pws =( LPWSTR ) pw; nchar = 1 + MultiByteToWideChar( CP_ACP, 0, "Tekst", - 1, pws, 50 ); pw += nchar; * pw++ = 0;
GlobalUnlock( hgbl ); DialogBoxIndirect( GetModuleHandle( NULL ),( DLGTEMPLATE * ) hgbl, hwnd,( DLGPROC ) DialogProc ); GlobalFree( hgbl );
Sry za zaśmiecanie forum :P Więc gdzie problem ?? Gdzie przykład się mylił ( albo moje bezmyślne kopiowanie :P - ale potem sprawdziłem normalnie i analogicznie ... ). Pozdrawiam, Mrowqa |
|
malan |
» 2011-05-21 20:24:58 |
|
« 1 » 2 |