Windows System programming - c

Hi i am new to windows system programming and interested in working in it completely using C and win32 api. Can you please give me suggestions on how I can start and any good books to read. Thanks in advance.

Programming Windows, 5th edition ,Charles Petzold will be helpful

Windows System Programming Fourth Edition
by Johnson M. Hart
http://tinyurl.com/5sgf6ju
This is entirely focused on System Programming, whereas Charles Petzolds' Programming Windows is focused on the GUI elements. Buy both if you can as Petzold's book has some very clear and in depth explanations of important issues skimmed over in Hart. Unicode for instance.

Many people interested in programming using C and win32 api use MinGW and are on the MinGW mailing list. I've heard (though I can't back it up), that's it's practically the only place to get expert answers on programming win32 with C.

Related

Best quick alternative compiler/IDE to Turbo C that supports audio and graphics

I am making a small 2d GAME PACK as my University project. I am using Turboc 3.0 as the compiler. I am at a stage where I need better graphics and sound. Ive spent days looking for a workaround on the net and by myself too including audio and better graphics.Can you please tell me which Ide can be learnt quickly, as time is a constraint here?
Turbo C is just an IDE + compiler for the C programming language. C does not have any audio or graphics capabilities on its own, which means that you will not find a C IDE that readily incorporates such functionality. What you need is a library with a C API that will allow you to do such things.
IIRC Turbo C did come with a rudimentary graphics library for DOS, but I do not believe that there was any support for audio. Unfortunately (or not) Turbo C is pretty much obsolete these days. Most programs written in it would have issues on modern operating systems and handling audio and graphics on DOS essentially means talking straight to the hardware - definitely not something trivial.
If you are after a modern audio/graphics library, SDL is a popular choice for 2D games and, from my experience, rather easy to work with. You will probably need to couple it with a more modern programming environment though - I doubt Turbo C will cut it. You might want to have a look at one or more of the following for a compiler and/or IDE that will be fully functional on modern systems.:
Codeblocks
Dev-C++
Warning: this IDE has not been updated for quite some time. I have used it successfully in the past, but I would not recommend investing time and resources on it at this point.
Mingw32
Eclipse CDT, downloadable here
Warning: Eclipse is mostly targeted to professional developers. It is very powerful, but it can occasionally be rather confusing to use. While it will save you a lot of time in the long run, it may not be perfectly suitable for someone that needs to get work done right here, right now.
Visual Studio Express

How do I get a C program to work as a Windows Application Form?

Hi I am a beginner in C programming and I have made a C program that automatically logins into a website using socket programming, particularly made for UNIX systems. I am now interested in bringing this program into "life" in windows application form, so that it would be much easier to use. But I am clueless on where to start because I have never programmed in Windows before. A simple guide to what steps I should take would be very much appreciated. Thank You.
Get yourself a Windows installation and install an express version of the C++ IDE. In there you can create Win32 API applications from which you could start to build your app. You will need to use the Win32 API to build your form. This API is fairly well documented on the internet. Here is a website with some tutorials on it.
Hope this helps.
You could use a library for that. For example i like Qt but it tends to be large but it is multiplatform. You could also use Win32++ for that. But it requires some reading since it is very close to the windows api (WinAPI).
Just for completeness there is also ATL, WTL, MFC, GTK (multiplatform), wxWidgets and some others i don't recall.

How to make window application in ANSI C?

