Forum: Duyurular RSS
Walter Bright'ın Windows 7 Testi
Avatar
Salih Dinçer #1
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Walter Bright'ın Windows 7 Testi
Hep Linux'dan konuşuyoruz...

Ancak gerçek şu ki Windows kullanıcıları dünyada daha fazla gibi görünüyor...:(

Onlara aptallar demek istiyorum ama saygısızlığın lüzumu yok. Ancak Windows'un insanı aptallaştırıdğı bir gerçek...:)

Walter, şurada bir test yapmış: http://forum.dlang.org/thread/k4okhm$vtg$1@digitalmars.com

Bu başlığı okuyup kendi aramızda tartışma yapabileceğimizi zannediyorum. Belki alt başlıklar DMD for Win'nin 64 biti desteklemesi ve ürettiği kodun küçüklüğü olabilir...

Evet, gerçekten de D ile Windows'da çalıştığımda (tabii ki henüz 32 bitte...), Linux'da 500 KB.'ı aşan uygulamalar Windows'da duruma göre 300 KB.'ın bile altına oluyor. Hele std.stdio'yu kullanmadığınızda 100 küsür KB. derleme boyutları görüyorum...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
saydin77 #2
Üye Şub 2010 tarihinden beri · 16 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
selam,

Ancak Windows'un insanı aptallaştırıdğı bir gerçek...

windows insanları neden aptallaştırsın ki ?


Hele std.stdio'yu kullanmadığınızda 100 küsür KB. derleme boyutları görüyorum...

bana şu an 100 küsür KB. devasa bir boyut gibi geliyor :)
gcc ile 3-4 kb tek pencereli windows form uygulaması yapmıştım, ki hello yazdırmak sadece 2 kb civarı (tabi özel ayarlarla)
64 bit için olanın da farklı olacağını zannetmiyorum, hiç denemedim.
bence dmd'nin bu konuya biraz eğilmesi lazım, çünkü bu konuya takıntılı insanlar da var
benim gibi ;)
acehreli (Moderatör) #3
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bizi çalıştıran ortamla bizim yazdığımız kodlar arasında o dilin çalışma ortamı bulunur:

çalıştıran ortam (örneğin, konsol) | çalışma ortamı (runtime) | main()

"Merhaba dünya" programlarının küçük olmamasının iki nedeni var:

1) Çalışma ortamı

2) "Merhaba dünya"yı yazdıran kütüphane

Çalışma ortamı için yapacak bir şey yok. Ortamdan alınan program parametrelerinin taranması ve main'i geçirilecek duruma getirilmeleri, stdin gibi akımların kurulmaları, başka static nesnelerin kurulmaları, vs.

D'nin çalışma ortamının C'den farklı işleri var: çöp toplayıcılık, dilimlerin ve eşleme tablolarının otomatik olarak büyümeleri, hata atma düzeneğini bilmek ve atıldığında 'void main' programın bile hata kodu üretmesini sağlamak, vs.

Kütüphane konusunda ise programın küçük olabilmesi için programın shared olarak bağlanması gerekir. Gördügüm kadarıyla libphobos'un .so olanı yok. O yüzden writeln'ın kodlarının her programa gömülmesi gerekiyor. (Bu konudan emin değilim.)

Ama evet, bir şeyler yapılabilir. :)

Ali
saydin77 #4
Üye Şub 2010 tarihinden beri · 16 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
üstad,
ben hobi olarak uğraştığım için boyut olayına biryerde takılıyorum, normalde çok önemli bir durum değil diye düşünüyorum
büyük projeler için bir exe veya dll dosyası (*nix için bunların karşılığı neyse), 100-200-300 kb fazla olsun, sorun olmamalı

deneme fırsatım olmadı, obj dosyalarında durum nedir acaba ?

obj'ların büyük olması genel olarak projenin çok büyük boyutlarda olacağını düşündürüyor bana.
yani c/c++ ile yazılmış kütüphane 2 mb iken d ile yazılmış eşdeğeri 5-6 mb olursa D için büyük bir eksi olur gibi geliyor :(
bu durum çoğu programcıyı D'den baştan soğutacaktır diye düşünüyorum
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Benim için D program yazımı şöyle gelişiyor: yaz, derle, çalıştır. Programın boyutuna hiçbir noktada bakmıyorum. Önemli değil. Veya, şimdi önemli olmamalı. Nasıl olsa düzelir.

On sene önce çalıştığım firmadaki C++ programının boyutu 40 küsur megabayt idi (herhalde 'debug' sürümü olmalı; hatırlamıyorum). Firmanın ürünleri başarıyla çalışıyordu.

Şimdi çalıştığım firmada C programları bile bir kaç megabayt. (Doğrusu, tam da bu sene içinde partition'a sığmak sorun olmaya başladı.)

Bazı programlar static bağlanıyor, bazıları dinamik. Boyutun büyük parçası static bağlamadan geliyor. Aynı kütüphane birden fazla programın hepsinde de gömülü durumda.

D forumlarında senede bir kaç kere programların neden büyük olduğu soruluyor ve yanıtlar hep "önemli değil", "yakında düzelir", "gdc'yi denedin mi", vs. gibi oluyor. Benim anladığım kadarıyla çoğunluk da bu konuya önem vermiyor.

Ali
Avatar
Salih Dinçer #6
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #2
Hoş geldiniz S.Aydın...

Elbette "Windows aptallaştırır" ifadesi bir görüştür, olgu değil. Üstelik bu benim görüşüm de değil. Sanırım bu görüşe sempati beslemeyenlerin fikrini kolaylaştırmak da kolay değil. Yine de bir kaç örnek verebilirim:

Mesela internet reklamlarında uygulanan ve kullanıcıyı aptal yerine koyan Windows penceresi görünümlü reklam uygulamalarını düşünün. Artık Windows kullanıcıları o kadar çok aptalca ileti ile karşılaşır ki reklamlarda bu gördüğü şeyi hiç okumadan tıklar. Linux kullanıcısı ise bir hata iletisi ile karşılaşırsa (bu çok az olur!) dikkatlice inceler ve kaynağını bulmaya çalışır. Aynı durum yazılım kurmada da (sürekli next next diye geçmede de vardır!) ama Linux kullanıcısı komutlar ile iş yaptığı için hiç bir şeyi es geçemez dikkatlice inceler...

Windows kullanıcısı bir şey taktığı gibi çalışmasını ister. O yüzden autorun'lar, plug&play'ler ve daha nice kolaylıklar ile doludur. Buna rağmen bir ISO dosyasını üçüncü parti bir yazılıma ihtiyaç duymadan mount edemez. O da virüslü çıkar sonra ne oluyor bu bilgisayara der ve aptallaşır. Tek yapacağı format atmaktır...:)

Format ile Windows adeta bütünleşmiştir. Bir şeyler yavaşladığında veya aptallaştığında kullanıcının ilk aklına gelen "şunu gidip format attırayım da geleyim" olur. Hatta bu tür kullanıcılar fazla dosyanın bilgisayarı yavaşlatıracağını zanneder. Çünkü geçmişte bellek sorunları (yetersiz disk alanı) gibi şeyler ile karşılaşmıştır. O yüzden bilgisayarım penceresine girdiğinde orada kırmızı barlar görmek istemez görürse ürker bir şey olur zanneder.

Linux kullanıcısı her şeyin otomatik mount olmasını istemez ama gerekirse USB aygıtları gibi otomatik mount olur. ISO dosyasını ise çok basit bir komut ile tıpkı bir diskin içine bakıyor gibi ekrana getirir. Bir çok işini komut satırı ile hızlıca halledebilir. İstediği her şeyi hiç bir kısıtlama yaşamadan yapabilir. Örneğin internette biriyle sohbet ederken tüm sistem dosyalarını silebilme yetkisine sahiptir ve buna rağmen Linux çalışmaya devam eder. Oysa Windows kendine ait tek bir dosyanın bile taşınmasına kesinlikle izin vermez. Çünkü tüm kontrol ondadır ne derse onu yapmamız icap eder.

Standart Windows kullanıcısı için komut satırı bir kabustur. Gördüğü siyah ekranı itici bulur ve bir şey o ekranda çalışıyorsa hemen uzaklaşır. Hatta virüs sanar afallar gider GUI yazılımlarına kendini emanet eder. Orada hangi tuş varsa ona tıklar.

Neyse o kadar çok şey yazabilirim ki vakit yetmez...:)

saydin77:
bana şu an 100 küsür KB. devasa bir boyut gibi geliyor :)
Ali hocamın yazdıklarına ek olarak belirtmeliyim ki yazılım main() işlevi ile başlatılırsa farklı WinMain() işlevi ile başlarsa daha farklı nitelik ve boyutlar meydana geliyor. Ama genelde Windows ortamında 100 KB.'lık bir standart derleme boyutu söz konusu ki bunun nedenleri yukarıda sıralandı...

