12
votes

Comment commencer la programmation dans Windows?

J'ai fabriqué des programmes simples en C et C ++ avec des compilateurs simples (appris à l'université; je suis étudiant de statistique). Aussi je suis un programmateur PHP amateur. Maintenant, je veux commencer la programmation pour Windows.

  • Applications avec interface utilisateur
  • Applications sans interface utilisateur

    Mon objectif est juste de voir comment cela se fait. Et je pourrais créer une application de base qui interagit avec une base de données dans un serveur Web.

    Où devrais-je commencer? Windows Visual Studio? .RAPPORTER? Que dois-je savoir?


11 commentaires

Voulez-vous coller avec la langue C ou C ++ que vous connaissez déjà, ou êtes-vous prêt à apprendre une autre langue comme C #? (Je suis étonnant de savoir comment toutes les réponses jusqu'à présent supposent que vous souhaitez utiliser la plate-forme .NET.) Il existe un nombre ridicule d'options disponibles; La programmation Windows est un sujet très large.


@Code gris vrai! = P mais honnêtement, la route C \ C ++ pour la programmation Windows n'est pas facile.


Je suis prêt à apprendre une autre langue si nécessaire, oui je suis disposé.


@ilhan un de mes amis Tout comme vous venez d'un antique Course C, il va vraiment bien avec VC # étape par étape.


@Giddy: Pourquoi n'est-ce pas facile? La façon dont je le vois, la partie la plus difficile consiste à apprendre les langues C ou C ++! Si vous les connaissez bien (ou au moins assez bien), la programmation de l'interface graphique est relativement simple.


@Code Grey Qu'en est-il de l'API! Sa folie, il a nécessité une compréhension profonde de la fonctionnalité Windows, de tous les hwnd S. wndproc avec toutes ces relevés de commutation imbriqués, j'ai toujours voulu donner un coup de la MFC , surtout juste pour pratiquer C ++ (à s'écarter dans ma propre question, pensez-vous que c'est une bonne idée?) Mais surtout son outil, je veux dire, IntelliSense, designers, refactoring ... fin de la journée, cela vous aide à écrire mieux code si vous savez ce que vous faites.


@Giddy Vous pourriez trouver des fenêtres et des messages difficiles, mais si vous n'obtenez pas de bonne terre, cela vous retiendra.


@David Yea je suis totalement d'accord! La plupart de mes luttes avec Win32 sont venues très pratiques avec des Winforms, mais je pense que Win32 / C-C ++ est bon parce que vous connaissez un niveau d'abstraction, mais je ne suis pas sûr de la manière dont il serait productif d'écrire une application LOB avec C'est dans la journée d'aujourd'hui.


@Giddy: Honnêtement, je ne sais pas comment vous écrivez une application "réelle" dans Winforms sans avoir au moins quelques compréhension de l'API Win32. Je ne pouvais certainement jamais. J'ai depuis migré la plupart de mes efforts de développement à RAW WIN32 ou MFC. Certaines choses sont plus difficiles parce que je n'ai pas toutes les fonctionnalités intégrées du .NET FW à ma disposition, mais d'autre part, Je passe beaucoup moins de temps à écrire P / invoquer des définitions . Pendant un moment, cela semblait être tout ce que je faisais lors de l'écriture des applications WinForms. (Et, comme cela ne serait pas surprenant, je suis d'accord avec les commentaires de David Heffernan.)


@giddy: En outre, je n'ai pas la haine bouillante que tout le monde semble avoir pour MFC. Cela me rend plus productif que la ligne droite Win32, tout en me permettant de rédiger des applications indigènes, alors je suis en panne. Bien sûr, il y a des bizarreries, mais c'est le cas avec toute bibliothèque . La clé est compréhension eux, et comme c'est principalement basé sur la Win32, je pense que je le fais. À cet égard, il pourrait être intéressant d'apprendre à vous faire un meilleur programmeur Windows. Mais comme une prise pour apprendre C ++? définitivement pas . C ++ a changé drastiquement puisque MFC a été écrit. Ce n'est plus un exemple brillant de meilleures pratiques ...


@cody je sais juste que vous aimeriez Delphi VCL !!


6 Réponses :


2
votes

Je vais sortir sur un membre et recommander C # en utilisant visuel Studio 2010 C # Express . Cela vous permet de vous familiariser avec le style C / C ++ votre probablement familier avec.


0 commentaires

