Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinAPI] WM_NOTIFY dla kontrolki Edit

Ostatnio zmodyfikowano 2013-05-04 13:04
Autor Wiadomość
berkov
Temat założony przez niniejszego użytkownika
[WinAPI] WM_NOTIFY dla kontrolki Edit
» 2013-05-03 14:13:04
hey ho!

Jak zwykle bede wdzieczny za kazda pomoc bo troche utknalem na wydawac by sie moglo prostym temacie.
Czy istnieje podobny kod powiadamiania (notification code) do WM_NOTIFY ale taki ktory jest wysylane dla kontrolki Edit?

Wyglada na to ze WM_NOTIFY dziala np z ListView ale nie jest wysylane dla EditControl (EDITTEXT)
Program ma zrobic nastepujace kroki:
1. Sprawdz czy komunikat pochodzi z danego identyfikatora (identifier) EditControl (tutaj: IDC_inv_comment)
2. Czy zostal on dwa razy klikniety
3. jezeli (1 && 2 == true) wtedy zawolal funkcje "writetextfromdb" przekazuja jej w paranmetrach miedzy innymi int tego identyfikatora.

Oto kod ktory stworzylem dla innej kontrolki - mianowicie dla ListView. Chodzi dokladnie o to samo tylko zeby chwytal kontrolke edit.

Kod:
C/C++
case WM_NOTIFY:
switch((( LPNMHDR ) lParam )->code )
{ case NM_DBLCLK:
    if(((( LPNMHDR ) lParam )->idFrom ) == IDC_inv_comment )
    { writetextfromdb( hwnd, IDC_inv_comment, "t_invoices", "inv_dok_code" ); }
} break; break;
dzieki
berkov
P-81880
berkov
Temat założony przez niniejszego użytkownika
» 2013-05-03 14:47:02
Probowalem tez tego:
C/C++
case WM_COMMAND:
{
    switch( LOWORD( wParam ) )
    {
    case IDC_inv_comment: if( HIWORD( wParam ) == WM_LBUTTONDBLCLK ) writetextfromdb( hwnd, IDC_inv_comment, "t_invoices", "inv_dok_code" );
       
    }
} break;

Ale tez nie dziala.

Dodam tylko ze:
Okno z ktorego pochodza notifications to dialog:
hdFVT = CreateDialog( GetModuleHandle( 0 ), MAKEINTRESOURCE( 1000 ), hwMain, WndProc_dFVT );

w resources.rc:
C/C++
LANGUAGE 0, SUBLANG_NEUTRAL
IDD_FVT DIALOGEX 0, 0, 319, 220 //gdzie IDD_FVT to oczywiscie 1000.
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Wprowadź dokument"
FONT 8, "Verdana"
{
    EDITTEXT IDC_inv_comment, 28, 113, 266, 25, ES_AUTOHSCROLL | WS_TABSTOP
}

probowalem nawet dodac w resources.rc styl CS_DBLCLKS ale tez nie zadzialalo.

chyba trzeba bedzie zrobic superklase...
P-81886
xevuel
» 2013-05-04 09:47:12
Fajnie by było jakbyś używał polskich znaków, korzystał ze znaczników [cpp] i jakoś normalniej formatował kod. Bez tego pomoc jest naprawdę utrudniona..

Gdy użytkownik dwa razy naciśnie klawisz myszy, wysyłane jest WM_LBUTTONDBLCLK. Ale nie do procedury rodzica kontrolki, tylko do swojej własnej, odpowiadającej m.in. za narysowanie kontrolki i innych standardowych czynności. Jak "podsłuchać" takie wiadomości? Użyj » Kurs WinAPI, C++ » Zaawansowanesubclassingu lekcja.
P-81948
berkov
Temat założony przez niniejszego użytkownika
» 2013-05-04 11:59:28
@xevuel,
dzieki ale problem w tym ze jestem czechem i przyznaje ze mam troche problemy z polska diakrytyka wiec mam nadzieje ze jakos dacie rade.
Pozatym jestes jednym z nielicznych ktory pisze z diakrytyka na necie, to taka specyficnza "kultura" ktora wywodzi sie z tego ze ludzie bez diakrytyki pisza szybciej, zwlaszcza w jezyku polskim.
W jezyku czeskim mamy latwiej bo by wywolac diakrytke uzywamy w standardowej klawiaturze specyficznych klawisz (cyfry) zamiast kombinacji jak wy w polsce.

co do znacznikow cpp to przyznaje ze nie wiem jak sie je robi, ale zaraz doczytam i zastosuje sie.

a teraz spowrotem do tematu. jak napisalem wczeniej wiem ze moge uzyc subclassingu ale pytanie czy istnieje inny sposob.

ps. co znaczy "fajniej formatowac kod"?
P-81968
xevuel
» 2013-05-04 12:13:24
Pozatym jestes jednym z nielicznych ktory pisze z diakrytyka na necie, to taka specyficnza "kultura" ktora wywodzi sie z tego ze ludzie bez diakrytyki pisza szybciej, zwlaszcza w jezyku polskim.
Poczytaj to forum, ludzi którzy mają > 500 postów (i w sumie nie tylko, ale pomińmy już tych którzy przychodzą tylko po rozwiązanie zadania domowego). http://www.wykop.pl/link/1420419 /jak-brzmialyby-piosenki-gdyby-nie-uzywano-polskich-znakow/. Polskich znaków można nie używać, gdy klient ma problemy z ich wyświetleniem, czy np. na chatach. W przypadku przeglądarek takiego problemu nie ma.

co do znacnzikow cpp to przyznaje ze nie wiem jak sie je robi, ale zaraz doczytam i zastosuje sie.
» KursyKurs STC kurs

ps. co znaczy "fajniej formatowac kod"?
Nie pisać w ten sposób:
C/C++
int main() { std::cout << "foo" << std::endl; if() { something; } switch(...) { switch(...) { break; } break; } }
, bo mniej więcej w ten sposób sformatowałeś kod w pierwszym poście.

a teraz spowrotem do tematu. jak napisalem wczeniej wiem ze moge uzyc subclassingu ale pytanie czy istnieje inny sposob.
Skoro ludzie na internetach mówią żeby użyć subclassingu, to zapewne nie. Ale jeśli nie wierzysz, możesz sobie sprawdzić: [MSDN] Edit Control
P-81970
berkov
Temat założony przez niniejszego użytkownika
» 2013-05-04 13:04:54
wiec zachecam do dalszego uzywania diakrytyki. ja jej uzywac nie bede
Wiesz o tym ze wystarczylo napisac "bez subclassingu nie dostaniesz notyfication o podwojnym kliknieciu z editboxu, pozdrawiam"?
i jeszcze raz sorry ze zmarnowalem tyle twojego czasu.
P-81984
« 1 »
  Strona 1 z 1