I have to say I am giving up from win32 assembly.... actually just in GUI programming :grin:
I cant be bothered anymore with that stuff, its too damn boring and it doesnt work usually...
So I am thinking of C++ doing GUI from now on, but I have no idea what are the best classes and libraries...I see MFC is the most supported one, sites like codeguru and codeproject contributed to that fact but I am not sure if it is the best solution...
So any C++ guys out there? let me hear you suggestions
Posted on 2003-12-23 20:03:21 by Mikky
Woo.. a jmp from asm to mfc.. you sure are not picky ;)
Posted on 2003-12-23 20:13:27 by JimmyClif

Before you give up on asm totally maybe you can try HLA. :) If you still want to leave I think you should skip c++ and try c#. Borland is giving away the personal edition of their c# builder IDE for free. :) That will make it very easy to design GUI programs :)

Posted on 2003-12-23 20:19:59 by Odyssey


Before you give up on asm totally maybe you can try HLA. :) If you still want to leave I think you should skip c++ and try c#. Borland is giving away the personal edition of their c# builder IDE for free. :) That will make it very easy to design GUI programs :)

C# borland IDE sucks.
Posted on 2003-12-23 20:45:47 by bRaNcO
I was also about to give up an year ago. The code was getting larger and larger, too, adding new code was pain - had to verify all is on its place a hundred times a day, C++ coding seemed tempting then - it seemed to make things easier.
MFC gave you the ability to create an app with print dialog,... with a few clicks. Yay I thought.
But I gave a final chance to ASM. I built an IDE that shrinks code and builds it all easily, I made my own GUI engine and many macros and includes. Seeing only as many code as I want (and I usually want less than 120 lines), easily finding any code and struct defs, having learnt to use macros and BitBlt, I was ready to code.
The IDE is called XASM, I posted its oldest version here somewhere, the GUI engine is kind of simple, but I'll refrain from posting it....
and now I have made another tool - an OOP implementation. There are several people that tell me they find it very useful. And it supports easy conversion of C++ classes and dynamic linking to C++ apps and .dlls ! You'd better check it out, because using it you have all the best of C++ and asm, at the power of asm.
I once coded in MFC, too. You create a working app with a few clicks, but see its generated code - ouch. You must be aware of too high-level languages - you will hardly find bugs.
What is the more difficult part of GUI asm coding? RadASM is good enough, the asm code doesn't differ much from C code. Or you want to use objects like in C++ :) . MSVC++ is too expensive, imho Borland sucks at many places, DevC++ is still not up to standards, Delphi is like VB and VB doesn't give you much info on what broke while your app is running. As I said, MSVC++ is too expensive, but now you can easily convert c++ code to asm, using my OOP. You can/should have most of your code in objects, try it and you'll see the power of asm , together with the flexibility and ease of coding of C++.
you can try these things, or straight go to MFC (hell) (just kiddin) :) .
it won't be a waste of time to try, it'll be a waste of resources not to.