Belki de yazılımın derlendiği ana dosya boyutunun büyük olmasında endişelenecek bir şey söz konusu değildir. Aksine küçük olduğunda ileride ne tür illegal durumlar ile karşılaşıp göçme olasılığını düşünmek gerekir. Yoksa D'nin çok farklı bir kod ürettiğini sanmıyorum ve yaptığı C ile aynı; gdi32.lib kütüphanesine erişmek.

Bakınız aşağıda D ile yazılmış bir Windows API örneği var ve derleme boyutu sadece 109,596 KB.:

OBJ dosyası ise 1,872 KB. tabi bu aldatıcı bütün iş DLL'de...:)

//  dmd winsamp -L-Subsystem:Windows
    pragma(lib, "gdi32.lib");
 
    import core.runtime, std.c.windows.windows;
 
extern(Windows) {
  int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow) {
    WNDCLASS wndclass;
             wndclass.style         = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
             wndclass.lpfnWndProc   = &WindowProc;
             wndclass.cbClsExtra    = 0;
             wndclass.cbWndExtra    = 0;
             wndclass.hInstance     = hInstance;
             wndclass.hIcon         = LoadIconA(null, IDI_APPLICATION);
             wndclass.hCursor       = LoadCursorA(null, IDC_CROSS);
             wndclass.hbrBackground = cast(HBRUSH)GetStockObject(WHITE_BRUSH);
             wndclass.lpszMenuName  = null;
             wndclass.lpszClassName = "DWndClass";
 
    if (!RegisterClassA(&wndclass)) return 0;
 
    HWND hWnd = CreateWindowA("DWndClass",                  // window class name
                              "Merhaba Windows API'si..."// window caption
                              WS_THICKFRAME   |
                              WS_MAXIMIZEBOX  |
                              WS_MINIMIZEBOX  |
                              WS_SYSMENU      |
                              WS_VISIBLE,           // window style
                              CW_USEDEFAULT,        // initial x position
                              CW_USEDEFAULT,        // initial y position
                              600,                  // initial x size
                              400,                  // initial y size
                              HWND_DESKTOP,         // parent window handle
                              null,                 // window menu handle
                              hInstance,            // program instance handle
                              null);                // creation parameters
 
    ShowWindow(hWnd, iCmdShow);
    UpdateWindow(hWnd);
 
    MSG msg;
    while (GetMessageA(&msg, null, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessageA(&msg);
    }
    return msg.wParam;
  }
 
  LRESULT WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    switch (message) {
        case WM_PAINT:
            PAINTSTRUCT ps;
            HDC  dc = BeginPaint(hWnd, &ps);
            scope(exit) EndPaint(hWnd, &ps);
            RECT r;
            GetClientRect(hWnd, &r);
            HFONT font = CreateFontA(80, 0, 0, 0, FW_EXTRABOLD, FALSE, FALSE,
                                     FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
                                     DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial");
            HGDIOBJ old = SelectObject(dc, cast(HGDIOBJ) font);
            SetTextAlign(dc, TA_CENTER | TA_BASELINE);
            TextOutA(dc, r.right / 2, r.bottom / 2, "D Windows'da", 12);
            DeleteObject(SelectObject(dc, old));
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            break;
    }
    return DefWindowProcA(hWnd, message, wParam, lParam);
  }
}
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Bu mesaj 4 defa değişti; son değiştiren: Salih Dinçer; zaman: 2012-10-12, 10:24.
Avatar
Salih Dinçer #7
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Az önce ilginç olan bazı veriler elde ettim...:)

Yukarıdaki örneği DMD'nin 2.051'i ile derlediğimde, exe'nin boyutu 70,172 KB.'a düşüyor! Bu 40 KB.'lık farkın kütüphane içeriğinin değişmesinin neden olabileceğine inanamıyorum...

Bir de void main(){} satırını ekledim (tabi doğal olarak WinAPI çalışmıyor...) ama bu sefer de dosya boyutu yine aynı sürümde 105,500 KB. oldu! Aynı şeyi DMD'nin 2.058 sürümünde yaptığımda yine ~40 KB.'lık bir veri eklendiğini gördüm. Tabi bu değerler Win32 için geçerli.

Demek ki tek başına main() işlevi bile onlarca kilobayt. Yani standart run-time bu boyutlardaysa işin içine başka şeyler girdiğinde yüzlerce kilobayt olmasına şaşmamak gerekir. Bakalım Win64 sürümünde durum hangi boyutta olacak. Gördüğüm kadarıyla std.stdio'nın son hali desteklemeye başlamış bile...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
saydin77 #8
Üye Şub 2010 tarihinden beri · 16 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #6
cevaplarınız için çok teşekkürler :)

