folder Tahribat.com Forumları
linefolder C - C++
linefolder C"De Windows Programlama



C"De Windows Programlama

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    garga
    garga's avatar
    Kayıt Tarihi: 29/Temmuz/2002
    Erkek


    Arkadaşlar C"de Windows programları yazmak istiyorum, yani arabirim olarak konsolü değil de Windows penceresi kullanacak, tıklamayı farkedebilecek programlar. Yalnız bunu C"de yapmak istiyorum, C++"da değil. C++ öğren diyeceksiniz, o ayrı. C"de bunu yapamaz mıyız. Cevaplarınızı bekliyorum...


    anca gidersin...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Deer_Skull
    Deer_Skull's avatar
    Kayıt Tarihi: 30/Temmuz/2003
    Erkek
    Yapmasına yaparsın ama bunu burdan anlatamam
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tagext
    tagext's avatar
    Üstün Hizmet Madalyası Başarı Madalyası
    Kayıt Tarihi: 25/Temmuz/2002
    Erkek
    olm hemen hemen tüm c++ editörleriyle c yazılabiliyor
    en azından ben visual studio ile yazıyodum

    ftw
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    garga
    garga's avatar
    Kayıt Tarihi: 29/Temmuz/2002
    Erkek
    Deer_Skull bunu yazdı:
    -----------------------------
    Yapmasına yaparsın ama bunu burdan anlatamam
    -----------------------------

    nerden anlata bilirsin? çok kısa anlatsan belki anlarım:) anlamazsam icqda falan anlatabilirmisin? ve ayrıca mailleşedebiliriz eğer yardım etmeye cidden niyetliysen...

    dalgarmaegr@yahoo.com

    anca gidersin...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Deer_Skull
    Deer_Skull's avatar
    Kayıt Tarihi: 30/Temmuz/2003
    Erkek
    tabiki yardım etmeyi istiyorum. Bizim amacımız türkiyede ki programlama kitlesini büyütmek.ıcq ye gel hemen sonra maile geçeriz
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Criminal2
    Criminal2's avatar
    Kayıt Tarihi: 04/Ağustos/2003
    Erkek
    şimdi beyler c ile c++ arasındaki dil farkılarını bırakın.. exe farkları vardır ör:

    Dos EXe'leri sağdece MZ header içeririken
    !!!
    win32'exeleri PE (çooooooooooooook eskileri NE) headerda içerir..
    işe bu header sizin import tablenınızı barındırır...

    eğer siz yok ben illa ki Hem pe headr kullanmayacam hemde win API kullanıcam derseniz....

    1.. adım.....
    Kernel32.dll base adresini bulmanız gerekir...
    ve aşağıdaki kodun İLK SIRADA yer alması gerekir.
    (Not: ESP CreateProc'dan kalma adresi içerir)
    ------------------------------------
    mov ecx,[esp]
    GetKrnlBaseLoop:
    xor edx,edx
    dec ecx
    mov dx,[ecx+03ch]
    test dx,0f800h
    jnz GetKrnlBaseLoop
    cmp ecx,[ecx+edx+34h]
    jnz GetKrnlBaseLoop
    ------------------------------------
    Fakat main mocroları nedenyle ilk sırada yer alamaz....
    nasıl başka türlü base adresi bulursunuz bilmiyorum..
    bence bu işi "C" ile yapmak pek mümkün gözükmüyor
    bence en iyisi PE headera dönmek...
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    garga
    garga's avatar
    Kayıt Tarihi: 29/Temmuz/2002
    Erkek
    Deer_SkuuL mail atcam dedin ama atmadın daha yaw bekliyorum....

    Bu arada Criminal2 kardeş, tamam güzel demişsin, güzel açıklamışsında o sölediğini nası yapcam onuda bi kısa anlatsan, nası başilıycağımı bilsem yapcamda bilmiyom ki... nerden buton falan çiziyosunuz menular falan nası çıkıyo hiç bilmiyom valla...

    anca gidersin...
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek
    mümkün tabi eski windowslar zamaninda windows proramları dostaki c editorlerinde yazılırdı. windowsun icinde bi visualstudio gibi bişe yoktu.

    win prog.exe yazip test ederdik, iflahimiz kesilirdi o windows acilana kadar sx makinede

    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Criminal2
    Criminal2's avatar
    Kayıt Tarihi: 04/Ağustos/2003
    Erkek
    lemar bunu yazdı:
    -----------------------------
    Deer_SkuuL mail atcam dedin ama atmadın daha yaw bekliyorum....

    Bu arada Criminal2 kardeş, tamam güzel demişsin, güzel açıklamışsında o sölediğini nası yapcam onuda bi kısa anlatsan, nası başilıycağımı bilsem yapcamda bilmiyom ki... nerden buton falan çiziyosunuz menular falan nası çıkıyo hiç bilmiyom valla...
    -----------------------------

    :)
    Sana www.microsoft.com/msdn/'den Win32 SDK'yı indirmeni öneririm...

    O çizim olayına gelince....

    Prensip olarak yazayım örneyi SDK'da var...

    Önce
    WNDCLASSEX
    'i doluracaksın
    (Adı sanı menüsü renki vb....)
    Bu Pencere için
    ÖR:
    ########################
    WNDCLASSEX wcex;
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = (WNDPROC)WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hinst;
    wcex.hIcon = LoadIcon(hinst,(LPCTSTR)dwIcon);
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    wcex.lpszMenuName = (char*)dwMenu;
    wcex.lpszClassName = szName;
    wcex.hIconSm = LoadIcon(wcex.hInstance,(LPCTSTR)dwIcon);
    ####################################
    Sonra bunu RegisterClassEx(&wcex); ile Kaydetmen gerekiyor.....

    Sonra bu window'u yaratmalısın...
    #########################################
    HWND hWnd;
    hWnd = CreateWindow(szName,szName, WS_OVERLAPPED |
    WS_CAPTION |
    WS_SYSMENU |
    WS_MINIMIZEBOX |
    WS_BORDER ,
    x,
    y,
    w,
    h,
    NULL,NULL,hinst, NULL);
    ShowWindow(hWnd,1);
    UpdateWindow(hWnd);

    ###################################################

    Fakat Window'un bir Denetleyici FOnsksiyonu olmak zorundadır...Ör: Bizimkinde "WndProc"

    ##################################################
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wP, LPARAM lP)
    {
    switch (message)
    {
    case WM_CREATE:
    CreateWindowEx(0,"BUTTON","İlk Buttonum",WS_CHILD|WS_VISIBLE,x,y,w,h,hWnd,(HMENU)ID,hInst,0); break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hWnd, message, wP, lP);
    }
    return 0;
    }
    ##############################################33
    Buradaki
    WM_CREATE Windows yaratılırken yapılacakalrı belirler

    DefWindowProc windowsa benim yerime sen yap mesajıdır(tam olarak böyle olmsada bizim işlemediğimiz bir çok mesajı windows işler)
    ###############################################

    Fakat bir konu daha o da "Message Loop" olayı
    window açık kaldığı sürece çalışmasını sağlıyor..
    Win32 SDK'da onun çok iyi bir açıklaması var....
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Criminal2
    Criminal2's avatar
    Kayıt Tarihi: 04/Ağustos/2003
    Erkek
    HolyOne bunu yazdı:
    -----------------------------
    mümkün tabi eski windowslar zamaninda windows proramları dostaki c editorlerinde yazılırdı. windowsun icinde bi visualstudio gibi bişe yoktu.

    win prog.exe yazip test ederdik, iflahimiz kesilirdi o windows acilana kadar sx makinede
    -----------------------------

    Ewet ama onlar NE header içerilerdi yani C++
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    garga
    garga's avatar
    Kayıt Tarihi: 29/Temmuz/2002
    Erkek
    ya abi kafayı yiycem ya... ben anlatamıyorum galiba...

    bakın en basit şekilde anlatayım ben sornumu ve LÜTFEN sizde en basit şekilde çözümü anlatın ok?

    -----------------------------------------------
    int x,y,z;
    printf("enter first number");
    scanf("%d",&x);
    printf("enter second number");
    scanf("%d",&y");
    z=x+y;
    printf("total of %d and %d is: %d",x,y,z);
    ------------------------------------------------

    hah şimdi bu basit programı yazdık ok? ben bunu mesela visual studioda normal Win 32 Console Application dan C++ Source File olarak yazıyom sora compile edinde noluyo exesi zartı zurtu çıkıyo dimi... hıms ama program nerde çalışıyo consolda... Hah ben istiyomki mesela bi tane windows penceresi çıksın x le y yi sorsun, sonra bi tanede butonu olsun ona basında çat z yi versin... ok?



    anca gidersin...
Toplam Hit: 5198 Toplam Mesaj: 13