1 名前:誰も立てないから・・ [2007/11/30(金) 22:40:42 ] Visual C++入門者・初心者からの質問を、 お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html myu.daa.jp/osiete/ ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 。
237 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 12:46:11 ] 初心者ですが質問させてください. WinMainやmainで計算された結果を格納している数値配列を プロシジャーに渡したいんですが何かいい方法がないでしょうか? ちなみに配列は動的に確保しているのでグローバルにするのはできません. 渡すことができれば描画関係はプロシジャーの中でできるのですが・・・
238 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 12:52:29 ] 引数にすればいい、、、、ってここでいうプロシジャーは何? ウィンドウプロシージャのことか? メッセージか何かで渡したいなら、WM_COPYDATAがプロセス間でも使える。
239 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 13:03:39 ] >>238 そうです.ウインドウプロシージャです.すいません. 自作メッセージを送るときだけ配列をウインドウプロシージャに渡したいのです. WM_COPYDATAというのが使えるんでしょうか?少し調べてみます. ありがとうございました.
240 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 13:12:22 ] 218おねがいします
241 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 13:41:43 ] 218はスルーでおねがいします
242 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 15:20:35 ] bluetoothなんてVC++では制御できないよねー
243 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 15:35:13 ] さあ?自分で調べれば? 金くれたら調べてやってもいいけど
244 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 16:07:34 ] 218と221の扱いの差に吹いたw 可愛そうだからレスしてやるw 確かvistaのSDKだったらwinsock2でいけたはず 詳しいことはわからん、後誰かよろしく
245 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 16:48:09 ] メニューリソースにセパレータを追加するにはどうすればいいでしょうか? 「-」を入れればいいかと思ったのですがだめでした。
246 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 16:50:09 ] すみません。セパレータというチェックボックスがありました。orz
247 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 21:12:06 ] >>239 同一プロセス内だったら、自分で好きなメッセージを作って それをやり取りすればいいんだよ。 値はWM_APP + nの中から、nは0以上0x4000未満。
248 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 21:30:39 ] a.hとb.hがありそれぞれがそれぞれを参照しているのですが コンパイルエラーになります。 これを回避する方法はあるでしょうか? #include "a.h" #include "b.h" #include "b.h" #include "a.h" どちらにしても、相手を参照しているのが問題のようなのですが 対策がわかりません。よろしくお願いします。
249 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 21:37:04 ] まずはインクルードガードでググレ
250 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:15:10 ] >>248 前方宣言でググれ。 まあ設計見直すのが先だな。
251 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:31:32 ] >>249 なんか違うような・・・ >>250 ありがとうございます。たぶんわかりました。
252 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:53:32 ] VC++2005 Express Edition + Windows SDK + DirectX を使い、 Win32アプリケーションのゲームを作ろうとしている所です。 プロジェクト設定:コンソールアプリケーション アプリケーションの種類:Windowsアプリケーション としてプロジェクトを作成しました。 さて、ここで質問です。この場合にフォームの追加、編集はどのようにすればよいのでしょうか? .NET Frameworkのアプリですと、Borland C++ Builderのような感じで フォームをGUIで編集できるようなのですが、上記のようなWin32アプリでも同じような フォームの編集機能はありますでしょうか? とりあえずプロジェクト作成時に作られたフォームのメニューIDだけはVC++6.0の リソースエディターで編集できましたが、新フォーム追加や呼び出し、 ウィンドウのプロパティの編集などがさっぱりです どなたか同じような環境でやっておられる方、助言下さい。よろしくお願いします。
253 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:19:56 ] EEでは無理
254 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:07:00 ] >>253 EEでは無理、という事は、逆に言えばStanderd Edition等であれば Win32アプリケーションであってもフォームのGUIによる編集機能が備わっている、 という事なのでしょうか? とりあえず、ゲームのオプション設定等ができる別ウインドウをいくつか作れればいいので 特にGUIでのフォーム編集に拘っているわけではないです。 もちろんできるに越したことはないですけれども。 何かしら良いやり方があれば教えてください。
255 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:09:47 ] Std以降も、ダイアログエディタとMFC/ATLが付くってだけで、 VC6時代のやりかたとそんなに変わってないよ。
256 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:14:54 ] >>255 VC6はインストールはしてあったのですが、何分BCBばかり使っていましたので VC6時代のやりかた自体がわかっていない状態です 長くなりそうな内容でしたら、何か参考になるページとかありましたら教えてほしいです。 よろしくお願いします
257 名前:デフォルトの名無しさん [2007/12/20(木) 00:37:08 ] VC++ 6.0を使用してます。 初めてサブクラス化に挑戦していて、同じクラス(ボタンとかチェックボックスとか)では成功したのですが、 リストボックスとボタンなどを一緒に SetWindowLong で同じ新規プロシージャ当てると、どちらかが非表示か無効状態になります。 異なるクラス名での同一プロシージャへのサブクラス化は出来ますでしょうか・・・? またその場合、するべき事はどのような事がありますか? VBやMFCを使ったサブクラス化のソースはあるのですが、Win32SDKでのサブクラス化の例が少なくてここにたどり着きました。 どうか助言のほどよろしくお願いします。
258 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:10:15 ] >>256 画面が必要なトコをMFCアプリケーションで作ってCreateProcessで起動したら? DLLでもいいけど
259 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:43:11 ] >>257 CallWindowProcでは、それぞれの基のウィンドウプロシージャを呼んでいる? リストボックスまでボタンのウィンドウプロシージャを呼んでいるなんて事態になっていないか。
260 名前:257 mailto:sage [2007/12/20(木) 05:57:09 ] >>259 なるほど、GetWindowLongはそのためのものだったんですね。 それぞれのクラスのデフォルトプロシージャを取得しておいて、 まとめたプロシージャでクラス名ごとにreturnするCallWindowProを変えたら上手く行きました。 非常に勉強になりました。ありがとうございました。
261 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:21:48 ] HTMLのリンクにマウスを持っていったときに指マークになりますが あれはどうやってやればよいでしょうか?
262 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:52:50 ] ロードカーソル
263 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 08:27:30 ] CInternetSessionを使う場合は自動的にIEの持っているクッキーを 送信してくれるのでしょうか? それともGetCookieやSetCookieを使って自分でセットしてやる 必要があるのでしょうか?
264 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 08:44:09 ] 経路上か鯖側で通信内容確認できないの? そんな状況ならやめた方いいよ
265 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 12:56:35 ] >>264 キャプチャしてみたところついてました。 助かったー
266 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:14:43 ] Visual C++ 2005 Express Edition でWindowsアプリケーションを作れないかと調べたら、 Microsoft Windows SDK をダウンロードして設定をいじったらできる、という記述を見つけました。 しかしMicrosoftのホームページを調べてみても、「Windows SDK for Windows Vista」みたいなのしか見つかりません。 XPではこのやり方では無理なのでしょうか?
267 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:15:57 ] for Vistaと書いてありますがXPでも使えるという罠です
268 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:26:08 ] ありがとうございました、早速ダウンロードしてみます!
269 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:37:46 ] 今までBorlandC++でコンパイルできてたソースをVC++でコンパイルしてみたら、 ○ 番目の引数を 'char [○]' から 'LPCWSTR' に変換できません。 というエラーが大量に出てきました。 ヘルプで調べて、暗黙の変換をしようとすると出るから明示的に型キャストしろ、 とあったので、 (LPCWSTR)"文字列" という形にしたところほとんどのエラーは消えたのですが、 CreateWindow関数の第二引数だけ、このやり方でも同じエラーが出てしまいます。 文字列を一度char配列に格納して型キャストしたポインタを入れてもだめでした。 どうしてなのでしょうか?
270 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:40:23 ] >>269 今のVCはUnicodeがデフォだから。 両方で共通に使いたいならANSIビルドにすればいいし UNICODEのままでやるつもりなら、_T()マクロとか、TCHAR、LPCTTRとか駆使して書き換え。
271 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:41:57 ] あと、とりあえずなんでもキャストすんな。 文字列は、_T("")でくくれ "string" -> _T("string")
272 名前:デフォルトの名無しさん [2007/12/21(金) 17:42:33 ] oshiete1.goo.ne.jp/kotaeru.php3?qid=2236318
273 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:46:35 ] なるほど、文字コードの違いのせいでしたか。 ありがとうございました。
274 名前:デフォルトの名無しさん [2007/12/22(土) 07:37:22 ] WinXP、VisualStudio2005ExpressEditionです。 パソコンの名前:AAA XPのユーザー名:BBB VisualStudio2005で操作するプロジェクト名:CCC のときに、「CCC.BBB.AAA.user」という名前のファイルがプロジェクトのあるフォルダに勝手に作成されています。 個人情報が漏れそうで怖いんですが、VisualStudio2005で作成した実行ファイルにもユーザー名が埋め込まれていたりしますか? それとも、.userのファイルだけ気をつければパソコンの名前やユーザー名は分からないですか?
275 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 08:50:51 ] わかります
276 名前:274 mailto:sage [2007/12/22(土) 09:25:47 ] 作成した実行ファイルを右クリックして見られるプロパティにはユーザー名が含まれていないようでした。 ファイルのヘッダ?みたいな部分に書かれているんでしょうか? 確かめる方法と消す方法を教えてください。 OSのユーザー名は最初に作成したadministrator権限のなので、変更は不可能みたいです。
277 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 10:04:06 ] exeをバイナリエディタで検索かけてもユーザー名は検出されなかったけど >>275 は適当言ってるだけじゃねーの?
278 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 11:29:12 ] VC++もMFCがあればVBとあまり変わらないんですね。 なんかほっとしました。
279 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 13:42:39 ] ?!
280 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 14:19:49 ] デバッグ情報出力するようになってると プロジェクトのフォルダのパスが埋め込まれるから マイドキュメントなんかにいれてるとわかる。
281 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 14:39:48 ] よくわからないんだけど普通のC++とかとVisual C++ってのは違うの??
282 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 14:46:37 ] C++ってのはプログラミング言語の名前。 VC++ってのはC++でプログラムを作成するのをサポートしてくれるソフトウェア。 htmlとホームページビルダーみたいな関係だと思えばいい。
283 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 14:48:11 ] じゃあここはVC++を使ったC++プログラミングスレというわけか、さんくす
284 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:23:27 ] ある本を参考にして、勉強しています。 プログラムを開こうとすると、 「Classview情報ファイルにアクセスできません。ClassView 情報を取得できません。」 と怒られるのですが、何が原因なのでしょう? ファイルが読み取り専用から、チェックを外しています。
285 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:53:43 ] そのある本とやらを教えろ。話はそれからだ
286 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 17:05:38 ] ClassView情報ファイルを消して、再作成させろ。 *.clwだっけ?たしか。
287 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 17:31:19 ] >>286 有難うございます。 .clw? 等を全て削除。(主ファイルだけ残しました。) 再びVCを立ち上げて再ビルド。 何故か 成功 何故ですか?w バグが怖いので、最初から作ります。
288 名前:デフォルトの名無しさん [2007/12/22(土) 20:09:49 ] 環境 VC++ 6.0 SDK 初めてUnicodeでのビルドに挑戦して文字列操作に悩んでます。 プリプロセッサで _UNICODE 設定し、リンクアウトプットに wWinMainCRTStartup としてメイン関数は wWinMainにしました。 例えば static LPTSTR szAppPath; GetModuleFileName(NULL, szAppPath, MAX_PATH); のようにやると、コンパイルは通るのですが、実行時にデバッグ画面に移ります。 これを TCHAR szAppPath にすると問題有りません。 マルチバイトとワイドバイトの違いとchar周りを調べてるのですが、いまいち理解出来ずに居ます。 助言頂けたら幸いです。
289 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 20:19:21 ] >>288 static LPTSTR szAppPath; LP〜はポインタ。実質 static wchar_t* szAppPath; と同義。TCHAR だとコンパイルとおらないと思うんだけど?
290 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 20:41:47 ] static TCHAR szAppPath; ならコンパイルは通るでしょ。ただ1文字分しか領域が無いから落ちると。 static TCHAR szAppPath[MAX_PATH]; でOK
291 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 20:43:48 ] あ、エラーは2行目か
292 名前:288 mailto:sage [2007/12/22(土) 21:25:05 ] 分かりづらかったですね、すいません。 そうです、TCHARで配列指定すれば通ります。 LPTSTR指定すると2行目のGetModuleFileName関数で落ちます。
293 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 21:31:42 ] LPTSTRとか訳の分からないものが出てきたら、それを選択してF12押すと正体が見れるよ。 ただ>>288 はMBCSとかUnicodeとか関係のない、ただのロジックミス。
294 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 21:51:22 ] というか、ぬるぽだろそれは。 実体を確保してやれよ。
295 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 21:51:46 ] wWinMainCRTStartup としてメイン関数は wWinMain みたいないらんことする必要ない
296 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 22:12:03 ] >>292 今までこんなことやったことあるか? static char *szAppPath; GetModuleFileName(NULL, szAppPath, MAX_PATH);
297 名前:288 mailto:sage [2007/12/22(土) 22:17:50 ] 8bitでの char *szAppPath; と同様ということですね。 初めて16bitを扱うので、ちょっとまだ混乱気味ですが TCHAR szAppPath[MAX_PATH]; にするか、 もしくはAlloc関数などで動的確保すれば自分のやりたい事が出来るという事であってますでしょうか・・・。
298 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 22:31:34 ] 別に今まで通り普通に作るだけだろ 今までどうやってたか不思議
299 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 23:00:51 ] サンプル探して真似するだけ 慣れるまでは自分で勝手にコード書いちゃダメ
300 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 23:51:51 ] サンプルがなかなか見つからない
301 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 00:46:34 ] サンプルは簡単に見つかる
302 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 02:07:12 ] Visual C++ (やりたい事) でぐぐれ
303 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 03:17:02 ] Visual C++ アクションゲーム 出てこないよ
304 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 03:40:40 ] いっぱい出てきたよ
305 名前:274 mailto:sage [2007/12/23(日) 04:25:21 ] >>280 プロジェクトのフォルダの絶対パスに、ユーザー名が含まれていなければセーフってことですね。 それならたぶん大丈夫です。ありがとうございました。
306 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 05:07:52 ] >>304 詳しく
307 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 06:16:47 ] VC6のやつ 他にMSDNのサンプルにもある ATL\Include\ATLBASE.H(4934): GetModuleFileName(_pModule->GetModuleInstance(), szModule, _MAX_PATH); ATL\Include\ATLBASE.H(4976): GetModuleFileName(_pModule->GetModuleInstance(), szModule, _MAX_PATH); ATL\Include\ATLBASE.H(5042): GetModuleFileName(m_hInst, szModule, _MAX_PATH); ATL\Include\ATLBASE.H(5925): GetModuleFileName(pM->m_hInst, szModule, _MAX_PATH); ATL\Include\ATLBASE.H(5987): GetModuleFileName(pM->m_hInstTypeLib, szModule, _MAX_PATH); ATL\Include\ATLWIN.H(1353): GetModuleFileName(_Module.GetModuleInstance(), szModule, _MAX_PATH); ATL\Include\ATLWIN.H(1379): GetModuleFileName(_Module.GetModuleInstance(), szModule, _MAX_PATH); CRT\SRC\ASSERT.C(151):if ( !GetModuleFileName( NULL, progname, MAX_PATH )) CRT\SRC\CRT0MSG.C(242):if (!GetModuleFileName(NULL, progname, MAX_PATH)) CRT\SRC\DBGRPT.C(477):if (!GetModuleFileName(NULL, szExeName, MAX_PATH)) CRT\SRC\HEAPINIT.C(92):GetModuleFileName(NULL,env_app_name,sizeof(env_app_name)); CRT\SRC\STDARGV.C(103):GetModuleFileName( NULL, _pgmname, sizeof( _pgmname ) / sizeof(_TSCHAR)); MFC\SRC\APPINIT.CPP(79): VERIFY(::GetModuleFileName(m_hInstance, szBuff, _MAX_PATH)); MFC\SRC\APPUI1.CPP(109): GetModuleFileName(NULL, szAppName, _MAX_PATH); MFC\SRC\CTLLIC.CPP(36): ::GetModuleFileName(hInstance, szPathName, _MAX_PATH); MFC\SRC\CTLREG.CPP(87): ::GetModuleFileName(hInstance, szPathName, _MAX_PATH); MFC\SRC\DLLINIT.CPP(118): GetModuleFileName(m_hModule, szName, _countof(szName)); MFC\SRC\DUMPSTAK.CPP(58): cch = GetModuleFileNameA((HINSTANCE)memoryBasicInfo.AllocationBase, MFC\SRC\FILECORE.CPP(700): ::GetModuleFileName(hInst, szLongPathName, _MAX_PATH); MFC\SRC\OLETYPLB.CPP(75): GetModuleFileName(AfxGetInstanceHandle(), szPath, _MAX_PATH); MFC\SRC\VIEWHTML.CPP(447): if (GetModuleFileName(hInstance, lpszModule, _MAX_PATH)) MFC\SRC\VIEWHTML.CPP(468): if (GetModuleFileName(hInstance, lpszModule, _MAX_PATH))
308 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 17:27:27 ] JPEGの画像を扱いたいプログラムを構想中です。 現在 VC6.0なのですが、難しいですか? 少し検索してみたのですが、VC7.0には 「CImageクラスという便利なクラスが追加されました。」 と言う事なのですが、VC7.0にした方が良いですか? その時の利点と欠点を分かり易く説明ヨロ
309 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 17:53:33 ] 何が利点・欠点になるかは作るモノ次第。 他にもlibjpeg、Susie plug-in、GDI+とかいろいろあるから、自分で調べて判断してくれ。
310 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 18:17:46 ] Susieをスーシーって読んでた俺は間違いなくおかしい 友人はスージーと読んでいてよく議論した
311 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 18:18:37 ] むしろスシエって読んでた
312 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 19:32:02 ] CImageあれば使えばいいし、 CImageなかったら作れないものでもないし
313 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 21:21:33 ] >>307 マジですか うほー
314 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:06:54 ] DWORD(unsigned long)をprintfなんかで表示する場合 %ul と %lu どっちが正しいの?
315 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:47:03 ] >>314 %ulなんてない。%uをlで修飾して、%luが正解だ。 つーか、%ulじゃ単に、%uの後にlが出力されるだけだ。
316 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:24:49 ] ありがと
317 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:59:08 ] UTF-8の文字列をMS932に変換したいのですが どのような関数がありますでしょうか?
318 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 13:26:04 ] MultiByteToWideChar/WideCharToMultiByteやMLangなど。
319 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:26:20 ] Visual C++ 2008 には Snippet 機能はありますか?
320 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:38:17 ] 有るが大して役に立つものではない
321 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:42:48 ] EEですが2005用Snippetどこでダウンロードできますか?
322 名前:デフォルトの名無しさん [2007/12/24(月) 14:54:13 ] デフォルトのコピーコンストラクタと代入演算子が 生成される条件はなんでしょうか? 常に生成されるのでしょうか? もしそうであれば,「浅いコピー」を勝手にしてもらっては 困るなどの場合,両者をあえて宣言だけして 定義せずに private にしておくなどの方法で 明示的に使えなくするしかありませんか? ちなみに IntelliSense には operator== は出てきません. 自分であえて宣言した場合には出てきますが.
323 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:55:31 ] d.hatena.ne.jp/kakato1192/20070611/p1
324 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 17:02:26 ] >>322 >明示的に使えなくするしかありませんか? うん それかboost::noncopyableからprivate派生するという手もある。
325 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 17:12:32 ] あー後、デフォルトのやつはメンバ変数・基本クラスのコピーコンストラクタ/operator=を呼び出すから std::iostreamみたいにコピー出来ないものがあってもコピー不可になる。
326 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 18:34:21 ] MFCでActiveXコントロールを作っています。 それをIEに貼り付けて右クリックイベントを拾ったんですが OnLButtonUp(UINT nFlags, CPoint point) pointに入っている値がどうもコントロール内での位置で これを ClientToScreen(&point)で変換してみたのですが 変換された値が画面上の位置とずれているようです。 画面上の位置を取得するにはどうすればよいでしょうか?
327 名前:326 mailto:sage [2007/12/24(月) 18:53:33 ] すみません。GetCursorPos()で取れました。 いいのかな。こんなやりかたで。
328 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 08:55:54 ] オーナードローボタンを作ってみました。 if( nState & (ODS_FOCUS|ODS_SELECTED) ) { } としてフォーカスと選択状態のときに色を変えるようにしたのですが この他にマウスポインタが乗っているときにも色を変えたいのですが そのような状態を取得するにはどうしたらよいでしょうか?
329 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 10:14:49 ] >>328 TrackMouseEvent 使う。 昔は、WM_MOUSEMOVE でSetCaptureしてたけど、 今はこれ使えるからいいね。
330 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 10:34:47 ] >>329 ありがとうございます。調べてみます。
331 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 23:57:59 ] これからVisual C++ 2005 Proを使ってWindowsのGUIアプリを作成しようと思います。 C/C++の知識はあるのですが、CLI等はまだ詳しく知りません。 Visual C++を用いたアプリの作成の経験もありません。 このとき、どのようにしてGUIアプリの制作を始めるのが適切だと思いますか? 1. アプリのフォーム部分のみ.NET Frameworkを使って、 内部の処理はMFCやWinAPIを使ったC++で実装する 2. フォーム部分も内部も全て.NET(CLI)で実装 3. 全てC++とMFCで実装 言語自体が変わってしまう(C++でなくCLIになってしまう).NETはあまり使いたくないです。 ただGUIのデザインはMFCを使ったやり方よりも.NETのフォームデザイナを使用した方が やり易いので、そうい意味で.NETを使うのは魅力的です。 言語をとるか、GUIデザインのしやすさをとるか・・・
332 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:00:01 ] というか、NetFrameworkなフォームの内部をMFCで作るって、_でそ。
333 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:27:44 ] Visual C++のCLIでWindowsMediaPlayerコントロールを使用してAVIファイルを再生しようと考えているのですが、 参考書の通りに打ち込んでいるのですがビルドに失敗してしまいます。 Ctlcontrols->からのsetModeやpause、playを使用したコードが'WMPLib::IWMPSettings' のメンバではありません。というエラーになり、 WMPLib::WMPPlayState::wmppsPlayingというコードに対して、以下の2つのエラーが発生します。 @'WMPLib' : 識別子がクラス名でも名前空間名でもありません。 A'wmppsPlaying' : 定義されていない識別子です。 何か設定が必要なのでしょうか?ご教授お願いします。
334 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:33:09 ] MFCなら間違いはないよ、一応
335 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:35:03 ] >>331 クロスプラットフォームなフリーのGUIライブラリでも使ったらいいんでね?
336 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 03:24:20 ] >>333 参照追加した?
337 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:19:29 ] Visual C++6.0,および2005を使っています。 2005で作成したソースコードを6.0に移植したいと思っているのですが、 strcpy_sなどの関数が6.0で使用できず困っています。 バッファオーバーランなどの可能性を考慮すると、安易にstrcpyで置き換える事も出来ません。 やりようによっては、strncpyを使うという手段もありますが、これだとstrcat_sをどうしたら良いか分からなくなります。 素直に、VC6.0でもstrcpy_sや、strcat_sを使いたいと思っているのですが、どうしたら良いでしょうか? 何かしらのSDKをインストールすればいいんでしょうか。 一応、Microsoft .NET Framework SDK v2.0はインストールしてみたのですが、その中にこれらの関数は存在しませんでした。