Until now I've been only writing console applications but I need to write a simple window application for a school assignment.
Could somebody point me to a good tutorial how to create windows and other ordinary windows elements such as buttons, 2d graphs etc in ANSI C? is there some good library I should use?
I tried googling but there are no tutorial websites devoted to C.
If you can, I would also appreciate some example code.
Thank you.
By the way, I use Dec C++.
GTK is a good library to use, but may provide non-native looks under Windows. It looks great under GNU/Linux, especially using GNOME.
It is implemented in just C (Using the GObject Type System, part of the GLib library), so it will work great for your needs. There is also a RAD tool called Glade.
There's nothing in the ANSI C standard about windows. If you want to make a windowed application, you'll have to use platform-specific libraries (e.g. Win32, Cocoa, or X11), or some sort of cross-platform library that encapsulates that (e.g. SDL, wxWidgets, or many more).
Common places to start are Charles Petzold's Programming Windows and theForger's Win32 API Programming Tutorial.
However in most cases C is no longer the preferred language for Windows development. Object oriented technology is far better suited to GUI development, and with the introduction of MFC, C++ became the preferred language, and later with .Net, C# and C++/CLI.
The Win32 API can be hard work, much of MFC is little better than a Win32 API wrapper, the .Net framework however was designed from the ground up, and is less encumbered by the legacy of the Win32 API monster, and working with it tends to result in far greater productivity.
Either way, Dev-C++ is not a great tool for GUI development.
http://support.microsoft.com/kb/829488 which also talks how to create
Windows application: Creates a simple
Microsoft Windows-based application.
The application files include a
ProjectName.cpp file that contains a
_tWinMain function. You can use this type of application to perform
graphical user interface (GUI) based
programming.
As for tutorials... use MSDN. Win32 API is C. You don't need "Win32 ANSI C tutorial" - you need Win32 tutorial (for example http://www.winprog.org/tutorial/start.html, http://www.functionx.com/win32/Lesson01.htm) - unless, of course, you don't know ANSI C but then you just look for ANSI C tutorial. These subjects are independent.
There are lots of good libraries—too many for there to be an obvious choice without starting a religious war. I recommend that for your first library you learn something that will work on Windows, Linux, or OSX. Here are two good choices, not necessarily the best, but widely used and personal favorites:
Tcl/Tk. You write most of your application in the Tcl scripting language, but you can easily integrate your own ANSI C code into Tcl, which was designed from the beginning with such integration in mind. The Tk toolkit is very easy to learn, and you can write many simple GUIs in pure Tcl when you are getting started. Interactive, easy, and very well supported.
If you want to write everything in ANSI C, I don't know of any really simple choices, but I've been fairly happy with wxwidgets. All these tools have a pretty steep learning curve, however.
There are not many plain C GUI libraries as the strengths of the language lie elsewhere. Perhaps you should think about using a language with C bindings so you can still do the number crunching in C, but use something less painful for GUI development?
If you really want to stick to C, you can either use the OS' native API or the only current cross-platform C GUI lib I'm aware of: GTK+. If you don't really need a GUI but just graphical output, I'd go with SDL.
I suggest you download Microsoft Visual Studio 2008 Express Edition and use C#.Net.
As has been said, I suggest you use Winforms and switch to a .Net environment. It's 2009, and I think there are more suitable solutions to GUI's :P
Edit: Nvm, didn't see it was a school assignment.
However, here is a C++ guide on the Win32 API: http://www.relisoft.com/win32/index.htm

C Editor or Compiler for Windows CE

Someone can please answer to me, if have any Editor or Compiler to C language for Windows CE 3.1( Jornada 720 - HPC 2000 ), because i'm a Visual Basic developer and i have buyed a book of C only for play with this language in my free time, and the time that is free to me i'm using my Jornada 720, but remember that i've want something like PocketC or only a compiler but free, and remember to, that i've want it to be onboard, not in to compile in my computer, Thanks. Sorry about my english.
These links might be useful to you:
Google Windows+CE+c+IDE
Free C++ (and C) Programming Tools
Introduction to Development Tools for Windows Mobile-based Devices
eMbedded Visual C++ might be an appropriate tool for you in Windows. I've used it in the past to develop on a Windows CE device.
Neat. I think I had one of those, or something similar. (Unfortunately, mine had a defect where it would reboot if the keyboard flexed.)
Some people install NetBSD on those. You could probably use gcc if you did that. I'd see if I could get Linux or NetBSD running on it.
I don't remember a native C for it, but maybe there's one now. Googling "gcc jornada" turns up some hits. Keep looking.

Strict C Win GUI programming

Good day folks, I'm in a need of a bit of guidance.
Basically, I'm a webdev who knows some C from the past, but I've only developed somewhat simple console apps for *nix.
Shortly, I want to develop a simple Win program with a GUI and not get my hands into any of the following technologies:
.NET C#
Java
C++ (especially this one)
Because I have nor the time nor the need for it currently.
1). Can I use wxWidgets without resorting to cpp (if not, what other native looking and lightweight widget toolkit would you suggest?)
2). Can I use OpenCV with strict C? (no templates, inline functions, etc)
3). Should I look for other options for a compiler besides MinGW? Is Intel one worth investigating? (AFAIK, it has a restrictive license).
4). What IDE of the following would you suggest for windows / c programming
Dev-C++
Eclipse with appropriate plugins (can't remember the exact one)
Any text editor + *.bat for compiling??
Thanks!
If you're interested in learning C-based Windows programming directly, and not using other intermediate tools:
There's a really good reference book by Charles Petzold called Programming Windows. It's definitely the way to get started. Absolutely everything is crystal clear, and you never need C++.
The Windows API, as a whole, is built for C programmers. All the fancy stuff like an actual application window is passed back as "HANDLE"s, which are more-or-less just pointers into the OS's object table. You as a programmer never have to deal with objects, just their HANDLEs.
Also, this particular book does a good job describing the Windows event-loop. If you're unfamiliar with it, it is described in generous detail.
Good luck!
For C Windows GUI programming the easiest thing is VC++ (any version since 6.0) and The Charles Petzold Programming Windows book.
The free Express version of the Microsoft compiler should work fine - I'm not sure if you'd have to download the Platform SDK or if it comes with one.
You can write Windows GUI programs in straight C. Download the Windows SDK and look at the "GENERIC" sample (I assume it's still in there). This is pretty much the minimal code required for a Win32 app, and it's in plain-ol' C.
Edit: Hmmm, it doesn't appear to be installed on this laptop. You can find it online here.
It might be worth reconsidering C#.NET. You could easily learn C# in a couple days, and be developing slick apps very quickly. Straight C-based windows libraries, particularly Win32, are BRUTAL in comparison. You'd spend a week just to write a simple app that would take minutes in C#.
The only C-based toolkit I can think of is the Windows port of GTK+. I have no experience using it in the Windows environment though. It is very mature on the Linux side though, and may be good enough if your needs are simple.
Learning the Win32 API is hard! But like others have stated, Petzold's book is the way to go if you insist on going down that path.
My opinion is that developing a Windows GUI using only C and the Win32 API would be harder to learn than picking up just enough C++ to utilize one of the C++-based frameworks. You could still do the majority of your work in plain C.
As for free IDEs, I would go with Visual Studio 2008 Express Edition.
You don't need anything.
Just use C and Win32 api , like real programmers, not kids..
See the VS Win32 wizard
Regarding wxWidgets, you can use https://sourceforge.net/projects/wxc
I never actually heavily used it, so I'm not aware of its maturity.
Mingw and Microsoft Visual C++ are my favorite compilers. Remember you can always use strict C and compile it using a C++ compiler, since valid C is almost always valid C++.
For windows, I've used Dev-C++ in the past, but nowadays Microsoft Visual C++ seems a better solution.
If you're going for text editor+bat, check out Notepad++.
EDIT: Just to clarify, using Microsoft Visual C++ does NOT mean learning C++. You can use C in it perfectly because - I repeat - valid C is often valid C++. Don't want C++? No problem. Just stay away from the C++-only features and you're still safe in a C++ compiler.
EDIT: Roger Lipscombe has noted in the comments that a pure C compiler is available in Microsoft's Visual C, using the /TC switch.

Resources