Winapi Gui problemim

Merhaba.

#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>

// Global variables

// The main window class name.
static TCHAR szWindowClass[] = _T("DesktopApp");

// The string that appears in the application's title bar.
static TCHAR szTitle[] = _T("Windows Desktop Guided Tour Application");

HINSTANCE hInst;

// Forward declarations of functions included in this code module:
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int CALLBACK WinMain(
   _In_ HINSTANCE hInstance,
   _In_ HINSTANCE hPrevInstance,
   _In_ LPSTR     lpCmdLine,
   _In_ int       nCmdShow
)
{
   WNDCLASSEX wcex;

   wcex.cbSize = sizeof(WNDCLASSEX);
   wcex.style          = CS_HREDRAW | CS_VREDRAW;
   wcex.lpfnWndProc    = WndProc;
   wcex.cbClsExtra     = 0;
   wcex.cbWndExtra     = 0;
   wcex.hInstance      = hInstance;
   wcex.hIcon          = LoadIcon(hInstance, IDI_APPLICATION);
   wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
   wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
   wcex.lpszMenuName   = NULL;
   wcex.lpszClassName  = szWindowClass;
   wcex.hIconSm        = LoadIcon(wcex.hInstance, IDI_APPLICATION);

   if (!RegisterClassEx(&wcex))
   {
      MessageBox(NULL,
         _T("Call to RegisterClassEx failed!"),
         _T("Windows Desktop Guided Tour"),NULL);

      return 1;
   }

   // Store instance handle in our global variable
   hInst = hInstance;

   // The parameters to CreateWindow explained:
   // szWindowClass: the name of the application
   // szTitle: the text that appears in the title bar
   // WS_OVERLAPPEDWINDOW: the type of window to create
   // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)
   // 500, 100: initial size (width, length)
   // NULL: the parent of this window
   // NULL: this application does not have a menu bar
   // hInstance: the first parameter from WinMain
   // NULL: not used in this application
   HWND hWnd = CreateWindow(
      szWindowClass,
      szTitle,
      WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, CW_USEDEFAULT,
      500, 100,
      NULL,
      NULL,
      hInstance,
      NULL
   );

   if (!hWnd)
   {
      MessageBox(NULL,
         _T("Call to CreateWindow failed!"),
         _T("Windows Desktop Guided Tour"),
         NULL);

      return 1;
   }

   // The parameters to ShowWindow explained:
   // hWnd: the value returned from CreateWindow
   // nCmdShow: the fourth parameter from WinMain
   ShowWindow(hWnd,
      nCmdShow);
   UpdateWindow(hWnd);

   // Main message loop:
   MSG msg;
   while (GetMessage(&msg, NULL, 0, 0))
   {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }

   return (int) msg.wParam;
}

//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_PAINT    - Paint the main window
//  WM_DESTROY  - post a quit message and return
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   PAINTSTRUCT ps;
   HDC hdc;
   TCHAR greeting[] = _T("Hello, Windows desktop!");

   switch (message)
   {
   case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);

      // Here your application is laid out.
      // For this introduction, we just print out "Hello, Windows desktop!"
      // in the top left corner.
      TextOut(hdc,
         5, 5,
         greeting, _tcslen(greeting));
      // End application-specific layout section.

      EndPaint(hWnd, &ps);
      break;
   case WM_DESTROY:
      PostQuitMessage(0);
      break;
   default:
      return DefWindowProc(hWnd, message, wParam, lParam);
      break;
   }

   return 0;
}



Çalıştırdığım zaman bu hatayı veriyor


collect2.exe	[Error] ld returned 1 exit status

https://docs.microsoft.com/tr-tr/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp?view=vs-2019

buradan aldım kodları .Elimdeki kaynaktan hem okuyup hem de anlamaya çalışacaktım ama kod çalışmadı. Sorun ne olabilir ?

Acaba problem ne olabilir ?

Linker calismamis. Linker hata mesajini (ve nasil cagrildigini) gormek lazim.

1 Beğeni

Bu arada GUI aplikasyonu yazmak icin Qt, GTK veya wxWidgets gibi modern bir framework kullanmani siddetle tavsiye ediyorum. Yukaridaki kod 5-10 satira inecegi gibi, diger isletim sistemlerinde de calisabilir olur. Edindigin bilgi de Windows’da kod denemesi yapmaktan baska isler yapacagin zaman kullanilabilir olur. (Kendin veya baskasinin kullanacagi bir program yazarken mesela.)

Proje seç dedikten sonra GUI için seçmem lazımmış onu öğrendim. Amacım

Onlar aklıma gelmemişti bir de onlara bakayım nasıl olacak acaba.Teşekkürler tavsiye için

Acaba windowsda socket için winsock dışında alternatif var mı ?

Var. En kolayi WinSock’un uzerinde calisan bir ust katman kutuphanesi kullanmak. Mesela Qt’de vardi diye hatirliyorum, bakar misin?

Evet varmış. İlginç .

Hemen her programlama dilinin bir socket wrapper’i oluyor. Genellikle dusuk seviyeli olanlari WinSock’un da temel aldigi BSD sockets implementasyonuna benziyor (socket(), connect() / listen()+accept(), send() / recv()).

1 Beğeni