1 名前:デフォルトの名無しさん [2007/09/10(月) 12:20:27 ] 1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14 Visual C++入門者・初心者からの質問を、 お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html myu.daa.jp/osiete/ ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 。
567 名前:563 mailto:sage [2007/11/01(木) 09:05:27 ] .NET の方にはなにかないですか?
568 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 10:39:24 ] スレ違い
569 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 11:13:48 ] >>567 死ね
570 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 13:32:02 ] >>567 死ね
571 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 14:09:14 ] >>567 死ね
572 名前:デフォルトの名無しさん [2007/11/01(木) 14:38:35 ] >>567 生きろ
573 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 18:31:21 ] >>567 C++なんだから、そこだけネイティブで>>566 とすればいいじゃない。
574 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 09:24:11 ] WM_CREATEの中でBeginPaintって出来ませんか? WM_PAINTじゃなく、CREATEの中でLineToとか一度だけの表示をしてしまいたいんですが・・
575 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 10:27:48 ] いちいち聞かなくても好きなところで書けばいいよ 自分でやってみればわかるから
576 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 16:09:17 ] ウィンドウを常に画面の右上に固定や左下に固定で表示させるのはどうしたらいいでしょうか? CreateWindow内で座標を指定するのではなく、どのPCで開いてもちゃんと画面左上などの位置にぴったり表示させたいんです。 分かる方お願いします。
577 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 16:13:46 ] 座標を指定する
578 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 16:20:15 ] その座標を指定するというのはディスプレイサイズが分かる関数があるんでしょうか?
579 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 16:53:56 ] VC++って何?ってところから勉強したいんですけど、オススメの書籍ありますか? C#は1年くらいやったんですが、VC++は初めてで・・・
580 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 19:25:33 ] VC++って何?という状況だと勧められるものはない
581 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 21:40:14 ] >>574-575 これくらいは、実験するよりも仕様を確認するほうがいいと思う。 msdn2.microsoft.com/en-us/library/ms534894.aspx
582 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 21:45:32 ] >>578 GetMonitorInfoとかそこら辺を使う
583 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:47:14 ] GetWindowRect で十分な気がする
584 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:18:39 ] 初心者スレでいきなり敷居の高い話をし始める>>582
585 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 07:52:54 ] MonitorFromWindowで自分のいるモニタのハンドルとって、 GetMonitorInfoでそのモニタの作業領域を取得するだけ。 簡単だろ。
586 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 09:20:02 ] GetWindowRect一回呼ぶだけ
587 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 12:32:56 ] GetWindowRectのウィンドウハンドルには、何を指定すればいいのですか?
588 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 13:54:10 ] RECT rect; GetWindowRect(GetDesktopWindow(), &rect);
589 名前:デフォルトの名無しさん [2007/11/04(日) 02:31:20 ] Visual C++6.0でSTL(mapやset)を使ったコードをデバッグ情報を生成する オプションを指定してコンパイルすると、鬼のように長くてたくさんの 警告が出ます。警告の内容は、"デバッグ情報で識別子が255 文字に切り 捨てられました(warning C4786)"というものです。 この問題を回避するには次の選択肢の中から選ぶしかないのでしょうか? (1) 警告を表示しないようにする → 他の便利な警告を受け取ることができない。 (2) デバッグ情報を生成しない。→ デバッガが使えない。 (3) 死ぬほどたくさんの警告メッセージを我慢。→ 非常につらい。 (4) STLを使わない。→ それは無理。
590 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 02:36:06 ] #pragma warning (disable: 4786) が常套手段
591 名前:589 mailto:sage [2007/11/04(日) 03:54:29 ] >>590 うまくいきました。感謝します。
592 名前:デフォルトの名無しさん [2007/11/05(月) 16:44:09 ] tserve01.aid.design.kyushu-u.ac.jp/~fujiki/vc_lecture/c_6.htm のお絵かきソフトを作るページを参考にしてるんですが 「ToolBar」の「IDR_MAINFRAME」のボタンとIDを書き換えても ページに書かれているようなIDに対応するような関数が作られず ボタンも描いたように表示されず灰色の使用不可のような状態 になってしまいます。 VS2005stdです。 どなたか、わかるかた、VS2005ではどうしたらよいか教えていただけないでしょうか。 お願いします。
593 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 16:50:01 ] >>592 マルチ死ね
594 名前:592 [2007/11/05(月) 16:56:38 ] マルチしてすみません。 ただ「くだすれVisualC++(超初心者用)」のほうが1000レスいったので こちらでも質問ささしてもらいました。 すいませんが教えてください。
595 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 17:34:30 ] ツールバーにハンドラ追加する方法なら少し前に誰かに教えたから過去ログ見ればいい ウイザードから追加する方法は知らん
596 名前:デフォルトの名無しさん [2007/11/05(月) 19:09:58 ] メモ帳で[F5]を押すと日付と時刻がペーストされますが、 Visual C++のエディタでも同じことができるでしょうか? できるなら方法を教えてください。
597 名前:デフォルトの名無しさん [2007/11/05(月) 19:32:57 ] 自分で[F5]を押せば分かるだろ?
598 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 19:59:39 ] Std以上のVCならマクロで簡単に出来るよ。もちろんキーボード割り当ても可能。
599 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 20:40:23 ] unicodeにすると char→CStringをどうやって渡すのかわからないです。 ヒントでいいから教えていただければ、、つД`)
600 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 20:46:28 ] CStringのコンストラクタ
601 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:21:27 ] CString は TCHAR データ型をもとにしています。 プログラムでシンボル _UNICODE が定義されたときは、 TCHAR 型は 16 ビット文字型の wchar_t 型として定義されます。 それ以外は、通常の 8 ビット文字型 char で定義されます。 Unicode 環境下では、CString オブジェクトは 16 ビットの文字で構成されます。 Unicode 環境以外では、CString オブジェクトは 8 ビットの文字で構成されます
602 名前:599 mailto:sage [2007/11/05(月) 22:46:31 ] >600 >601 ありがとう。 ちょいとそれを頭に入れてググル先生に聞いてみます。
603 名前:デフォルトの名無しさん [2007/11/05(月) 23:04:43 ] 初心者は黙ってVC++でMFCでウィザードでサクサクやるのがいいですよね?
604 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:14:49 ] いい というのは何を根拠として良いと判断するんですか?>>603
605 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:17:45 ] VC++がどーだ、MFCはあーだこーだ言ってないで、 サクサク作れるんだから作った方が勉強になるという意味で、 いいと思いますが。
606 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:26:12 ] サクサク作れない
607 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:32:03 ] MFCウイザードでさくさく作れる香具師は、 MFCウイザードがなくたってサクサク作れる。
608 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 07:54:50 ] MFCキライなヤツが増えたな。
609 名前:デフォルトの名無しさん [2007/11/06(火) 18:13:37 ] ダメ! MFCで人生を棒に振った悲しいプログラマが、いったい何人いることやら。 MFC犠牲者慰霊の塔の下に眠っている幾千幾万のプログラマたちが 成仏できずに毎晩、悲痛なうめき声をあげて助けを求めているというのに。 マイクロソフト社さえ見放した禁断の果実MFCを、なぜ今更? もうこれ以上、犠牲者が増えるのを善良な市民として見ていられない。 忘れなさい。MFCの事は忘れなさい。記憶の底から消し去るのです。 MFCなんて見なかった。聞かなかった。この世に存在しなかった。 いいですね?わかりましたね?
610 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 21:54:51 ] ダメ! .NET で人生を棒に振った悲しいプログラマが、いったい何人いることやら。 (ry
611 名前:デフォルトの名無しさん [2007/11/06(火) 22:13:12 ] VC++でWin32アプリならいい?
612 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:47:36 ] VisualC++6 と VisualC++.NET の差がわかりません 差はないのでしょうか? 今から始めるならVC.netでいいんでしょうか? VCに興味を持っている理由は .NET Frameworkとかの ランタイムのインストールをしなくても動くEXEが作れるらしいから、と DirectXでゲーム作ろうとしてもC++の参考書しかないから、なのですが VC.NETで作ったEXEは .NET Frameworkがないと動かないものになるのですか?
613 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:56:01 ] Visual C++ .NET 2002はVisual C++ 7.0、.NET 2003は7.1相当。 .NET抜きにして、C++コンパイラとしても開発環境としても機能は上がっている。 .NET Framework使うプロジェクトを作らなければ、 Visual C++ .NET 2002/2003でも.NETなしのネイティブプログラムが作れる。 ちなみに、現在の最新版は2005 (8.0)。ただ、上に書いたような事情は変わらず。
614 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:11:39 ] >>613 ありなとうございまつ 早速VC++2005EEをインスコしますた しかしネットだと.NET Framework使うプロジェクトか HalloWorldみたいなウインドウすら出てこないのの解説ばかりでつなorz 猫でもわかるプログラミングでも観ることにするでつよ
615 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:15:34 ] >HalloWorld 早くもオリジナルな要素を取り入れてるのか
616 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:24:29 ] >>614 SDK入れなウィンドウの表示なんてできへんで〜
617 名前:デフォルトの名無しさん mailto:age [2007/11/07(水) 00:59:03 ] すみませんが質問です。 大量のログをとれるようなDOSプロンプトというか、コンソールエミュレータと いうようなものを作る場合、リッチエディットコントロールを使うのがよいので しょうか? それともwin32アプリにしてしまって、入出力をリダイレクトするのが良いので しょうか?
618 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:00:01 ] >>615 もまい、やさしいでつね >>616 www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/ をやらないと.NET Frameworkなソフトしか作れないということですか?
619 名前:デフォルトの名無しさん [2007/11/07(水) 01:08:09 ] >>617 特に見栄えを気にしなくてもいいのなら、「コンソールアプリ」 にするのがいちばん簡単だよ。 ログを取るだけで、画面にスクロール表示する必要がないのなら、ふつーにウインドウアプリ でもいいし。ログだけファイルに落とせればじゅうぶんだろ?
620 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 07:29:29 ] >>619 レスサンクス スクロールは使いたいですね。ログは軽く64kb以上になるので、リッチ エディットコントロールしかないかな、と。 イベントのことはよく分かりませんけど、CLIを真似する以上はEnterキーを 見張らないとダメそうで、どうしたもんだかと悩みますね。 teratermのログ機能と、DOSプロンプトが合体したような感じが望ましいの です。
621 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 08:39:00 ] ログ取るのにリッチエディットコントロールが出てくるのが意味不明だったけど それぐらいの容量なら普通のエディットコントロールでも余裕でいける
622 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:47:52 ] >>621 CREATEしたときにEM_SETTEXTLIMITを投げればいい、って言ってくれればいいのに。
623 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 23:12:57 ] AllocConsole
624 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 23:19:28 ] 上のGetWindowRect(GetDesktopWindow(), &rect);について質問です。 この関数でrect.leftをはじめ、ディスプレイサイズの取得が出来るのは分かるのですが、 それによってウィンドウの表示位置を変えていくのであれば、WinMainの中のCreateWindowの水平、垂直位置の更新をしなければいけませんよね? その方法ってのはどうやるんですか?一応ウィンドウの雛形やCreateWindowの再描画などで調べたんですが、さっぱりでして。
625 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 23:50:41 ] 起動時に位置を設定したいならCreateWindowに好きな位置を渡すだけだし 後で変えたいならMoveWindowとかSetWindowPlacement()など。
626 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 23:56:40 ] >>625 取り敢えずMoveWindowについて調べてぱっと記述してみたらできました。 SetWindowPlacementについてもまた調べてみたいと思います。 ありがとうございました。
627 名前:デフォルトの名無しさん [2007/11/08(木) 00:43:31 ] うは、Win32プロジェクトがないw イラネw
628 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:55:37 ] Windows SDKでも入れて、 あとは適当なプロジェクトを作って、適当にオプションいじっておけ。
629 名前:デフォルトの名無しさん [2007/11/08(木) 07:17:34 ] MUIに対応したものを作りたいのですが、 .rcconfigファイルの中身をどう書いたら良いかご存知の方はいませんか? サンプルアプリケーションを見てみたのですが、 <resourceType typeNameId="#4"/> の4が何を意味しているのかがわかりません。。
630 名前:デフォルトの名無しさん [2007/11/08(木) 07:30:10 ] C#やっている人がC++やってもわからないよね?
631 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 11:09:42 ] >>627 貧乏人乙w
632 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 20:44:10 ] スタンダード以上だと別途PSDK入れなくても Win32プロジェクトが最初から選べるのに気づいた ところでWin32プロジェクトってインテリセンスが 使えないんだが設定が悪いのか?それとも仕様?
633 名前:デフォルトの名無しさん [2007/11/08(木) 23:06:47 ] LNK2001: 外部シンボル ""public: virtual void __thiscall CWnd::DoDataExchange(class CDataExchange *)" (?DoDataExchange@CWnd@@UAEXPAVCDataExchange@@@Z)" は未解決です。 Visual Studio 2005でMFCのアプリケーションをコンパイルすると 上のようなエラーがいっぱいでるのです。 これはどうやって回避すればいいのでしょうか?
634 名前:デフォルトの名無しさん [2007/11/08(木) 23:12:48 ] ダメ! MFCで人生を棒に振った悲しいプログラマが、いったい何人いることやら。 MFC犠牲者慰霊の塔の下に眠っている幾千幾万のプログラマたちが 成仏できずに毎晩、悲痛なうめき声をあげて助けを求めているというのに。 マイクロソフト社さえ見放した禁断の果実MFCを、なぜ今更? もうこれ以上、犠牲者が増えるのを善良な市民として見ていられない。 忘れなさい。MFCの事は忘れなさい。記憶の底から消し去るのです。 MFCなんて見なかった。聞かなかった。この世に存在しなかった。 いいですね?わかりましたね?
635 名前:デフォルトの名無しさん [2007/11/08(木) 23:18:21 ] マイクロソフトは、.NETの成功に関わらず C++の開発を進めています。 次に発売するVisual StudioのMFCには、Vista用のWindowsメッセージの追加。 XmlLiteなどなど、お楽しみがいっぱいです。
636 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 23:22:34 ] そんなことよりもATLのopen source化をだな
637 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 00:06:25 ] >>633 VS2005の修復で直らなければ再インスコ
638 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 00:11:36 ] マイドキュメントのVisual Studio 2005のフォルダをまるまるノートにコピーして プロジェクトを開いたところ,作成していたプログラムの中のラベルが全て 黒塗りに表示されてしまいました。 ビルドして実行しても黒塗りは変わりません。 直す方法はありますか?
639 名前:デフォルトの名無しさん [2007/11/09(金) 00:45:40 ] PSRTとかLPSTRってString型みたいなもんですか?
640 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:22:46 ] >>639 ちゃうよ
641 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 05:46:56 ] 全くの無知なんですが、C・C++を覚えたいと思います。 まず何をするべきでしょうか?
642 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 06:24:21 ] C/C++のコンパイラをインストール このスレに来たからにはVisualC++だな
643 名前:デフォルトの名無しさん [2007/11/09(金) 06:31:52 ] >>642 把握d とりあえずいろいろ調べながらいじってみます! スレチに気付いたら黙って消えますw
644 名前:デフォルトの名無しさん [2007/11/09(金) 14:10:53 ] VisualC++のwindowsフォームアプリケーションで スクリーンキーボードを作ってるんですが 初期のウィンドウを非アクティブ化することができません。 どうしたらいいでしょうか?
645 名前:デフォルトの名無しさん [2007/11/09(金) 16:13:31 ] >>644 初期のウィンドウってなに? キーボード?
646 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 17:33:59 ] systemやgetchといった関数が「認識されません」というふうにエラーが出ます。 #include<windows.h>や#include<conio.h>のヘッダが登録できてないのでしょうか。 またそうであれば、やり方を教えてください。 よろしくお願いします。
647 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 17:43:48 ] windows.hとconio.hをインクルードしてもsystemやgetchは使えない。 systemを選択してF1押すべし。
648 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 17:53:24 ] >>647 選択とはドラッグでいいんでしょうか。 F1押すとヘルプが出るんですが、どの時点で押せばいいんでしょうか・・・
649 名前:デフォルトの名無しさん [2007/11/09(金) 18:00:11 ] ・まず、画面に出たエラーメッセージをよく読んでみてごらん。 読んでも分からないなら、省略せずにそっくりそのまま掲示板に貼り付けて質問しよう。 ・system関数を使うのに必要なヘッダファイルは何かな? (あえて正解は書かないよ。自分で調べる練習しなさい。宿題です) ・getchも同様。 Visual CコンパイラはIDE統合開発環境と、コマンドラインの2種類がある。 ・IDEはIDEの使い方を覚えなきゃいけないという障害は立ちふさがる。 ・コマンドラインのコンパイラは環境変数の設定とかなんとかメンドクサイ。 どちらも超初心者には敷居が高い。独学はかなりの覚悟が必要。 だれか先生になってもらってくれる人がいればいいんだけどね。
650 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 18:13:30 ] >>649 エラーメッセージは 'getch': 識別子が見つかりませんでした 'system': 識別子が見つかりませんでした です。 ヘッダファイルは <windows.h> <conio.h> だと思います。 違っていたら、調べ直すので指摘だけお願いします
651 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 18:25:31 ] 違ってます。 選択の説明しようと思ったけど指摘だけとのことなので省略。 まーがんばれ
652 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 18:53:40 ] windowsがどっからくるのよ stdlib
653 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 19:40:50 ] ::CreateProcessかなんかと勘違いしてるんだな 俺にはわかる
654 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 20:34:42 ] コンパイル通りました。ありがとうございました。 実はttp://fatalita.sakura.ne.jp/TubeRPG/のサイトのlesson1を 実行したかったのですが、コンパイルは通っても画面がすぐに消え "ハンドルされていないwin32の例外が発生しました" と出て実行できません。 何がおかしいのでしょうか。
655 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 21:36:28 ] そんな糞サイトの後始末頼まれても迷惑 書いた本人に直接聞けよ
656 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 00:33:26 ] うは、声がきもい。 インデントが変態。 空白の明け方がへぼい。 思考の流れが行き当たりばったり。
657 名前:デフォルトの名無しさん [2007/11/10(土) 01:27:18 ] 面白そうなのでオレも見てみた。 インデントが変???ぜんぜん変じゃないんだけど・・・ っつう事で、>>656 がどんな立派なコードを書いてるのか、期待age
658 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:27:26 ] www.wisdomsoft.jp/dev/api/windows/004 の #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { CHAR chStr[128]; wsprintf(chStr , "インスタンスハンドル : %d" , hInstance); MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK); return 0; } が エラー 1 error C2664: 'wsprintfW' : 1 番目の引数を 'CHAR [128]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照) c:\documents and settings\gald.pc-p4gald\デスクトップ\sdaf4e\sdaf4e\asdf.cpp 7 エラー 2 error C2664: 'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) c:\documents and settings\gald.pc-p4gald\デスクトップ\sdaf4e\sdaf4e\asdf.cpp 8 というエラーで実行できないんだけど なぜでございましょう? つか、VBやらC#の型はわかりやすいのに WCHARとかTCHERとかLPSTRとか理解しにくい型が多くて苦しい
659 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:31:08 ] >>658 エラー通りだな CHAR chStr[128]; を TCHAR chStr[128]; に変更すればいいんでない? それでエラーが出るなら、<tchar.h>をインクルードすればOK
660 名前:デフォルトの名無しさん [2007/11/10(土) 01:32:52 ] プロジェクトがユニコードになってるからだよ。 ANSIに変更しよう。 初心者がかならずつまづく超FAQだね。
661 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:42:19 ] 何回も同じ質問を見てるな テンプレにでも入れた方がいい気がする
662 名前:若者は馬鹿者 ◆KorX0HCHGU mailto:sage [2007/11/10(土) 01:43:24 ] >>659 #include <windows.h> #include <tchar.h> int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { TCHAR chStr[128]; wsprintf(chStr , "インスタンスハンドル : %d" , hInstance); MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK); return 0; } エラー 1 error C2664: 'wsprintfW' : 2 番目の引数を 'const char [26]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) だそうでつ >>660 プロジェクトのプロパティ-構成プロパティ-全般 の 文字セットを「Unicode文字セットを使用する」から「設定なし」にしたら 上記のコードが動いたわけですが、 これはソースコードそのものがUnicodeだったからダメだったってことでつか? 理由がよくわからんです
663 名前:デフォルトの名無しさん [2007/11/10(土) 02:01:46 ] >>662 ユニコードじゃ無いアプリケーションを、ユニコードアプリケーションとしてコンパイルしようとした。 www.wisdomsoft.jp/dev/api/windows/003 ここには「将来性を考えて、これから文字コードは Unicode を用いるべきです。 」とか書いてあるけど・・・ 初心者はユニコードアプリには手を出さんほうがいいよ。もうすこし慣れてからがいい。 よっぽど注意深くコーディングしないと、ワケワカランことになるよ。
664 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 02:03:43 ] >>662 _T("インスタンスハンドル : %d") とすれば、いいよ TCHARってのは、コンパイル時に自動で、マルチバイト文字セットとUNICODE文字セットを切り替えてくれます 文字リテラル("文字列"とか'a'とか)については、_Tもしくは、TEXTマクロで、マルチバイト文字セットとUNICODE文字セットの変更を自動でしてくるようになります ソースコードがUNICODEとか言うんじゃなく、現在扱っている文字が何なのかをコンパイラに教えてやる必要があるって事です それを省略したら、勝手に、ANSIとかOEMとか言う文字セットとして扱われるって事です
665 名前:デフォルトの名無しさん [2007/11/10(土) 03:09:35 ] 非ユニコードアプリとユニコードアプリの差をまず理解しないとだめってことでつね
666 名前:デフォルトの名無しさん [2007/11/10(土) 10:46:55 ] 今、ゲーム作ってるんですけど教えてください。(ゲ製作で聞くべき?) ゲームの画面を(ウィンドウが隠れたりしても)表示させるために WM_PAINTで BitBlt(hDC2,0,0,200,200,GetDC(hWnd),0,0,SRCCOPY); てな感じでhDC2に退避させて、ウィンドウが隠れたりして再表示する時に hDC2から持ってくる・・・という風にしたいんですが、 1.WM_PAINTの部分で画面を退避させるという事は変でしょうか? 「普通はこうやる」っていうのがあれば教えて頂きたい。 2.退避させた画面はどの部分(ハンドラ)で戻すべきですか? 今のところ、WM_TIMERで一定時間ごとに戻してるのですが・・・
667 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 10:56:55 ] 予めメモリDCを作っておいて、描画は全てそこへ行う。 WM_PAINTでは、そのメモリDCからウィンドウDCへのBitBltに限る。 ってのが普通。
668 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:32:26 ] >>667 いまどきそんな原始的な方法なんかw
669 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:38:55 ] でも666はありえないだろ。 話はそれるがReleaseDCしていないのも目に付くし。
670 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:42:02 ] >>657 void main() {
671 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:43:53 ] 夫失敬。 >>657 void main(){ while (1) { DrawMap(); } } -- 変態かどうかは兎も角、不思議なコーディングスタイルだとは思う。
672 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:32:33 ] めんどくせー > VC++ Formねーじゃん どうやってGUIつくんだよ
673 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:46:10 ] 珍しいVC++だね。ウチのにはForm付いてるよ。
674 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:56:55 ] うちのはintも付いてない
675 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:03:24 ] それVirtualConsoleだろ
676 名前:デフォルトの名無しさん [2007/11/11(日) 01:40:15 ] VC6.0でプログラムしています。 MFCは使わず、APIのみ。 ダイアログボックスにコンボボックスを貼り付けて 内容(数字)をリストから選択するような動作をさせたいと思っています。 ワードでフォントを変更するときのコンボボックスのようなイメージです。 VC上でダイアログボックスにコンボボックスを貼り付け、 コンボボックスのプロパティのデータ にある”リストボックス項目の入力(N)”に 選択したい数字のリストを並べれば良いかと思ったのですが 実際に動かしてみると コンボボックスの▼を押してもキーボードの↓を押しても リストが現れません。 やり方が間違っているでしょうか? 関係ないかもしれませんが手元の参考書ではリストボックスを使用する場合の方法が書いてあり リストボックスを初期化するにはSendDlgItemMessage()関数を使用するとのことだったので 試しにやってみましたがリストボックスではリストに文字列を追加できましたがコンボボックスでは追加されませんでした。 内容に不足などありましたらご指摘をお願いします。
677 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 05:28:25 ] >コンボボックスの▼を押してもキーボードの↓を押しても >リストが現れません。 ああこれね
678 名前:676 [2007/11/11(日) 07:36:53 ] >>677 おはようございます。 良くある質問でしょうか? 申し訳ないですが質問内容が間違ってました。 ▼ボタンを押すとドロップダウンリストは出ます。 しかし、中が空っぽです。 リソースエディタで入力した内容を反映させたいのですが。
679 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 08:28:15 ] 早まって答えなくてよかった >リストボックスではリストに文字列を追加できましたがコンボボックスでは追加されませんでした 問題はこれか
680 名前:96 [2007/11/11(日) 09:14:14 ] リソースエディタのコンボボックスまわりの内容はこんな感じです // Dialog // IDD_CONFIG DIALOG DISCARDABLE 125, 110, 194, 95 STYLE DS_SYSMODAL | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION CAPTION "CONFIG" FONT 9, "MS Pゴシック" BEGIN LTEXT "コンボボックスで値を選択してください",IDC_STATIC,7,19,77,8 PUSHBUTTON "OK",IDC_CONFIG_OK,133,14,26,15 COMBOBOX IDC_COMBO2,86,16,46,71,CBS_DROPDOWNLIST | CBS_NOINTEGRALHEIGHT | WS_TABSTOP END // Dialog Info // IDD_CONFIG DLGINIT BEGIN ←コンボボックスのリストに表示したい値(1〜20の数字) IDC_COMBO2, 0x403, 2, 0 0x0031, IDC_COMBO2, 0x403, 2, 0 〜〜〜〜省略〜〜〜〜〜〜〜〜 IDC_COMBO2, 0x403, 3, 0 0x3931, "\000" IDC_COMBO2, 0x403, 3, 0 0x3032, "\000" 0 END
681 名前:676=680 mailto:sage [2007/11/11(日) 09:15:52 ] 名前欄ミスしました。
682 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 09:31:42 ] リソースレベルでコンボボックスのデータを定義できるのはMFCの独自機能。 リソースビューの*.rcを選んでプロパティを見てもらえば分かるが、 'Mfc Mode'という項目が用意されている。 これをFalseにすると、コンボボックスのプロパティでData部分が無効になる。
683 名前:676 mailto:sage [2007/11/11(日) 13:38:36 ] >>682 なるほどそういうことでしたか。 ありがとうございます。 リストの値をSendDlgItemMessage()関数で追加できないと書きましたが 参考書で引数に LB_ADDSTRING を指定しているところで CB_ADDSTRING を指定するようにしたところリストに追加できました。 ありがとうございました。
684 名前:デフォルトの名無しさん [2007/11/11(日) 15:40:55 ] 質問させてください。 Visual C++ .net 2005で開発を行っています。 フォーム(Form1)やピクチャボックス(pictureBox1)に簡単なグラフを表示させたいのですが、 button1_Click等で描画すると、一度非表示になった部分の線が消えてしまいます。 Form1_Paintイベント内で描画すれば解決するのですが、毎回データを読み込んだり計算するのが 無駄に感じます。 Form1で非表示になった部分を消さないための方法はあるのでしょうか? または、なんらかのバッファに描画して、それをForm1_Paint内で毎回読み出すという方法のほうがいいのでしょうか? そのための方法等があれば教えてください。 よろしくお願いします。
685 名前:684 mailto:sage [2007/11/11(日) 15:44:04 ] 補足 線は、 Graphics^ gr = pictureBox1->CreateGraphics(); Pen^ pen1 = gcnew Pen(Color::Black,2); gr->DrawLine(pen1,10,10,200,200); こんな感じで書いています。
686 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:25:30 ] >>684 Imageに描いて、Paintイベントでgr->DrawImage
687 名前:648 mailto:sage [2007/11/12(月) 00:13:47 ] >686 なるほど、ありがとうございます。 Bitmapをバッファとして使い、Graphics::FromImageで取り込んだイメージに対して、 描画を行いました。おかげでうまくいきました。 ↓みたいな感じでよろしいでしょうか? 何か改善点があればご指摘お願いします。 Bitmap^ bmap1; private: System::Void mnDraw_Click(System::Object^ sender, System::EventArgs^ e) { Pen^ pen1 = gcnew Pen(Color::Black,2); Graphics^ gr1 = Graphics::FromImage(bmap1); gr1->DrawLine(pen1,10,10,100,100); // gr1->Dispose(); //なぜかエラーになる Form1::Refresh(); } private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { bmap1 = gcnew Bitmap(200,200); } private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { e->Graphics->DrawImage(bmap1,100,100,200,200); }
688 名前:デフォルトの名無しさん [2007/11/12(月) 00:15:57 ] >>687 Bitmap^ の 「^ 」 ってどういう意味?
689 名前:若者は馬鹿者 ◆KorX0HCHGU mailto:sage [2007/11/12(月) 00:16:21 ] Win32アプリ開発で VSの出力の部分にウインドウメッセージを表示したいのですが .netでいうSystem.Diagnostics.Debug.Printに相当する機能はないですか?
690 名前:デフォルトの名無しさん [2007/11/12(月) 00:18:17 ] >>689 ドットネットの質問は他所でやれ馬鹿者!
691 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:24:38 ] >>690 には>>689 が”ドットネットの質問”に見えるらしいw
692 名前:684 mailto:sage [2007/11/12(月) 01:09:01 ] >688 自動でガーベージコレクションをやってくれるようです。ようは、使い終わったら勝手にメモリを開放してくれるらしい。
693 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 03:14:25 ] >>692 なるほどー 2005からの機能ですね
694 名前:デフォルトの名無しさん [2007/11/12(月) 08:44:30 ] win32APIで虫眼鏡のプログラムを作ってます。 メモリデバイスコンテキストでマウスカーソル周辺を拡大したものを ディスプレイのデバイスコンテキストに転送してるんですが、 マウスを移動させたときに先ほど拡大した部分を元に戻して 移動先のマウスカーソル周辺をまた拡大という風にしたいんです。 ですが、毎回GetDC(0)をしたとしても拡大した後のディスプレイでは初期化できないし、 hdc2という二つ目のデバイスコンテキストに拡大前の状態を退避させて hdc1に復活させようと思ったのですがうまくいきません。 さらに、メニューを開いたり新たにソフトを起動させたりと、 刻々と変化するディスプレイの状態を追いかけつつ拡大できるようにしたいのです。 探し方が悪いのかもしれませんが、 いろいろ検索しましたが良い解決法が見つかりませんでした。 それに虫眼鏡のプログラミングを解説してるサイトもなさげだし・・・。 このような場合、どのような方法を用いればいいのでしょうか? よろしくお願いします。
695 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:49:55 ] MSDNのサンプルじゃダメなの? /****************************** Module Header ******************************* * Module Name: zoomin.c * * Microsoft ZoomIn utility. This tool magnifies a portion of the screen, * allowing you to see things at a pixel level. * * History: * 01/01/88 Created. * 01/01/92 Ported to NT. * 03/06/92 Cleanup. * ****************************************************************************/
696 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 10:35:31 ] 一応 .netを使ったC++/CLI は、普通のC++とは全く別物 .net使いたいならC#がいいと思う
697 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:45:26 ] argcとargvについて教えてください。
698 名前:694 mailto:sage [2007/11/12(月) 13:27:05 ] >>695 そのページってどこを探したらありますかね? MSDNのサイト調べても見あたらなかったんですが…。 教えて君で申し訳ありません。
699 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:26:41 ] >>698 Platform SDKはインストールしてる?
700 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:51:17 ] Visual Studio 2005を使って、DirectXプログラムを作ろうとしてます。 ちなみにOSはWindowsXP Home Editionです。 ネット上の解説サイトで、Visual C++ Express Editionを使って Windowsアプリケーションを作成する場合にはPlatform SDKが必要と書いてあるんですが、 Visual Studio 2005を使う際にもPlatform SDKをインストールしておいたほうが良いでしょうか?
701 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:58:14 ] 今ならPlatform SDKよりWindows SDKお勧め。 DirectXには、DirectX SDKが必要。 ただし、DirectShowには上2つの内どちらかが必要。
702 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:04:12 ] >>701 ありがとうございます。 DirectShowが何かよくわかりませんが、 解説本がPlatform SDKで進めているので、 これとDirectX SDKでやってみます。
703 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:20:49 ] VisualC++ Expressでプログラム製作をしています。 プログラム実行中にコードを書き換えてAlt+F9を押すと、動的にプログラム の内容を変えてくれますが、ボタンを押しても出来ない時があります。 これは何が原因なのでしょうか?
704 名前:700 mailto:sage [2007/11/12(月) 20:24:35 ] 度々すみません。 DirectXのテストをしようと、 D:\Program Files\Microsoft DirectX SDK (November 2007)\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice\CreateDevice.cpp を自分のプロジェクトフォルダにコピー、既存の項目を追加して、 ソリューションのビルドをしてみると以下のエラーが出ました。 CreateDevice.obj : error LNK2019: 未解決の外部シンボル _Direct3DCreate9@4 が関数 "long __cdecl InitD3D(struct HWND__ *)" (?InitD3D@@YAJPAUHWND__@@@Z) で参照されました。 C:\Documents and Settings\(ユーザ名)\My Documents\Visual Studio 2005\Projects\d3dtest01\Debug\d3dtest01.exe : fatal error LNK1120: 外部参照 1 が未解決です。 そこで、Direct3DCreate9を含む「d3d9.lib」をプロジェクト名→プロパティ→リンカ→入力の「既存の依存ファイル」に追加したのですが、 まだ同じエラーが起こります。 D:\Program Files\Microsoft Platform SDK\Bin/Lib/Includeのパスは追加したのですが、 他に何が原因なんでしょうか?