ali hocam,

Firmanın ürünleri başarıyla çalışıyordu.

sanırım asıl mesele budur
işin içine ticaret girdimi ne kb kalır ne de mb, hatta gb'ye kadar yolu var :)
yatırımcı için önemli olan programın başarılı çalışması ve ihtiyaçlarını karşılaması
programcının kriterlerini siz aktif olarak bu işi yaptığınız için daha iyi bilirsiniz
kısaca, üreteceği ürünü daha az zaman ve kalori harcayarak, akıl sağlığını bozmadan meydana getirebilmesi diye düşünüyorum
bu aşamada tabiki boyutun önemi olmayacaktır
örnek olarak ben, bana lazım olan sistem programlarını C ile yazıyorum, iş arayüze geldiğinde lazarus'tan vazgeçemiyorum, ki bir pencere bir düğme 1.8 mb ;) ama tasarlama ve kodlama çok kolay (ve cross platform) olduğundan işimi hızlıca halledebiliyorum

belki D için gelişmiş bir IDE/RAD kadar önemli değil ama bazı insanların bu dile sempati duyabilmesi için gereken kriterlerden küçük bir tanesi diye düşünüyorum

Salih usta,

...kullanıcıyı aptal yerine koyan Windows penceresi görünümlü reklam uygulamalarını düşünün...

düşünüyorum ....
reklam pencereleri tabi ki insanı aptal yerine koyan uygulamalar ama bunun işletim sistemiyle ilgili olduğunu düşünmüyorum, olsa olsa aldatılma olayına alet olan şeyin popülerliği ile ilgilidir
mesela zırt pırt açılan sahte sohbet pencereleri, sahte facebook pencereleri, sahte twitter pencereleri örnek olabilir mi ?
yani linux daha çok kullanılsaydı linux görünümlü reklam pencereleri olacaktı

sürekli linux kullanıcıları doğal olarak bilinçli bilgisayar kullanıcılarıdır
ama aynı şeyler bilinçli windows kullanıcıları için de geçerlidir
yani bilinçli windows kullanıcıları da;

 - her programı körü körüne next next diyip geçmez,
 - formatı birkaç senede bir atar, belki de hiç atmayanlar vardır, windowsu çok aktif kullandığı halde 3-4 yıldır format atmayan arkadaşlarım var ordan biliyorum, ki ben nezaman format attığımı hatırlamıyorum bile
 - vs. vs.

olaya işletim sistemi açısından değil de onu kullananlar açısından bakmak lazım

microsoft ticari bir şirket ve başarı için bilgisayar kullanıcılarını kendine bağlamak zorunda
bunu da her seviyeden insanın bilgisayardan ne istediğini bildiği için başarıyor
sonuçta para kazanıyor ve daha çok kazanmak için "biz sizin için bunu da düşündük" demeye devam etmesi gerekir

yanlış anlaşılma olmasın, linux'u senelerdir zevkle kullanırım
linux olmak zorunda ve asla yeri doldurulamaz ama daha fazla gelişmeli windows'la sıkı rekabet içinde olmalı
linux'un microsoft'u her açıdan solladığını düşünüyorum da, canı yanan eşek attan hızlı koşar misali microsoft ne yapıp edip yine zirvede olmayı başaracaktır

... diye düşünüyorum :)
saydin77 #9
Üye Şub 2010 tarihinden beri · 16 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #7
netten kopyaladığım aşağıdaki örneği gcc ile derlediğimde obj dosyasının 1.848 byte olduğunu gördüm
yani d ile olan karşılığının hemen hemen aynısı

standart derlemede 9216 byte exe oluşuyor (nostdlib, nostartfiles falan kullanmadan)
dmd'nin link olayında problem sanırsam

digitalmars'ın linkeri optimize edilebiliyormu acaba ?
yada başlangıç dosyası büyük olabilir mi ?

#include <windows.h>
 
const char g_szClassName[] = "myWindowClass";
 
// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
        case WM_CLOSE:
            DestroyWindow(hwnd);
        break;
        case WM_DESTROY:
            PostQuitMessage(0);
        break;
        default:
            return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    return 0;
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc;
    HWND hwnd;
    MSG Msg;
 
    //Step 1: Registering the Window Class
    wc.cbSize         = sizeof(WNDCLASSEX);
    wc.style         = 0;
    wc.lpfnWndProc     = WndProc;
    wc.cbClsExtra     = 0;
    wc.cbWndExtra     = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor         = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = g_szClassName;
    wc.hIconSm         = LoadIcon(NULL, IDI_APPLICATION);
 
    if(!RegisterClassEx(&wc))
    {
        MessageBox(NULL, "Window Registration Failed!", "Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }
 
    // Step 2: Creating the Window
    hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        g_szClassName,
        "The title of my window",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
        NULL, NULL, hInstance, NULL);
 
    if(hwnd == NULL)
    {
        MessageBox(NULL, "Window Creation Failed!", "Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }
 
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);
 
    // Step 3: The Message Loop
    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}
acehreli (Moderatör) #10
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
saydin77, söyledilerine ben de katılıyor: Boyut küçük olsa daha iyi olur ama sorun listesinde aşağılarda kalıyor.

Digital Mars farklı bir linker kullanmıyor. Sistemde ne varsa o. Walter Bright daha dün bunun öyle olmak zorunda olmadığını yazdı. Bazen exe doğrudan derleyici tarafından oluşturulsa diye düşünüyormuş.

Ali
Avatar
Salih Dinçer #11
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
saydin77:
belki D için gelişmiş bir IDE/RAD kadar önemli değil ama bazı insanların bu dile sempati duyabilmesi için gereken kriterlerden küçük bir tanesi diye düşünüyorum

Visual D uzantısı var; VS'de çalışıyor. Hiç duydun mu? Bu arada şimdi baktım da dün yeni bir sürümü çıkmış...:)

saydin77:
windowsu çok aktif kullandığı halde 3-4 yıldır format atmayan arkadaşlarım var ordan biliyorum, ki ben nezaman format attığımı hatırlamıyorum bile

Şunu söyleyebilirim: Eğer bir windows kullanıcısı bu kadar uzun süre sistemini yenilemiyorsa ya az kullanıyordur ya da Linux kullanıcılarından da çok uzmandır... ;-)

saydin77:
netten kopyaladığım aşağıdaki örneği gcc ile derlediğimde obj dosyasının 1.848 byte olduğunu gördüm
yani d ile olan karşılığının hemen hemen aynısı

Evet, beraberinde aynı olmak zorunda. Ancak bir şey dikkatimi çekti D'nin ilintilerinde (binding) DestroyWindow() yok o yüzden örnekteki WM_CLOSE: seçeneğini kullanamıyorum. Muhtemelen default:'a yönlenleniyor ama sonra nasıl kapanabiliyor anlamıyorum...:)

Ancak WindowProcA()'un geri dönüş değerini 0 vermek yerine şu satır ile destroy olayını da hallediyor olmalı:
return DefWindowProcA(hWnd, message, wParam, lParam);

acehreli:
Walter Bright daha dün bunun öyle olmak zorunda olmadığını yazdı. Bazen exe doğrudan derleyici tarafından oluşturulsa diye düşünüyormuş.

Evet, bu çok hoş olurdu...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
saydin77 #12
Üye Şub 2010 tarihinden beri · 16 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
Visual D uzantısı var; VS'de çalışıyor. Hiç duydun mu? Bu arada şimdi baktım da dün yeni bir sürümü çıkmış...
duydum ama hiç deneyemedim, vs'nin express sürümlerine yükleyemiyormuşuz :(


Salih Dinçer:
Şunu söyleyebilirim: Eğer bir windows kullanıcısı bu kadar uzun süre sistemini yenilemiyorsa ya az kullanıyordur ya da Linux kullanıcılarından da çok uzmandır...
hergün sabahtan akşama kadar bilgisayarlarının başındalar :)
ama uzman da değiller, sadece dikkatli kullanıyorlar.

Salih Dinçer:
...Ancak bir şey dikkatimi çekti D'nin ilintilerinde (binding) DestroyWindow() yok o yüzden örnekteki WM_CLOSE: seçeneğini kullanamıyorum. Muhtemelen default:'a yönlenleniyor ama sonra nasıl kapanabiliyor anlamıyorum...
ordaki kullanmadığımız her eventi DefWindowProc(..) bizim için değerlendiriyor.
Yani kapatma düğmesine tıklamışız, ama switch(msg)'de WM_CLOSE için bişey belirtmemişiz. O zaman defwindowproc bizim için pencereyi kapatıyor.

acehreli:
... Bazen exe doğrudan derleyici tarafından oluşturulsa diye düşünüyormuş.

bence farketmez
çalışma alanları farklı olduğundan gerekli değil, ama olursa da hoş olabilir tabi :)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Duyurular RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-18, 09:27:56 (UTC -08:00)