my 2 cents
Posted on 2003-12-24 02:37:15 by Ultrano
MFC? I once heard this from some windows dude:
"Life's to short to learn two APIs" (in the context that you don't need MFC, the ordinary Win32 API will do fine).

But unless I've gotten it wrong, common controls are not a part of MFC (but a part of the Win32API), are they?
Posted on 2003-12-24 03:31:29 by scientica
MFC is Win32api, encapsulated in C++ objects. MSVC comes with complete source code of MFC. With my OOP you can easily convert the useful parts of MFC in asm. The only cons of asm that I see is that there's no menu popup of any txt editor after you press "." :) But it can be done, and it's on my "ToDo" list for my IDE.
Posted on 2003-12-24 03:48:32 by Ultrano
Digital Mars and Watcom are also good choices for C++ programmers.
Posted on 2003-12-24 04:46:19 by Vortex
Only because they're free ;)
Posted on 2003-12-24 05:16:53 by f0dder
I would stay away from MFC. Its, i guess what you could call, bloatware.

If your looking to make gui's in C++, I think WTL from MS is a good route. Exe's are alot smaller and its also alot easier to learn. (but last time I checked MS doesnt support it.)
You should be able to find plenty of examples for WTL on codeguru and the like.

You also might take a look at SmartWin. Project is on sourceforge. Its also all template based.

That was my 2cents.

Posted on 2003-12-24 05:26:17 by packetvb
MFC? It's ugly. If you want to pass to the dark side then better do it right. Master the powers of the pure VB man :) That way I will be "da" last living asm coder in Serbia :)
Posted on 2003-12-24 05:27:59 by Milos
Well yea I just mentioned MFC since its most widely used library, I heard good things about that WTL but I'll first have to learn templates in c++ (yuck). Any good tutorials on that topic?

When Longhorn and 64bit processors become usuall thing on average desktop machine, and thats not so far away future, most of your knowledge about current API will be useless, and you will have to rewrite all 32bit asm programs if you want them to fully use 64bit processor potentials. So moving to C++ or other high level language is invetable for whoever want to be serious programmer. Programming fully in assembly is good if you want to impress someone by program size/speed, or if you find asm programming interesting and fun like most people on this board do, including my self, but for serious work its defeintelly not that good idea.

Ultrano, where can I get that OOP tool you created, I really would like to try it even though I am little sceptic about combining c++ code with asm and making all that to work.

Snoopy, dont worry I am not leaving totally asm, just the boring part :)
Posted on 2003-12-24 10:36:08 by Mikky
The oop is in the OOP forum :grin: , a 5-star topic. I'll post more tutorials in a few days.
in order to sell my app more (@ my site), I needed to add c++ plugins, and that host plugin works perfectly, just like all plugins I made with it in asm (hosted in C++ apps).
Posted on 2003-12-24 11:16:51 by Ultrano
MFC is dying. If you want to go C++ then switch to the .net disaster.
Posted on 2003-12-24 12:12:02 by Ranma_at
imho, MFC has left a mark in GUI history, no matter whether you notice it or not. I believe it introduced custom-managed windows (I don't know the real term) . They are different with that there's only one window, and all child windows are custom-drawn. Iczellion's MHook.exe - tute 23, use it to see wnd classname and proc, against a regular window, and , let's say WinAmp5 or XMPlay or hmm I can remember only musical apps... Anyway, as I am trying to code musical apps , I think this MFC feature is an important historical event for me :) . I'm not entirely sure whether MFC introduced this feature, but I saw it in MFC and as it has longer history than any app with such windows, I believe I've guessed right.
Posted on 2003-12-24 14:49:20 by Ultrano
could anyone name 1 significant MS application that was made in MFC? I sure can't. MS themselves didn't use MFC (the bastards :P )
Posted on 2003-12-24 16:00:16 by Hiroshimator
nooooo , MFC :(

i'm using it with big and small applications at job. It's really a dark world. With assembler and API'es it's sure longer to code, but you know what you're doing and you can build your own asm-reliables libraries. That's not with MFC. Sometime it makes me crazy for hours, just to do really stupid things as to get an option button click.

i also use often C++ Biulder 6.00. It's easier and faster to use than MSVC, but the IDE is full of bugs, sometime it crash without reason, sometimes give strange compiler errors, sometimes forms don't shows out with F12 under developement, some times it get paralized and so on. That's expecially with big projects. And the party come when you compile: it says "copiling: XXX hundred thousand lines" also for a project whit a single form :). Last mounth i've rewritten a simple routine from c++ to asm, in a fast and raw way, not optimizing nothing. It take 30% less time than the c++ one compiled by c++ builder.

So now i can see the difference between projects written in c++ and the great asm32 code. I know my asm32code, is longer to write but i find it more reliable than c++. There are no misterious behavior introduced by complicated objects written from others. Once it work, it work, and it work fast with small exe size. I love it. Anyway, competitive time for applications developement suggest to use c++ or other HLA for job.

Posted on 2003-12-24 16:33:09 by Bit7
Its going to be one hell of a change from assembly to c# ;) :grin:
Posted on 2003-12-24 17:00:50 by clippy
I just use plain old C, I just cant stand this High level stuff, no wonder I'm steering clear of Computer Science :D
Posted on 2003-12-24 17:32:57 by x86asm
There's always Il assembly :grin:

Hello World in il assembly :grin:

// Microsoft (R) .NET Framework IL Disassembler. Version 1.1.4322.573
// Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

.assembly extern mscorlib
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 1:0:5000:0
.assembly hw
// --- The following custom attribute is added automatically, do not uncomment -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool,
// bool) = ( 01 00 00 01 00 00 )
.hash algorithm 0x00008004
.ver 0:0:0:0
.module hw.exe
// MVID: {B9C7A670-78FA-4DED-943A-C612EBD7B7E3}
.imagebase 0x00400000
.subsystem 0x00000003
.file alignment 512
.corflags 0x00000001
// Image base: 0x06bc0000
// ============== CLASS STRUCTURE DECLARATION ==================
.class public auto ansi beforefieldinit hw
extends [mscorlib]System.Object
} // end of class hw

// =============================================================

// =============== GLOBAL FIELDS AND METHODS ===================

// =============================================================

// =============== CLASS MEMBERS DECLARATION ===================
// note that class flags, 'extends' and 'implements' clauses
// are provided here for information only

.class public auto ansi beforefieldinit hw
extends [mscorlib]System.Object
.method public hidebysig static void Main() cil managed
// Code size 11 (0xb)
.maxstack 1
IL_0000: ldstr "Hello World"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ret
} // end of method hw::Main

.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
// Code size 7 (0x7)
.maxstack 1
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method hw::.ctor

} // end of class hw

// =============================================================

//*********** DISASSEMBLY COMPLETE ***********************
// WARNING: Created Win32 resource file hw.res
Posted on 2003-12-24 17:33:04 by Odyssey