Thread overview
How to convert this C++ code to Dlang? Please send me Dlang version of this C++ code
Jan 27, 2020
Marcone
Jan 27, 2020
rumbu
Jan 27, 2020
Marcone
Jan 27, 2020
Ferhat Kurtulmuş
Jan 27, 2020
Marcone
January 27, 2020
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#include "resource.h"
#include <iostream>

HINSTANCE hInst;

BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_INITDIALOG:
    {
    }
    return TRUE;

    case WM_CLOSE:
    {
        EndDialog(hwndDlg, 0);
    }
    return TRUE;

    case WM_COMMAND:
    {
        switch(LOWORD(wParam))
        {
            //case BT_1:
            //{
            //    std::cout << "Ola Mundo!\n";
            //}
        }
    }
    return TRUE;
    }
    return FALSE;
}


int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    hInst=hInstance;
    InitCommonControls();
    return DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgMain);
}
January 27, 2020
On Monday, 27 January 2020 at 11:34:47 UTC, Marcone wrote:
> #include <windows.h>
> #include <commctrl.h>
> #include <stdio.h>
> #include "resource.h"
> #include <iostream>
>
> HINSTANCE hInst;
>
> BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
> {
>     switch(uMsg)
>     {
>     case WM_INITDIALOG:
>     {
>     }
>     return TRUE;
>
>     case WM_CLOSE:
>     {
>         EndDialog(hwndDlg, 0);
>     }
>     return TRUE;
>
>     case WM_COMMAND:
>     {
>         switch(LOWORD(wParam))
>         {
>             //case BT_1:
>             //{
>             //    std::cout << "Ola Mundo!\n";
>             //}
>         }
>     }
>     return TRUE;
>     }
>     return FALSE;
> }
>
>
> int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
> {
>     hInst=hInstance;
>     InitCommonControls();
>     return DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgMain);
> }


Translated (including errors & comments):

import core.sys.windows.windows;
import core.sys.windows.commctrl;
import std.stdio;

HINSTANCE hInst;

extern(Windows):

BOOL DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) nothrow
{
    switch(uMsg)
    {
    case WM_INITDIALOG:
    {
    }
    return TRUE;

    case WM_CLOSE:
    {
        EndDialog(hwndDlg, 0);
    }
    return TRUE;

    case WM_COMMAND:
    {
        switch(LOWORD(wParam))
        {
            //case BT_1:
            //{
            //    writeln("Ola Mundo!");
            //}
        }
    }
    return TRUE;
    }
    return FALSE;
}


int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    hInst=hInstance;
    InitCommonControls();
    return DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, &DlgMain);
}
January 27, 2020
On Monday, 27 January 2020 at 13:07:20 UTC, rumbu wrote:
> On Monday, 27 January 2020 at 11:34:47 UTC, Marcone wrote:
>> [...]
>
>
> Translated (including errors & comments):
>
> import core.sys.windows.windows;
> import core.sys.windows.commctrl;
> import std.stdio;
>
> HINSTANCE hInst;
>
> extern(Windows):
>
> BOOL DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) nothrow
> {
>     switch(uMsg)
>     {
>     case WM_INITDIALOG:
>     {
>     }
>     return TRUE;
>
>     case WM_CLOSE:
>     {
>         EndDialog(hwndDlg, 0);
>     }
>     return TRUE;
>
>     case WM_COMMAND:
>     {
>         switch(LOWORD(wParam))
>         {
>             //case BT_1:
>             //{
>             //    writeln("Ola Mundo!");
>             //}
>         }
>     }
>     return TRUE;
>     }
>     return FALSE;
> }
>
>
> int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
> {
>     hInst=hInstance;
>     InitCommonControls();
>     return DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, &DlgMain);
> }

Thank you very much! But I have this error when I try to compile:

Error 42: Symbol Undefined _InitCommonControls@0
Error: linker exited with status 1

I am using Resedit.exe for create dialog resource and compiled .rc to .res for link.
January 27, 2020
On Monday, 27 January 2020 at 13:24:03 UTC, Marcone wrote:
> On Monday, 27 January 2020 at 13:07:20 UTC, rumbu wrote:
>> [...]
>
> Thank you very much! But I have this error when I try to compile:
>
> Error 42: Symbol Undefined _InitCommonControls@0
> Error: linker exited with status 1
>
> I am using Resedit.exe for create dialog resource and compiled .rc to .res for link.

probably, you need to link your exec with comctl32.lib
January 27, 2020
On Monday, 27 January 2020 at 13:41:13 UTC, Ferhat Kurtulmuş wrote:
> On Monday, 27 January 2020 at 13:24:03 UTC, Marcone wrote:
>> On Monday, 27 January 2020 at 13:07:20 UTC, rumbu wrote:
>>> [...]
>>
>> Thank you very much! But I have this error when I try to compile:
>>
>> Error 42: Symbol Undefined _InitCommonControls@0
>> Error: linker exited with status 1
>>
>> I am using Resedit.exe for create dialog resource and compiled .rc to .res for link.
>
> probably, you need to link your exec with comctl32.lib

Very good!! Working fine adding:
pragma(lib, "comctl32.lib");