10
votes

Voir cette question:
Programmation de GUI C # pour débutants: Où commencer?

surtout Cette y répondre.

Je pense que vous devriez commencer par le formulaire Windows, WPF est la nouvelle chose pour Windows Dev et sa lumière de chaux, mais je ne recommande vraiment pas de partir avec elle.


0 commentaires

1
votes

Je pense que vous pouvez commencer par C # .NET, puis asp.net


0 commentaires

5
votes

Je ne suis pas sûr de savoir pourquoi les gens n'utilisent pas plus souvent des outils à outils de l'interface graphique. J'ai tendance à écrire ma GUI en Java et à transférer le contrôle de C ++ pour la logique du programme réelle. Si vous connaissez le modèle architectural MVC, vous pouvez utiliser Java pour implémenter la vue et le contrôleur et C ++ pour mettre en œuvre la vue. Si le programme est simple et que la performance n'est pas critique, je code souvent tout directement en Java. J'ai énuméré quelques avantages de inconvénients d'utiliser Java pour coder UI à d'autres langues ci-dessous.

pros

  • Java possède déjà une grande bibliothèque pleine d'utilitaires utiles et constitue un bon point de départ à partir de laquelle on peut apprendre d'autres langues. Il existe de nombreux composants de balançoires bien testés prêts à être utilisés et des tutoriels en ligne qui vous donnent de bons points de départ pour de nombreux cas d'utilisation courants.
  • Découvrez le site Web Jogamp et essayez leurs démos. Je préfère utiliser C / C ++ pour effectuer le rendu et Java uniquement pour l'interface utilisateur, mais si la performance n'est pas critique, les API de Jogamp beaucoup de flexibilité en termes de contrôle du sous-ensemble de OpenGL que vous souhaitez utiliser.
  • Java a une prise en charge approfondie des bases de données et des servlets - Consultez le JDBC API.
  • Java est open-source et ne vous limite pas à utiliser un système d'exploitation IDE particulier (ou Système d'exploitation! ).
  • Java est livré avec un générateur de documentation intégré appelé Javadoc, et cela fonctionne vraiment bien. En fait, la documentation pour le JDK est généré à l'aide de celui-ci.

    contre

    • Java est une langue interprétée, de sorte que la performance sera généralement pire que celle des autres langues compilées.
    • Java vous oblige à encadrer votre logique de programme entière en utilisant des principes orientés objectés, même lorsqu'ils ne sont pas un bon ajustement pour votre cas d'utilisation particulière (E.G. Expériences simples et unique). Parfois, votre code peut finir par être beaucoup plus verbeux qu'il ne doit être nécessaire pour accomplir une tâche particulière.

      EDIT : Il existe de nombreuses ressources pour les débutants, tels que Celui-ci .


14 commentaires

La raison pour laquelle les gens ont changé quelque chose comme Java pour les travaux de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'interface graphique de l'ILS devaient une interface graphique de l'interface graphique de l'interface graphique.


Wow, j'étais sur le point de poster le même commentaire que @david, bien que non aussi soigneusement libellé soigneusement. +1


@ (M. HEFFERNAN): Java peut produire des Guisse natales avec le cadre AWT. En outre, jetez un coup d'œil au Nimbus Look and Sentez - de nombreux programmeurs de la négligence de l'utiliser (il faut environ trois lignes de code), de sorte que le mode de lecture métallique obsolète est utilisé par défaut: Download.orcle.com/javase/Tutorial/uiswing/lookandfeel/... .


@Void Connaissez-vous quelques exemples de Guis Java Native?


Bien sûr, tout composants de Java.Awt. * Servir en tant que liaisons sur des bibliothèques indigènes pour chaque OS: EN.Wikipedia. org / wiki / abstract_window_toolkit . Voici une applet en affichant certains d'entre eux: krhs.net/computerscience/java/componts.htm . La prise en charge des composants AWT est certes limitée; L'API Swing offre plus de ressources. Les composants balançoires sont beaucoup plus flexibles, bien que: Jogamp.org/Deployment/webstart/jogl -demos / xtrans.jnlp .


AWT pourrait être une option; Je ne sais rien à ce sujet. Mais je peux vous dire juste de regarder cette capture d'écran de Nimbus qu'il est pas sensationnel ou sentiment. C'est comme Mac OS X, Gnome et KDE avaient un enfant bâtard. Et il a l'air absolument horrible sur Windows. Je ne peux même pas imaginer essayer d'utiliser . (Parce que je ne le ferais pas. Une autre application, j'ai perdu du temps de télécharger de temps en premier lieu.) Je ne suis pas sûr de ce que la Big Hullaballoo est de skinner ou de fournir des gites "TEMBLES". Le système d'exploitation fait déjà cela. Un autre avantage est qu'il est disponible pour toutes les applications . Expérience utilisateur instantanément cohérente.


Nimbus fait partie de la balançoire; AWT est indigène et séparé. Vous pouvez obtenir des composants AWT à l'aide de Java - ils utiliseront la L & F de votre système d'exploitation. Cité de lien: "Pour Linux et Solaris, le système L & FS est" GTK + "si GTK + 2.2 ou version ultérieure est installé," Motif "sinon. Pour Windows, le système L & F est" Windows ", qui imite la L & F de la L & F de la L & F Cela concerne les fenêtres courantes, XP ou Vista. Le GTK +, le motif et les fenêtres L & FS sont fournis par Sun et expédiés avec le JAVA SDK et JRE, bien qu'ils ne font pas partie de l'API Java. " télécharger.oracle.com/javase/taturial/uiswing/lookandfeel/... < / a>


@Code Grey et sur MacOSX: Java.sun.com/Developer/technicalArticles/javalp/ Javatomac2 .


@Void Je suis intéressé par un exemple d'apporté d'application avec une interface graphique Java qui ressemble et se sent natif. Connaissez-vous d'un?


Je crois que Eclipse utilisera automatiquement la L & F par défaut de votre système d'exploitation; C'est une source ouverte et la majorité d'entre elles est écrite en Java: Eclipse.org .


J'ai pensé à Java mais c'est interprété la langue et a une très mauvaise performance.


Les gens exagèrent la performance de Java; Il y a peut-être une décennie, c'était vrai, mais à cause du schéma de collecte des ordures de Java et du JIT, il bat souvent des programmes C ++ utilisant une allocation statique en termes de performance. Il y a une raison pour laquelle Google utilise Java. De toute façon, je vous souhaite la meilleure chance dans l'apprentissage de la programmation!


@Void: Comme David, je suis très curieux de voir un programme écrit en utilisant l'une de ces boîtes à outils qui ont l'air natif. J'ai visité tous les liens que vous avez postés, mais les captures d'écran ont l'air affreux. Je suis sûr que certaines de ces choses ont l'air bien à Linux, mais je n'utilise pas Linux. Le Stuff OS X a environ 10 ans. OS X a été sorti de la bêta publique depuis quelque temps maintenant ... De plus, alors que je suis d'accord que pour la majorité des applications commerciales, le code JIT est pas un goulot d'étranglement de la performance (je suis un. PROGRAMMER NET), je ne pense pas qu'il est juste de prétendre que Java est plus rapide que C ++, lorsque vous le comparez à C ++ mal écrit.


@Code gris Le nombre de mots est ennuyeux et je trouve difficile de compacter ce que je dois dire; S'il vous plaît voir la modification que j'ai faite dans mon message d'origine.



15
votes

Si vous voulez effectivement apprendre l'API sous-jacente, vous devez commencer sans l'un des cadres.

Apprenez-le comme nous l'avons fait toutes ces années avec le livre de Charles Petzold, la programmation Windows. Un très bon fondement de la connaissance de la façon dont Windows et les messages fonctionnent vous serviront bien.

à long terme, un bon cadre, par exemple Winforms, Qt, VCL, etc. augmenteront la productivité. Mais si vous commencez par l'un d'entre eux, vous risquez de ne pas connaître la différence entre les messages envoyés et en file d'attente, sans connaître la différence entre un hwnd , un HDC et un gérer , et ainsi de suite.

Un bon cadre, c'est génial, mais vous en tirerez plus si vous comprenez ce qui est sous le dessous de cela.


0 commentaires

2
votes

Il existe différents codes d'échantillonnage disponibles au téléchargement. Je les ai trouvés très utile lorsque je commençais à apprendre à programmer pour Windows Phone.

Visual Studio fonctionne bien pour C #. Vous devriez probablement envisager de créer un compte avec Microsoft si via Outlook.com si vous envisagez de publier ce que vous développez.

Si vous souhaitez développer pour Windows 8, je vous conseillerais d'installer Windows 8 et de développer à l'aide de cela.


0 commentaires