C言語始めた。GUIまでたどり着ける気がしない
■ このスレッドは過去ログ倉庫に格納されています
初心者向けの本で勉強してるけど、実行したらコマンドプロンプトに色々表示されるじゃん? そもそもこの枠から脱出するプログラムって書けるのか?天才過ぎねーか 英単語帳のアプリ使いにくいから、自分に必要な苦悩だけ入れたアプリとか作ってみたいンゴ もう返信きてる……ありがと… >>6 表示かわいい グラフィカルコンソールなるものが使えるっぽいけど、これってこの本で独自に作られたやつなのかな?入門にちょうどよさそうだし見てみる なんか色々調べたけど、c♯っていう言語とvisual studioなるソフトがあると楽らしい c仲間なら今から乗り換えてもええよな visual studioも大学が無料で使わせてくれるから丁度よさげ あれ?なんかこの画面みたことある 5年前にvisual studio codeを再インストールしようとしたら出てきたやつやん… ここでわけわかんなくなってプログラミング諦めたんだよな……お前のせいだったんか… 釣りじゃなくても釣りでも相当頭悪いやつだな… スレタイからも想像できなかった反面教師にもネタにもならない低レベル 小学生でももっとちゃんと始められる 過疎板の自称上級者の下手くそ&キチガイっぷりは以上 なぜここまでイキりたがるのか… C#を徹底的に知り尽くすのは悪くないんじゃねーの? 他の言語を学ぶ時にも潰しが利く だが俺はC++とHaskellを知ってたお陰で C#のジェネリクスごときで躓いたりしなかったが 初学者には難しい所もあるかもなー ちゃんと本読んだ方が早いぞ オライリーとかのちゃんとしたやつをな >>10 みたいな初学者にマウント取り始める恥ずかしい奴は放っておいてC#でがんばれ >>1 GUIを学びたかったら Win32APIというのを覚える必要があるよ でもWinFormから作る方法もまあ一応存在する そっちの方が楽、だが現場では全く使い物にならんと罵倒される事になる >>14 >そっちの方が楽、だが現場では全く使い物にならんと罵倒される事になる 素人にわけわからんこと吹き込むなよ どんな現場を想定してるのか知らんが ネイティブAPIだっていつか廃れる 出来るだけ使いやすいライブラリを使って ライブラリがどうあるべきか理解する方がためになる どうせこれ学べば終わりなんてものは無いのだから 考え方の方が大事だ visualstudioやってみたけど、なんかプログラミングと言っていいのかわからんな 実戦で使うような便利ツールって感じだけど、学習でこれ使っても能力はあがるのだろうか まあわかろんしとりまC言語続けよ C♯とCの関連性はそんなに高くないのね むずそうだから逃げます。図書館で一冊借りて軽く眺めてみよう Visual Studio使ってるんだったらMFC + C++で手っ取り早くGUI作れば CとC++は関連性高いし MFCを若い奴に使わせるとか 自分と同じ苦労を経験しろ的な老害だろ >>20 C言語で簡単にGUI作りたいならそうなるだろ 今からやるのにMFCはないだろう まだFormの方がマシだと思う C#でGUI作って、速度が必要なところだけ C++/CLIで書けばいい 今からMFCとかWin32とか、動作環境激変してるから この先地獄見るぞ WPFとかWinRTとかスタンダードがコロコロ変わる ネイティブAPIすら今後はあやしい GUIツールキットには深入りせずに距離を置いた方がいい それ以上にMFCはコントロールのID管理周りがクソ過ぎる あれがクソだと分からない奴はロクなもんじゃない resource.hのコンフリクトでそのまま流用出来ないコードが山ほどあっただろ? >>23 通は、.rcファイルとResource.hを直書きですわ C#の機能やクラスのライブラリ化をしてるけど、C++/cliは速いわ C++入れても良いなら 1.wxWidgets 2.Qt Cに限るなら 3.Tcl/Tk 4.Win32API GTKは糞 C#入れて良いなら WPF Unity C++に追加で UE 他に DirectX とか OpenGL とか OpenCV とか使うのもあり ド素人がいきなりCをやる いつもの挫折パターンの典型ですわ >>22 MFCはダイアログ作成の部分は中途半端だし、全体的にへんなところが多いのは 同意するけれど、C#のC++/CLIでC++を使うというのはどうも納得できない。 スレ主の目的は将来性ではなくとりあえず手っ取り早くCでGUIを作ることなんだからMFCが適切だろ クロスプラットフォーム開発するなら、GUIは何がおすすめでしょうか? 商用利用可能かつ無料がいいです >>32 ネイティブにこだわりがなければHTML+CSSが一番簡単かつ汎用的 JavaScriptスレに自分用の英単語アプリ自作してるやついたぞ https://mevius.5ch.net/test/read.cgi/hp/1559474974/914 >>33 >>34 速度を求めるので、速いライブラリを希望します QTは商用利用出来ませんでした 何卒ご教授願います electronはちゃんと作れば十分速いぞ VS CodeやSikiを触って遅いと感じるならしょうがないけど >>31 MFCが将来性が無いというわけでもないと思うが。 なぜなら、もっともMSがOSや言語で輝いていたWin95時代から あるもので、もっともWindowsプログラミングで使われてきた環境だから。 >>38 MFCに比べれば起動が数十倍〜100倍くらい遅い。 WindowsでC++でプログラミングしようとすれば、Visual Studioで C++のMFCプロジェクトを使うのが標準。 C++を使いたいのにC#のプロジェクトを作ってC++/CLIを使うのは さすがにおかしいだろう。 今更MFCで業務システム書くのはアホ 普通は.NETでサクッと済ます パッケージソフトならもっとマシなクロスプラットフォームなツールキット使うか あるいは独自にネイティブAPIのラッパー層を構築してることが多いだろう 高度な仕事と簡単な仕事の二極化に取り残された 極一部のカビの生えた企業だけが 未だにWindows専用のネイティブアプリを MFCで作って保守してんだろうな >>37 >>38 electlonでも良さそうですが、少しでも速度を稼ぐ必要があります デザイナも使えるwxwidgetsも候補に考えています >>42 >パッケージソフトならもっとマシなクロスプラットフォームなツールキット使うか >あるいは独自にネイティブAPIのラッパー層を構築してることが多いだろう C++において、Visual Studioを越えるIDEが存在していないので、そうも 行かない。 >>45 でも、C++でWindowsプログラムを作るには、Visual Studioを使い、 C++プロジェクトを作成して始めるのが基本であり、C++プロジェクト で使えるのは、生Win32とMFCしかないはずで、MFCの方がIDEとの 統合具合が良いからMFC、ということになる。 頼みのVSですらオプション扱いなのにもうとっくにオワコンだよMFC >>47 であるなら、MS自体がC++を捨てようとしているというだけ。 しかし、C#とC++/CLIの組み合わせはいろいろと問題が生じるだろう。 >>46 俺の場合は昔からMFCなんて使わなかった ただプロジェクトによっては仕方なく使ってたけど結局はwin32apiを知らないと作れないしMFCだから楽になった記憶はあんまり無いな その後C#に移行したからもう10年以上やってないけど >>49 もしかして、当時、Visual Studio 2008 の Expression 版を使ってたの? そのころ、Visual Studioの無料版は、基本、それしかなくて、それではMFCが 使えない様になっていたから、日本ではWin32で書く人が多くいた。 C++は、vc++以外でも、コンパイラとしては gcc/clang/intel compiler、 IDEやツールキットとしては、CLion、Qt、C++Builder、XCode など色々有ってベンダーロックの危険性が少ないが、C#だとMS専用という 感じになるからMFC以上に将来の危険を感じる。 それに他の人のアプリやMS自身の作品を見ても遅い。 >>51 AndroidやiOSやμTRONでもC++は使えるし、 組み込みまで広げれば、ArduinoやPIC、ラズパイやH8やNECのマイコン でもC/C++は使える。 C#はそもそも無理か、メモリーを圧迫したり速度が遅すぎることが多い。 C#はLinuxでもある程度は使えても、完全には無理だと聞いてる。 >>44 >>46 IDEとライブラリがゴチャゴチャになってんのかよ 好きなIDEで好きなライブラリ使えや アホか 話にならん Microsoftは昔から ちゃんと使い物になる製品と どうしようもないゴミを同時に売ってんだよ >>53 >IDEとライブラリがゴチャゴチャになってんのかよ >好きなIDEで好きなライブラリ使えや MFCは Visual Studioと深く統合されているので、別のライブラリを使うのとは 訳が違う。 特にMenuの作成とそのハンドラと、Menuの有効/無効やチェック状態を管理する ハンドラがMFCを使っている場合にはIDEから容易に作成できる。 また、Win32のGUIの「Control類」をラッパしたクラスやそれを継承した独自クラスも IDEから簡単に作成できる。 ドッキングバーなどもMFCではサポートしているが、それもMenuからのメッセージを 受け取ることも出来るのでIDEと連携していると言えば連携している。 ダイアログは、WinFormsに比べれば作りにくいが、それでも簡単な数値や文字列を 入力するようなものは、IDEからグラフィカルに作れるので、Win32で手作りするよりは 楽。 他のライブラリを使っても、Visual Studioからはそんなことは出来ないと思う。 >>54 少しは他のプラットホームを使ってみろ タチの悪い大馬鹿め レイアウトマネージャの概念すら知らないんじゃないのか 無知の知が絶望的に欠落している どうしてお前が確かめたこともない領域に 未知のモノが広がっているに決まっているという 当たり前のことすら分からんのだ >>42 質問者の意図に沿った回答になるとMFCになるってだけ >>56 どの質問者だよ スレ主なら開始早々にC#に転びかけて GUI作りたい以外に大した拘りもないのは明らかなのに 今更MFCを押す奴に良心があるとは思えんね リンク先読んでも全然MFCやめとく理由見つからないのワロタwww >>57 タイトルに「C言語始めた」とあるんだから、C#は全く関係ない。 全然実行形態が違う全くの別物。 前者はマシン語に直るコンパイル言語だが、後者は仮想コードに直る インタプリタ言語。実行時に高速化のためにマシン語に直ることもあるというだけ。 C/C++だとRustやSwiftとも比較的容易にリンクできるが、C#だとそうはいかない。 LinuxやMacでも呼び出すAPIの関数名さえ変えてしまえばC/C++はそのまま動くが C#は仮想マシンが無ければ動かない。 また、WasmにしたときもC/C++はサイズが小さいが、C#だと大きくなるので使い物に ならない。 >>64 そしてSun/OracleのJavaはもともとWrite Once, Run Anywhereを目標にしていた から、実際に、WindowsでテストしたJavaアプリは、そのままLinuxやMacや ブラウザ上でも動いたが、C#だとWinFormsやWPFは原則動かないと聞いている。 動かすためには、特殊な専用のフレームワークを使う必要があるし、完成度が 低く、ちゃんとまともになるのは何年も先といわれているし、本当に完成するのか も定かではないので、最初から標準のフレームワークがWin/Mac/Linux/ブラウザ でマルチプラットフォームで動作したJavaとは根本的に異なる。 今 C で GUI のプログラム書くのはキ○ガイだ。 GUI は C# で作っときなはれ。 C は入門書に従ってコマンドラインだけで使っとればよろしい。 アンドロイドやiOsやLinuxもあるし、あまり.netに支配されたくないというか。 monoあるといってもGUI周りが・・・ これやれば終わりなんてもんは無いんだよ単細胞め どうせいろんな物がコロコロ変わっていくんだからな 経験が次につながるかって話 だからC#は悪くないんじゃねーのって話 面倒な道具を頑張って使うテクニックなんてのは いずれゴミになる可能性が高いので 簡単にいろんなことが出来るツールか 出来るだけ洗練されたツールから手を出せばいいんだよ 物分かりの悪いアホだな >>69 それは同意 初めからCやれと、アセンブリ言語わかってねーと使いこなせねーぜ?ウリウリ と言いたがる人は昔からいるけど、はっきり言って老害なんだよね 質問者はCでやりたいって言ってるんだからそこは尊重してやれよ やりたいことが明確にあるならより実現に近いルートとしてc#やるのもいい 言語覚えたいってならcをやるのもいいんでない 仕事じゃないなら自由だし両方つまみながらも出来るんならアリだし >>71 お前はいい加減、最初の20レス程度の流れぐらい把握しろや >>66 組み込みではCで書いているよ。 イベント、メッセージドリブンで、Label、Image、LstBoxやらWidgeをtypedefクラス化して表示している。 OS書いてるようなもの。 てか、他にはQt for MCUのようなプロプライエタリを使うしかない。 メジャーな言語ならググれば入門用のサイトが出てくるどころか、この板にある各初心者用のスレのテンプレにも役立つURLが書いてある そんな状況でこんなスレ立てるやつは勉強する気が無いけどかまってほしいだけだろう Cをやるのが合目的的でなかったらおすすめはしないでしょ 普通は rust とか go とかなくとも困らないけど、 CとCOBOLがないってのは困るな。 Win32でpng画像使った時て一つのexeにまとめる方法あるのだろうか? bitmapならexeファイルひとつになるのにpngだと外から呼び出す方法しかのってない... >>81 リソースかダウンロードを使えばできるよ。 FindResource、LoadResource、png_set_read_fnあたりだね。 >>82 ありがとう、何冊か書籍買って読んでも分からなかったんだ その単語で検索してみるよ リソースファイルに 100 PNG "my-file.png" って書いてFindResourceなどでメモリー上に読み込む。それを某png関数で読み込めば完了。 libpngをスタティックリンクする話じゃなかったのか 現在の知識では理解できなかった... とりあえずコメントをメモってわかるようになったら またやってみるよ >>85 エロゲー作るから他フォルダにまとめて使うようにするとフォルダー覗かれたら 内容がわかるのでそれを防ぐために一つのexeファイルにしようとしてるのだけど これがスタティックリンクのほうかな?(ググて流し読んだ) png使う処理もだけどまとめる処理もわからない状態で2つとも達成したい 現在の知識では、上の目的を達成できなさそうかな 単純にexeにリソース追加してもデータとして存在している事は調べたら分かるから 見られたくないという場合は暗号化をかけるなりの工夫が必要だな 一番簡単そうなのはzipでパスワードをかけて圧縮してフォルダに保存しておく方法かな ファイル名でパスワードの規則が変わるならバレにくい まあ、パソコン詳しくない人がフォルダあさって画像みてネタバレしないための処置だから ガチで見られたくないわけでもないが pngもbitmapみたいにoファイルにしてくっつけてるのかな?調べても分からなかった 現知識では理解できないということか bmpでできるならpngファイルをbmpにすればいい >>85 漏れも最初に質問読んでそうかと思ったが 第一解答者がエスパー過ぎてexeに埋め込む話だと良く判ったなと感心した 前者の発想はむしろプログラマとしては既に上級なのかも試練 NGあるのか? https://katahiromz.web. えふしー2.com/re/ja/ http://wisdom. さくら.ne.jp/system/winapi/win32/win72.html >>92 自分の理解度が低いため説明がうまくできない 質問の流れ↓ 1.bitmap画像を使用したゲームをつくっていて 2.画像枚数が多くbitmapでは容量がすごくなる 3.pngを使って軽くしよう 4.bitmapで制作したときは画像をrcファイルでoに変えて全部まとめてexe一つにしてた 5.pngは使用時は4の時みたいにまとめた状態で使うのどうするのだろう?←ココ png画像をつかう関数みたいなのは検索したらでてきたけど全部外から 使うのしか見つからなかったため まとめ方はbitmap と同じでいいのか?まとめた場合どうやって使うのか? の2つがわからない よくわからないが、見る限りまとめ方はrc使ってるのでbitmapと同じでいいということか 確認しようにもpngをまとめた後表示する方法が謎 書いてもらった情報の中にあるかもしれないが現状わからない でも、情報ありがとう >>94 >png画像をつかう関数みたいなのは検索したらでてきたけど全部外から >使うのしか見つからなかったため >まとめ方はbitmap と同じでいいのか?まとめた場合どうやって使うのか? >の2つがわからない 100. まず、MS標準のGDI+の Imageクラスには、*.png をファイルから読み込むものと、 IStreamから読み込むものとが有り、後者を使えば以下のようにしてメモリーから 読み込むことも可能 : IStream *pStream = SHCreateMemStream((BYTE *)pBuf, size); (ここで GDI+のImage クラスを使って ong ファイルを読み込む); pStream->Release(); 101. 任意のバイナリデータは、*.exe のリソースの中に埋め込むことが可能。 100 に関しては、こうするといけるはず : IStream *pStream = SHCreateMemStream((BYTE *)pBuf, size); IStream *pImage1 = new Image(pStream); pStream->Release(); 誤: IStream *pImage1 = new Image(pStream); 正: Image *pImage1 = new Image(pStream); 101 のリソースの中にバイナリデータを埋め込む方法は、ggって欲しい。 別にビットマップじゃなくてもバイナリデータは何でもリソースに追加出来るよ LoadResource()で読み込みLockResource()でポインタ取得出来る pngの表示はlibpng何かを使うしかVCでは無いかも 101 については、 https://stackoverflow.com/questions/13660850/is-it-possible-to-store-binary-files-inside-an-exe 2) Add it as a binary resource to the executable. You said "exe", did you? So you are likely on Windows. Window EXE files can have binary resources, that can be located using the resource API. See the FindResource, LoadResource and GlobalLock, functions. resource.rc ID_DATA_JPG FILE "data.jpg" >>98 後半、libpngを使わなくても、GDI+で BYTE *pBuf = (pngファイルのバイトデータの先頭アドレス); DWORD size = (バイト数); IStream *pStream = SHCreateMemStream(pBuf, size); IMage *pImage1 = new Image(pStream); pStream->Release(); とすればロードできる。 後は、GDI+の機能を使って、非常にいろいろなことが出来、Bitmapデータ として取り出すことも、HBITMAPにすることも、HDCに書き込むことも、 GDI+で描画することも、GDIで描画することも、DirectXで書き込むことも 何でも出来る。 質問板でないのに説明が悪く何回も 質問してしまったうえ、噛み砕いて説明してもらってすいません。 見ながら小さいプログラムで確認したいと思います ありがとうございました。 ゲームでは画像をまとめるのは、Sprite/Texture Atlas みたいなツール msのwin32apiのページに詳細にGUIハロワ解説載ってるからコピペしていじれ ポトペタが糞なのはUI変更のdiffが取りづらいこと。 使ってるカスタムコントロールのせいなのか知らんが、 プロパティ1つ変更するだけでDesignerファイルが ぐっちゃぐちゃに書き換えられた。 ちょうどwindows3.1でた当たりでプログラム始めた人が一番とっつき易かったね。直書きで全部書く時代だったし。 >>107 今はまたXML使って自分で定義する方向に回帰していきたかな RADが間違いだったよねぇ。 全体のアーキを考えなくなるのがRADの悪いところ。 行き当たりばったり。 >>20 WTLは楽だけど、やっぱコツがいるからな C++ builder がいいと思います。 書籍はヤフオクとかで買えるし。 昔の本も使えます。 CからC++の移行には これならわかるC++って本がすごく分かりやすかったです。 これもヤフオクにありますね。 正誤表見ないとメモリリークのあるコードなんだけど、なぜC++がいいのかよくわかります。 >>105 MSサイトに大体テンプレ揃ってるから、標準ライブラリ引いてコンソールプログラミングよりGUIから始める方が楽まである 完全にデジタルディバイド 猫でもわかるWindowsプログラミング読めば誰でも出来るよ。 わからなかったら猫以下w 最初Cを覚えただけではわかりにくかったこと win32api イベントドリブン コールバック関数 呼び出し規約 INTとかDWORDとかの型の存在理由 TEXTマクロ この辺をクリアしたらたいして難しくない気がする。 >>113 巻末のおまけとしてサンプルしか載ってないが 猫でもわかる〜はわからなかったら凹む人多そう。 難しいとは思わないけど簡単とも思えない。 プロセスとスレッドとコンテキストを理解して、 flutterでプラグインまで作れるようになると、 月200万円稼げます。 Cで実用的なもの作りたかったらarduinoオススメ 自分で作ったプログラムを五感で味わえるぜ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる