[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/01 14:35 / Filesize : 252 KB / Number-of Response : 999
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★初心者にVisual C++を教えるスレ★ Part28



1 名前:誰も立てないから・・ [2007/11/30(金) 22:40:42 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
www.hyuki.com/writing/techask.html
myu.daa.jp/osiete/

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5

202 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:31:18 ]
ウインドウ登録ってウインドウクラス登録のこと?
別にいいけど、同じウィンドウクラス使ってCreateする方が多いんじゃない?

203 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:38:59 ]
>>202
ああそうかw馬鹿だ自分w
じゃあ実際書くときはウインドウハンドルとかの必要な情報を構造体のメンバーにして
リストでつないでいけばいいのかな.

204 名前:デフォルトの名無しさん [2007/12/18(火) 15:25:19 ]
あの、VC++で16*16の画像を256*256に拡大したいのですが、どうすればいいですか!?
画像は、モノクロです。

205 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 15:33:44 ]
ツールの使い方なのかプログラムなのか

206 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 17:01:46 ]
VC++6.0でCFileDialogを使っているのですが
最近の豪華なファイルを開くダイアログを表示するにはどうすればいいでしょうか?
CFileDialog *dlgFile;
dlgFile = new CFileDialog(
TRUE,// 種類 TRUE : FileOpen
_T("*"),// デフォルトの拡張子
_T("*.*"),// 初期ファイル名
OFN_FILEMUSTEXIST, // ダイアログの設定フラグ:既存のファイル
_T("全て(*.*)|*.*||")// フィルタ
);

dlgFile->DoModal();

現在はこのようなコードです。

207 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 17:04:36 ]
>最近の豪華なファイル
昔はしょぼかったんだろうか。

208 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 17:14:18 ]
MFC使わずにAPI呼んでみ。
::GetOpenFileName() のほうな。

209 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 17:28:59 ]
>>208
ありがと!
豪華になりました!

210 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 17:48:17 ]
>>198
Unicodeには結合などがあるから、
例えUTF-32を使っても1文字が1単位で表せるとは限らない。

あと、C++だと規格上wchar_tは独立した型でなければならず、
VC++でも8からそれが既定。7.1でも/Zc:wchar_tで使える。



211 名前:デフォルトの名無しさん [2007/12/18(火) 18:35:18 ]
vector<char>とUTF8を使って多言語のクラスでも作ろうか

212 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:40:00 ]
>>176の質問はスルーですか?


213 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:41:53 ]
>>212
よく判らんが、DoModal()を多発してメモリ食い潰すって落ち?

214 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:43:42 ]
メッセージループの中でDoModalは無謀だろう

215 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:47:40 ]
>>211
山ほど作り直さないといけない文字列操作系のメソッドが・・・

216 名前:176 mailto:sage [2007/12/18(火) 18:48:51 ]
こんな感じです
BOOL ***Dlg::PreTranslateMessage(MSG* pMsg)
{
 INT_PTR nChar;
 if( pMsg->message == WM_KEYDOWN )
 {
  
  nChar = pMsg->wParam;
  switch( nChar ){
   case VK_NUMPAD0 :    // 0 キー
    nChar = pMsg->wParam;
    child.SetCode( nChar );
    child.DoModal();
   case VK_NUMPAD1 :    // 1 キー
    nChar = pMsg->wParam;
    child.SetCode( nChar );
    child.DoModal();
   case VK_NUMPAD2 :    // 2 キー
    nChar = pMsg->wParam;
    child.SetCode( nChar );
    child.DoModal();
 }
 return CDialog::PreTranslateMessage(pMsg);
 }
 return 0;
}

217 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:53:06 ]
>>216
そういうときは、目的のキーのときはそのまま0リターンして
ダイアログでWM_KEY受け取っては?

218 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 19:18:39 ]
bluetoothを使った通信プログラムを組みたいのですが、
なにからはじめればいいかまったくわかりません。
通信系には弱くて、winsockを使ったudp通信ぐらいしかしたことがありません。
ご教授おねがいします

219 名前:176 mailto:sage [2007/12/18(火) 19:28:49 ]
>>217
具体的に教えてください、インプリメントしてもらえば更に、理解し易いのですが


220 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 19:36:53 ]
>>149
亀レスだけど俺はVisual C++ Express EditionとIE7入れてるけど問題ないよ
SP1も適応してない



221 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:58:57 ]
すいません C言語を一通り終え、先輩から
「よしじゃあVC++で電卓作ってみようか。Cと変わらないからすぐ出来るでしょ」
とMFCの使い方の本を渡されたんですが、正直全くわかりません。

一体何から学べばいいでしょうか・・・?

222 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:19:18 ]
電卓はプロでも難しい

223 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:36:53 ]
電卓舐めたら痛い目見るぜ。

とりあえず整数の四則演算だけ実装してみたら?
ダイアログベースで、EditBox一個とボタンをいくつか貼り付ければそれなりの形はできる。
EditBoxにメンバ変数を割り当てる際、値ではなくコントロールにしておくのがコツか?

224 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:37:39 ]
MFCより前にC++言語を一通りやれ。

225 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:38:51 ]
Visual C++ 2005 Express EditionってVisuaStudioみたいに「リソースの追加」
で自動でリソースファイルとヘッダファイル作ってくれない?
自分で直接打ち込んで作れってことですか?

226 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:45:42 ]
>>224
ですよね・・・
coutとかprintf関数と一緒?けど関数の形してないしな とか疑問がすごかったです・・・。
とりあえずC++からやってみます。
今週中に電卓つくってねーとか言われたけど無理だろこれwwwwwww

227 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:53:32 ]
これ提出すればよろし

file://localhost/C:/WINDOWS/system32/calc.exe

228 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:57:30 ]
C++でCの構文そのまま使えるから
時間があればC++を勉強すればいいけど
とりあえずMFCを触ってみたいってだけなら
基本的にCで書いて、MFC独特の所だけ覚えれば良いんでないかい?
printfも使えるし。

ま、MFCならprintf使ってもしょうがないけどな。
MFCなら多分コンソールアプリじゃないだろうし。



229 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 01:28:30 ]
boostのspiritというものを使えば楽にできるらしいよ

230 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 01:49:12 ]
四則演算の電卓を作るだけなら本見ながらやれば1週間でできるだろ
ただそれは作った。であって作れるようになった。ではないけど



231 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 02:08:08 ]
無理だろ。Cでコンソールアプリしか作ったことないなら、
クラスも知らない、WinAPI も知らない、ウィンドウやメッセージの概念も知らない、
そんな状態で MFC を使わされても 「???」 しか浮かばないだろうぜ

232 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 09:13:55 ]
コンソールアプリでも関数電卓になると途端に難しくなる
たしかに基本のアルゴリズムに関して覚えるいい勉強にはなったけど・・・
まあ、四則演算だけならできそうだが・・・いきなりMFCとかすごいねw

233 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 09:41:00 ]
その先輩は自分のすごさをアピールするために
さも簡単そうに言ってるだけだな。
本当は自分も昔苦労したくせに。


234 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 10:19:09 ]
とりあえずボタン押したら数字表示する
ここまでが第1目標

235 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 10:34:06 ]
シェルの実装ができるようになりたい

236 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 11:14:33 ]
>>219
ちょっと試したけど、とりあえず問題ないぞ?
問題があるのはその最後に出すダイアログなんじゃないの?
使いまわししてるのか?

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++ (やりたい事) でぐぐれ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<252KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef