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


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

くだすれVisual C++(超初心者用)その4



1 名前:デフォルトの名無しさん [2006/11/29(水) 17:00:54 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Visual C++使いが優しくコメントを返しますが、
お礼はVisual C++の布教と初心者の救済をお願いします。

■過去スレ
前スレ
pc8.2ch.net/test/read.cgi/tech/1150105712/
前々スレ
pc8.2ch.net/test/read.cgi/tech/1141087248/

■遠い親戚スレ
くだすれC++/CLI(初心者用)
pc8.2ch.net/test/read.cgi/tech/1142144110/l50

■関連ページ
Visual C++ Home Page
www.microsoft.com/japan/msdn/visualc/



263 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 08:42:31 ]
諦めずに再エスパー。
アイコンの内32x32の方だけ書き換えていて、16x16は空のまま、とか。
イメージ - 現在のアイコンイメージタイプ をチェックしてみ。

264 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:38:32 ]
>>263
あるある

265 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 00:33:49 ]
>>263
遅くなってすいません
見事にそれでした
エスパーさんありがとう!

266 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 03:30:05 ]
エスパーされるってことは、質問の情報が不足してるってことだぞ

267 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 05:04:43 ]
つまり、馬鹿にされているってこった。

268 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 06:17:41 ]
関係ないけどFLVPというフリーソフトも小さいアイコンの表示が変だ
大きいやつは赤いアイコン、小さい方はMFCの青いアイコン

269 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 07:39:04 ]
昔からそうだけど、MFCの吐き出す既定コードが手抜きだから。
LoadIconしたアイコンを大小両方に割り当てる所為で、
タイトルバーには16x16では無く、32x32のアイコンが縮小されて使われている。
両方描くのが面倒な時は、どちらか一方を削除しておくのが無難だな。

270 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:10:22 ]
>>269
最初から16x16も作ってくれちゃうしなあ
アイコン作ったときは、小さいほうはとりあえず消して
小さいアイコンの見栄えが気になってから追加するようにしてる。

271 名前:デフォルトの名無しさん [2007/02/27(火) 19:27:48 ]
ソースが同封されてるツールがあって、自分でVisual Studioで
ビルドしてみたのですが、同封されているexeと比べると何故か
サイズが大きいのはどう言ったことが原因と思われるのでしょうか?

あと何個か警告が出たのですが、一応exeが出来ています。
どんな警告も出ないように作ると勝手に想像していたのですが
ある程度の許容範囲内の警告が出るくらいは無視されるものなのでしょうか?
よろしくお願いします。



272 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 19:51:26 ]
さあ

273 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 21:57:38 ]
作成者とまったく同じコンパイラと
作成者とまったく同じコンパイルオプションと
作成者とまったく同じライブラリをリンクすれば

たぶん同じサイズの実行ファイルになるんじゃないかな

274 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 22:07:01 ]
覆水盆に帰らず

275 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 23:45:12 ]
同じCPUで、同じOSな必要もあるんじゃね?

276 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 14:56:54 ]
size = GetFileSize( hFile, NULL );
SetWindowText(label,(char)size);

こんな風に書いて、sizeにhFileのファイルサイズを
スタティックコントロールのlabelに表示したいんですが、
labelの表示が変わらないんです。
(char)を取ると、めちゃくちゃな文字列が出ちゃう。
これ、このスレでいいんかな?

277 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 15:05:06 ]
SetWindowTextなんだからテキストを渡さないと

278 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 16:32:12 ]
VisualC++2005ExpressEditionを久々に起動しようとおもったんですが
”一つ以上のコンポーネントがみつかりません。再インストールしてください”
とでて、
アンインストールしようとしてもなにかのファイルがみつからないとかいうエラーがでてアンインストールできず
それでも再度インストールしようと試みたらエラーとおもわれるものがでました。
以前にはしっかりと登録もしたはずなんですが
どうすればいいでしょうか。

279 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 16:45:11 ]
パソコン買い換え

280 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 08:29:53 ]
最後の手段っぽいけど、Windows Installer CleanUp ユーティリティを使う、とか。
サポート技術情報を文章番号290301で。

281 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 13:38:53 ]
SetFilePointer(hFile,1,NULL,FILE_BEGIN);
ReadFile(hFile,buf,3,&readsize,NULL);
buf[3] = ('\0');

教えてください。
上のように書いて、hFileのファイルの先頭3バイトを読み
そこにヌル文字を加える、これで先頭3バイトを受け取りたいんです。
でも、これだと2バイト目+3バイト目+ヌル文字になってしまいます。
相当馬鹿なことしてるかもしれませんが・・・



282 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 14:07:26 ]
>>281
>SetFilePointer(hFile,1,NULL,FILE_BEGIN); 
先頭から読みたいなら0じゃない?
SetFilePointer(hFile,0,NULL,FILE_BEGIN); 

283 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 14:23:25 ]
この世はすべて1から始まっている

という世界ですな

284 名前:281 mailto:sage [2007/03/01(木) 14:36:34 ]
>>282
どうもです。できました。
かなり馬鹿なことしてたんかな?
また、質問するかもしれないんでよろしくお願いします。

285 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 20:15:19 ]
ここでいいかどうかよく判らないですが、質問です。

Web ブラウザから起動される Java アプレットがあり、そこに表示されている情報を
現在作成しているツール(Visual C++ .NET, ダイアログ)から読み取ろうとしています。
・アプレットのクラス名を指定して FindWindow()
・EnumChildWindows() で子ウィンドウを列挙
・子ウィンドウに対して GetWindowRect() や GetWindowText()
という感じで、ラベル(SunAwtLabel)のキャプションは GetWindowText() で取得できるんですが
エディットボックス(Edit)の現在の値が取れません(""となります)。
また、コンボボックス(ComboBox)もあるんですが、これは値の取り方すら分かりません。

エディットボックスとコンボボックスの現在の値を取得するには、どうしたらいいでしょうか?

286 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 21:13:20 ]
みためがエディットボックスとコンボボックス

287 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 23:40:19 ]
VC2005ってPDBの埋め込みできないの?

288 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 09:45:51 ]
SetFilePointer(hFile,1,NULL,FILE_BEGIN); //(1)先頭3バイト読む
ReadFile(hFile,buf,3,&readsize,NULL); // bufはchar
buf[3] = ('\0');

SetFilePointer(hFile,0,NULL,FILE_CURRENT); //(2)先頭から4バイト目を読む(1)の続きを読みたい
ReadFile(hFile,buf,1,&readsize,NULL);
buf[1] = ('\0');

if (buf==0x01)
{
MessageBox(hWnd,"aaa","bbb",MB_OK); //(3)4バイト目は01だからメッセージが出るんじゃ?
}

度々質問ですが、
こんな感じで、まず(1)で先頭から3バイトバイナリを読みます。
次に(2)で(1)の続き(先頭から4バイト目)を読みます。
例えば、バイナリで「41 42 43 01」なら(1)はABCになると思います。
でも、(3)のメッセージが出ません。
if の所の比較が変なんでしょうか?

289 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 09:46:54 ]
C++とDelphiどっちが簡単なわけ

290 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 09:54:02 ]
>>288
> SetFilePointer(hFile,1,NULL,FILE_BEGIN);
0から数え始めるからこれでは最初の1バイトを飛ばすことになる

> SetFilePointer(hFile,0,NULL,FILE_CURRENT);
無意味

> if (buf==0x01)
上を治したとして、buf[0]に書き込まれているはずだからif (buf[0] == 0x01)では?

291 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 10:00:12 ]
実験ならいいけど
こまぎれで読んだらパフォーマンス悪そうだな



292 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 10:04:37 ]
実験する場合はデバッガ使った方がいい

293 名前:288 mailto:sage [2007/03/02(金) 10:07:08 ]
>>290
thanxです、buf[0]だったんですね。
それにしてもこのスレで教えてもらうたびに
自分の実力の無さを感じてしまう。

294 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 11:05:57 ]
実力以前の話だから気にするな

295 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 11:20:40 ]
イイハナシダナー( ;∀;)

296 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 18:14:24 ]
イイハナシダナー( ;∀;)

297 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 18:30:16 ]
イナバウアー( ;∀;)

298 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 21:30:16 ]
>>289

GUIアプリを作るなら

Delphi>>>(超えられない壁>>>VC++(MFC)


299 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 23:32:56 ]
やりたいことができなくなったらVC++へ。

300 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 21:23:56 ]
www.kumei.ne.jp/c_lang/
初心者でここを見ながらVisual C++2005の勉強してるのですが、
現在時刻を表示するのに

case WM_TIMER :

GetLocalTime(&st);
wsprintf(str,"%02d:%02d:%02d",st.wHour,st.wMinute,st.wSecond);

でstatic char str[256]に格納して
WM_PAINTでTextOutでこの文字列を出力しようとするとVisual C++では文字化けしてしまいます。
borland c/c++コンパイラでコンパイル実行させるとちゃんと時間が表示されます。
これを直すにはVCの何処を弄ったら良いのでしょうか?

301 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 21:35:44 ]
ひろってきたソース弄ってるのは勉強とは言わない



302 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 21:38:25 ]
>>300
プロジェクトのプロパティ → 全般 → 文字セット → マルチバイト文字セットを使用する
にしてみる。
または、
wsprintf(str, TEXT("%02d:%02d:%02d"), st.wHour, st.wMinute, st.wSecond);
にしてみる。

303 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 21:38:50 ]
第一引数にはLPTSTRを渡さないと

304 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 21:38:58 ]
>>301
十分勉強だろ

305 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 21:47:06 ]
>>302
「strの宣言をstatic TCHAR str[256];に直す」が抜けている。

これくらい警告やエラーになりそうな気がするんだがな。
常に/W4 /Wp64付けておけ。

306 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:05:01 ]
糞サイトの無料サポートをほいほい引き受けるお人良しがいたとは

307 名前:300 mailto:sage [2007/03/04(日) 22:14:39 ]
>>302-303,>>305
ありがとうございます、出来ました!
今までbccだと通っていたので気にしていませんでしたが、
VCだと型に対してキビしいのですね。
仮引数の型を教えてくれる機能があるようなのでこれからは気をつけます><
またプロパティで警告のレベル等を変えられるのも初めて知りました。
親切に教えてくださり本当にありがとうございました。

308 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:42:49 ]
>>307

単に VC8(VS2005)は、デフォがUNICODEになってて、BCCは MBCSに
なっているってだけだよ。
BCCでも UNICODEにすると同じようになるはず。


309 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 11:59:45 ]
Visual c++
で、ソフト作成にチャレンジしようと思うのですが、
Visual C++ 2005 Express Edition ってのが
マイクロソフトからダウンロードできるんだけど、
それでいいのですか。

ここの皆さんが使っているのはこれですよね。
違ったら教えてください。
似たような名前のソフトがたくさんあって
どれがどれなのかさっぱり分かりません。
どうかお願いします。


310 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 12:04:59 ]
>>309
EEじゃないけど、まあそれだ。
PlatformSDKとかMSDNライブラリとかも一緒にな

311 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:15:26 ]
ツールボックスのList Controlについて質問です。

List Controlに対する処理(後で記述)を関数化しています。
「変数の追加」でList Controlをm_listctrlとしました。
プロパティは、Viewをレポートにしてるだけです。

関数の処理を行うと「説明」のColumn部分が二つになってしまいます。
m_listctrl.DeleteColumn(1);
で消しているのですが、どうしてでしょうか?
Columnをうまく初期化する方法をおしえて下さい。



312 名前:311 mailto:sage [2007/03/06(火) 17:18:23 ]
m_listctrl.DeleteColumn(0);
m_listctrl.DeleteColumn(1);
m_listctrl.DeleteAllItems();

// 詳細表示のときのコラムのヘッダーの設定
LVCOLUMN myColumn; // 列情報を保持するオブジェクト
myColumn.mask = LVCF_TEXT|LVCF_WIDTH; // pszText,cxを有効にする

RECT myRect;
m_listctrl.GetClientRect(&myRect); // リストビューサイズを得る
myColumn.cx = (myRect.right - myRect.left) / 3; // 横幅の1/3を表題にする
myColumn.pszText = "項目"; // 列タイトル文字列
m_listctrl.InsertColumn(0, &myColumn); // 0列目を確保する

myColumn.cx = (myRect.right - myRect.left)*2 / 3; // 横幅の2/3を説明にする
myColumn.pszText = "説明"; // 列タイトル文字列
m_listctrl.InsertColumn(1, &myColumn); // 1列目を確保する

// リストビューにアイテムを設定する
static LVITEM myITEM; // 初期値をクリアするためにstaticを使用
myITEM.mask = LVIF_TEXT; // pszTextを有効にする
myITEM.iItem = 0; // 項目0
myITEM.iSubItem = 0; // 列0
myITEM.pszText = "リスト1"; // タイトル文字列
m_listctrl.InsertItem(&myITEM); // 設定する
myITEM.mask = LVIF_TEXT; // pszTextを有効にする
myITEM.iSubItem = 1; // 列1
myITEM.pszText = "ああああああ"; // 説明文字列
m_listctrl.SetItem(&myITEM); // 設定する

313 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:32:44 ]
何がどうなってるのかよくわからんが、
(0) で0個目を消したら1個目は前にずれるから
それも消すのはまた(0)じゃないか?

314 名前:311 mailto:sage [2007/03/06(火) 17:36:17 ]
すみません、追加です。
プロジェクトの内容は
テンプレート:MFCアプリケーション
アプリケーションの種類:ダイアログベース
「ユニコードライブラリの使用する」のチェックを外す

315 名前:311 mailto:sage [2007/03/06(火) 17:44:06 ]
>>313
レスどうもです。

m_listctrl.DeleteColumn(0);
m_listctrl.DeleteColumn(0);

で、できました!
しかし、なんかもっとスッキリしたやり方はないのかな・・・。
Columnの数を計算して、ループでDeleteColumn(0);とするんでしょうか・・・。

316 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:47:58 ]
今見たけど、ヘルプのDeleteColumn の例はそうなってるな。

317 名前:311 mailto:sage [2007/03/06(火) 18:06:45 ]
>>316
なるほど、そうなってますね。
勉強になりました。
ありがとうございます。

318 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 13:22:56 ]
strcat(all,rectform.top);


all(char[]で宣言)にstrcatでフォームの高さ(位置)を入れたいんですが

'.top' : 左のオペランドが 'struct' へのポインタです。'->' を使用してください。

というようなエラーが出てしまいます。
. を -> に変えると強制終了しちゃうし。
何かキャストが要るんかな?

SDKです。

319 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 13:28:27 ]
はい。

320 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 13:34:14 ]
キャストが必要と言うより、プログラミングの基礎知識が必要かと思われます。

321 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 14:21:44 ]
数値と文字列の相互変換からやっとけ



322 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 14:28:54 ]
キャストもsdkも100年早い

323 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 16:05:22 ]
char tmp[20];
sprintf(tmp,"%d",rectform->top);
strcat(all,tmp);

324 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 16:16:14 ]
こう書くのは駄目か?
int len = strlen(all);
_snprintf(tmp + len, sizeof tmp - len, "%d", rectform->top);

325 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 17:38:26 ]
>>324
ダメすぎ。

326 名前:323 mailto:sage [2007/03/08(木) 17:42:54 ]
お、俺のはどう・・?

327 名前:324 mailto:sage [2007/03/08(木) 17:43:09 ]
ほんとだ、323に影響されてallとtmpをごっちゃにしてる
すまん

328 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:00:32 ]
>318が低レベル過ぎてそれに対するフォローしても妥当かどうかの判断しようがない件。

329 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:35:12 ]
エラーが出たらまずキャストって誰に教わったんだか

330 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:38:25 ]
strcat使うべきところかどうかもあやしい

331 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 19:56:32 ]
どうみても厨房です。本当にありがとうございました。



332 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 19:59:12 ]
strcatは安全じゃないってばぁちゃん言ってた

333 名前:デフォルトの名無しさん [2007/03/08(木) 20:58:50 ]
いっそ全部stringにしちゃえ

334 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 22:23:41 ]
最適化なしだと意図通りに動いて、最適化ありだとバグが起こるって
よくあることですかね?

335 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 22:26:20 ]
変数の未初期化

336 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 22:30:09 ]
volatileが必要な変数とか?

337 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:15:54 ]
マルチスレッドのプログラムで、外部でフラグを立ててスレッドを終了させ
ようとしています。フラグの変数はvolatileをつけてます。
いろいろ試してみましたが、プログラムサイズの最適化だと意図したとおりに
動くようです。でも実行速度の最適化のオプションではだめなようです。

338 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:29:51 ]
>>337
そうならないためのvolatileなのに変だね。
別の原因なのかな。

339 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:57:27 ]
Win32のイベントを使えばいいだろ。
C/C++のvolatileはそもそも対マルチスレッド専用に作られたわけではないから、
マルチスレッド時にvolatileを付けておけば絶対に大丈夫ということはない。

340 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:09:12 ]
この使い方が駄目なら、volatileの存在意義が無いんじゃね?
とりあえず、プログラムをupしる。

341 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:23:26 ]
じゃあ〜volatileはなんなんだよ〜


最適化による期待はずれの動作は奥が深そうだな。
volatileでは解決しないことの原因なら
勉強のためにも
というかマルチスレッドを使う俺としてはぜひ知りたいところだ。



342 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 01:10:07 ]
とりあえず重要そうなとこだけ抜粋してみました。
ひょっとかしたら根本的な間違いがあるかもしれませんが。
// グローバル変数
volatile bool exitflag;

int WINAPI WinMain()
{
    (中略)
    hThread = reinterpret_cast<HANDLE>(_beginthread(childThread, 0, NULL));
    (中略)
    // 終了処理
    exitflag = true;
    WaitForSingleObject(hThread, INFINITE);
    return 0;
}

void childThread(void *arg)
{
    (省略)
    while(!exitflag){
        // いろいろな処理
    }
    if(exitflag)
        return;
    (省略)
    while(!exitflag){
        // いろいろな処理
    }
    return;
}
最適化なし、プログラムサイズ最適化はスレッドが終了しますが、
実行速度最適化にするとスレッドが終了しないようです。

343 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 09:33:46 ]
とりあえず_beginthreadexに変えてみる、とか。
_beginthreadは、CloseHandleが生成されたスレッドで処理されるので、
スレッド終了時点で、返されたハンドルの保証ができなくなる。
運が悪いと、別のスレッドを指してしまう可能性もある。

344 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 18:31:44 ]
main.cpp
main.h
func.cpp
func.h
・・・
という感じでソースを書いてるんですが、
main.cppの方でfunc.cppの関数を呼び出す際、引数に構造体のアドレスを渡して、関数内でその構造体の中身を変更、としたいんです。
この場合構造体の型と構造体の宣言はどこにどういう風にすればいいんでしょうか。
externを使ったりしてやってみてるんですがどうもエラーがでてしまいます・・・

345 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 18:42:04 ]
手取り足取り教えてくれる親切な人がいるといいね

346 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 18:45:49 ]
>>344
func.cpp の関数や構造体をfunc.hで宣言して両方でinclude
つーかcppなのにそれでいいのか、、って気はするが
もうちょっと他のソースやIDEの吐き出したソース参考にしてくれ。

あんまり初歩的だと>>345 みたいになる

347 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 19:02:01 ]
すみません,伺わせてください.
Windowsフォームで何らかの処理をした際に出現する
フォームの多重起動を防ぐ方法についてなんですが.

グローバルな領域にフォームのオブジェクトを持たせて,
一度目にnew生成,終了時にnullを代入することで,
nullチェックを行えばできるのですが.
グローバル領域を使用せずにする方法があったら教えてください.
お願いします.

348 名前:344 mailto:sage [2007/03/09(金) 19:08:30 ]
>>346
なんとかなりました。
まだCしか使えないのでこんな形になっています。
C言語質問の方で聞くべき事だったかもしれません。
回答ありがとうございました。

349 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 19:35:54 ]
一応__beginthreadexに書き換えてみました。しかし駄目でした。
最適化段階で終了条件が消えてしまっているような。。

350 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 20:08:26 ]
>>342
exitflagをlong型にしてtrueの代入の代わりにInterlockedIncrementを使ったらどう?

351 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 21:15:32 ]
>>350
試してみました。でも駄目でした。やっぱり速度最適化が駄目です。

volatile修飾ちゃんと利いてるのかな。。それとも俺の書き方が悪いのかorz



352 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 21:23:19 ]
回っているときにブレークしてみたらどうなる?

353 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 21:39:55 ]
動作中にブレークポイントを設定してみたら、最適化なしのときには
|if(exitflag)
●| return;
こんな感じで設定できたのですが、
最適化コンパイル後の動作中だとreturnの横クリックしても数行後の
処理に移動してしまいます。

説明が悪くて、わかりにくかったらすいません。

354 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 21:41:10 ]
>>353
最適化するとソースの行とプログラムコードが一致しないからな
ステップ実行がへんになることある。

355 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 22:04:57 ]
ダイアログアプリケーションを作っていますが、エディットボックスなどの
コントロールの配置が終わるのはいつでしょうか?
最初の表示が終わった契機でコントロールの表示位置を取得しようと
OnInitDialog() でコントロールの座標を調べてみましたが
なぜか位置が(0,0)となってしまいます。
コントロールの表示位置を取得するのに最適な契機を教えてください。

356 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 22:06:54 ]
OnInitDialogで設定した0秒のSetTimerが到着する頃には出来てるんじゃないの。

357 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 22:29:24 ]
あとから動的にコントロール追加とか普通にやるから
そのタイミングでいいんじゃないかな

358 名前:355 mailto:sage [2007/03/09(金) 22:41:51 ]
>>356
確かに OnInitDialog() 内でタイマをセットするやり方もありますね
もっとスマートな方法がなければこれしかないですね

>>357
「そのタイミング」とは OnInitDialog() で、ということですか?

やりたいのは、ダイアログエディタで配置したコントロールの座標を取得することです。
コントロールは動かさないので、一回だけ座標を取得できればいいのです。

359 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 22:46:30 ]
>>355
OnInitDialog() でコントロールの座標を調べるなんておれやったことあるけどなあ。
おかしいなあ。

360 名前:355 mailto:sage [2007/03/09(金) 23:01:51 ]
済みません。
私の初歩的なミスっぽいです。
コントロールの座標を GetClientRect() で取ってたんですが
左上が (0,0) になるので取れてないと思っていました。
OnInitDialog() で GetWindowRect() を発行してみたら
どうやらダイアログ上の座標が取れたようです。
もうちょっと調べてみます。

361 名前:355 mailto:sage [2007/03/10(土) 02:03:43 ]
OnInitDialog() にて

CRect rect;
CEdit* pEdit=(CEdit*)GetDlgItem(IDC_EDIT_HOGEHOGE);
pEdit->GetWindowRect(&rect);
ScreenToClient(&rect);

でダイアログ相対の座標が取れました。
大変お騒がせ致しました。



362 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 05:18:31 ]
>>351
駄目っていうのはスレッドが終了しないの? or デバッガ上でのトレースで
returnの行が飛ばされるの?後者ならあまり気にする必要が無い気がする。
前の方の書き込みを見る限り前者なのかな....
XP上のVC6 & VC2005で試してみたけどvolatile longとInterlockedIncrement
の組み合わせでスレッドは終了してたよ。試行回数各10回ほど。

_beginthreadでマルチスレッドやったのは今日がはじめてだけど、MFCでやる場合は
同期オブジェクトを使って終了を通知してる。APIでいうとCreateEventなど。

363 名前:362 mailto:sage [2007/03/10(土) 05:24:03 ]
追記
最適化は実行速度

364 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 10:18:30 ]
>>362
スレッドが終了しないってことです。
ってことは書き方が悪いのかなー。。

365 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 10:48:13 ]
>>361
本当は、ScreenToClientよりMapWindowPointsがお勧め。
まあ、RTL(RightToLeft)環境で動かすようなことは、まずないだろうけど。
MFCのScreenToClient実装は、過去互換の関係で放置してる予感。
あと、GetDlgItemで取るより、メンバ変数に割り当てた方がいい。

>>364
アセンブリコード吐き出させて、頑張って読む。

366 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:02:34 ]
visualC++でプログラム作れるように
なるには、C言語をまず勉強しないといけない
と聞いたのですが、本当ですか?
あとその次にポインタというのを勉強して
それからVisualC++の本買った方が良いというのも
本当でしょうか?

なんか知らないけどどうせならVisualC++でソフトを作ってみたいです。
憧れみたいのがあります。

367 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:15:47 ]
小説を書くにはまず日本語を勉強しないといけないのですか?
みたいな質問だな

368 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:31:20 ]
>>366
C++はC言語+アルファ(語弊あるけど)。
だからC言語を学ぶことは有効だけど
いけないっていうこともないだろうな。

C++って難しい部分もあるから
簡単なところからはじめたほうがいいっていう意味で
先にC言語を学べってことになってしまう。

ポインタは壁にぶつかるやつが多いからな。
ポインタがわからないやつにC++を使わせるのは危険ともいえる。
そもそもC言語を使わせるのも危険だけど
ポインタを理解してからC++をはじめたほうがいいな。

369 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:32:27 ]
>>366
きにすんな。
作っちゃいなよ。
壁にぶつかっちゃいなよ。

370 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:39:58 ]
Visual C++ =
CとC++などのコンパイラ(独自拡張有) +
CとC++の標準ライブラリ(独自拡張有) +
Platform SDK(ただしExpressは別) +
MFCやATLなどMS製のライブラリ +
IDE(デバッガこみ) +
MSDN ライブラリ +
各種ツール

およそこんな感じ

371 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:45:37 ]
>>366
コンパイラの使い方とかデバッグの仕方とかは
ツールによって異なるからな。
バージョンによってメニューとかも多少変わるぞ。

自力で判るとか
友達に手取り足取り教えてもらえるとか
ヘルプをみながら判るやつなら不要だが
初心者はバージョンも合っている解説書的本があったほうがいいな。




372 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 00:07:58 ]
すまんが聞きたい事がある。フリーソフトでアナログ時計を作って
ベクターに公開しているのだが、ウィンドウズの時計部門の人気順で20位以内に
入っている。オレのプログラミングのレベルはどの位か評価してほしいのだが、頼む。
自分ではVisual C++のレベルが初級を脱した位だと思っているのだが。

373 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 00:13:54 ]
そんなことわかるわけがない。
良いプログラムが書けるかどうかと人気のあるプログラムが書けるかどうかというのは別問題。

374 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 00:17:06 ]
人気とプログラミングレベルに相関関係があると思ってるん?

375 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 02:15:16 ]
ソースアップしてリンク張ってくれれば見るよ
ここだと辛口な意見が多そうだが

376 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 05:25:50 ]
プログラミングのレベルと人気は必ずしも関係ないでそ。
自分は、どの程度的確に言語仕様を理解しているか、とか、
プロジェクトに適した方法で開発できるか、とか、
そういうことだと思う。

ただ、人気のあるソフトを作れるってことは
良いクリエイターなんじゃないかな。

なんていうかな、Flashとか使えるWebDesignerが、
必ずしもプログラムの技術があるとは限らないっていうか。

377 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 06:20:07 ]
サイズのでかいのが結構上位に入ってるな
常駐系はサイズが小さいのが常識だと思ってたけど時代は変わっていく

378 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 17:08:25 ]
非矩形ウィンドウ
システムトレイへの登録
レジストリ操作
多重起動の防止

ぐらい実装していれば中級ではないか

379 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 19:17:13 ]
コピペでも作れるだろ。そのくらい

380 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 19:27:50 ]
通信関連のマルチスレッドと低レベルAPI
コピペでやると一発で落ちる

381 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 19:37:45 ]
非矩形ウィンドウは時計の初歩



382 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 06:52:32 ]
非矩形ウインドウってまだRegion使ってるの?

383 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 07:20:51 ]
描画するだけならカラーキー設定して切り抜く
クリック範囲とかなら、リージョン使わないでどうやってるん?

384 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:51:20 ]
画像の処理を行うクラスを作ろうとしています。
メモリDCを確保してビットマップの操作等を行うのですが
その場合は CWnd クラスの派生クラスとする必要があるのでしょうか?

385 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:00:51 ]
ウィンドウハンドルが必要ならメンバに持ってればいいわけだから
別に継承する必要ないだろ

386 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:54:06 ]
DCならCDCが思い浮かびそうなもの

387 名前:384 mailto:sage [2007/03/14(水) 21:31:57 ]
そもそもDCがよくわかっていません。
メモリDCを確保する際に、CreateCompatibleDC()の引数に
メイン側でGetDC()したポインタを渡せばうまくいくのですが
そうしないでこのクラスだけでCreateCompatibleDC()するには
何を渡せばいいのかわかりません。
NULL だと真っ黒になってしまって・・・

388 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 21:47:18 ]
なんだ既存のクラスがよくわからない人が作ろうとしてるのか
それだったら1から自分で作れ

389 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 21:49:35 ]
>>387
CreateCompatibleDCに渡すべきデバイスコンテキストのハンドルを
引数に受け取ればいいだろ。

390 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 21:59:54 ]
>>389
class GAZOU
{
 void Gazou(CDC* pDC)
 {
  CDC memDC = CreateCompatibleDC(pDC);
  ・・・
 }
}

ダイアログ等
 Gazou gazou(GetDC());
 gazou.hogehoge();

という感じでしょうか?
今の処理はこの通りで、うまく動作しているのですが
これ以外のやり方(CDCのポインタを渡さない)はないでしょうか?
GAZOUクラス内だけで処理できないものかと思っています。

391 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:06:12 ]
>>390
NULLかデスクトップのウィンドウハンドルでDCを用意し
そのDCにコンパチブルなメモリDCを作成するのはどうかな。
出来るかどうか俺は保障しないが。

DCなしでビットマップを操作したいところだがWindowsがそういう仕組みなんで仕方ない。
DCってのは画面用とかプリンタ用とかそれらのコンパチブルなメモリDCなどがあって
ペンとかブラシとかを指定して対象物に描画するときに必須という面倒な代物だな。



392 名前:384 mailto:sage [2007/03/14(水) 22:25:44 ]
>>391
画像処理クラスにおいて
CWnd* pDesktop = CWnd::GetDesktopWindow();
CDC* pDC = pDesktop->GetDC();
CDC memDC = CreateCompatibleDC(pDC);
・・・
と記述してうまく動作しました。
どうもありがとうございました。
レス頂いた他の皆さんも、ありがとうございました。
よく理解していないため、変な質問で済みませんでした。

393 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:12:32 ]
スクリーン互換のDCなら、CreateCompatibleDCは引数NULLでOK。
あと、ウィンドウからDCを取るときは、必要に応じてCWindowDCかCClientDC使うと楽。

394 名前:384 mailto:sage [2007/03/15(木) 00:20:23 ]
>>393
ありがとうございます。

CDC memDC;
CBitmap memBmp;

CreateCompatibleDC(NULL);
memBmp.CreateCompatibleBitmap(&memDC, width, height);
memDC.SelectObject(&memBmp);

としてみましたが、どうもモノクロになってしまうようです。
使い方が間違っているのでしょうか?

395 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:57:20 ]
CreateCompatibleBitmapにはmemDCじゃなく392のpDCを渡すのだ。
MSDN - CBitmap::CreateCompatibleBitmapの解説を参照

396 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:59:43 ]
それ以前にCreateCompatibleDC(NULL)の左側が抜けてるな

397 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 09:51:10 ]
デフォルトでは、素のDCにはモノクロの1x1のビットマップが選択されている
それと互換のビットマップを作ったらモノクロになるのは当然

398 名前:384 mailto:sage [2007/03/15(木) 22:41:43 ]
>>395-397
なるほど 何となくわかりました。
皆さんのアドバイスを基に、以下のコードに落ち着きました。

CWnd* pDesktop = CWnd::GetDesktopWindow();
CDC* pDC = pDesktop->GetDC();

CDC memDC;
memDC.CreateCompatibleDC(NULL);
CBitmap memBmp;
memBmp.CreateCompatibleBitmap(pDC, width, height);
memDC.SelectObject(&memBmp);

399 名前:デフォルトの名無しさん [2007/03/18(日) 15:42:26 ]
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ


400 名前:初心者以前です。 mailto:sage [2007/03/18(日) 23:46:37 ]
 すみません。教えて下さい。
VisualC++2005ExpressEditionをMSのサイトから
DLして使用したいと考えているのですが、
ズバリ、フリーのデーターベースであるFirebirdと
繋げられるのでしょうか?

やはり製品版でないと無理なのでしょうか?

自分は、単純に初心者向けプログラムである。
CDやDVDの在庫管理アプリを作りたいだけなんですが、
自分の労力以外は、極力フリーで作りたいと思っています。
可能でしょうか?

宜しくお願いします。

401 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:02:40 ]
繋げる意味がよく分からんが、実質フォーマットさえ分かってしまえば作れるんじゃないの?



402 名前:400 mailto:sage [2007/03/19(月) 00:19:01 ]
>>401

言葉足らずで、すみません。
ただ単に、フリーのDB(FireBird)に基本テーブルやら
履歴テーブルやらを作成して、
そのDBの記録を読み書きさせたいだけです。

403 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:21:43 ]
製品でも繋がるかどうか知らない。
MicrosoftからしてみればフリーのFirebird用の
ライブラリを用意する義理なんてないでしょうし(推測)。

Firebird用のADOがあれば繋がるんじゃい(推測)?
ADO.NETじゃないよ。
あるいはODBC。

実際はDBMS固有の色々あるからすんなり行くか判らんけどね。

404 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:23:51 ]
Visual C++ 2005 ExpressだとATLとかないんだっけ?
ADOはActiveX(COM)だからちょっと大変かもな。


405 名前:400 mailto:sage [2007/03/19(月) 02:24:40 ]
>>403,404様
本当に、レスありがとうございます。

そうですか、難しいですか・・・。
やはり、SQLServerExpressを使用しないといけない見たいですね。
こちらも、フリーなのですが4G制限等があるからイヤだったんですよねぇ。

実は、図書館レベルとは言わないが、資料がたくさんあるので4Gで収まるか
自信ないんですよねぇ。何件分くらい入るもんでしょうか?
はぁ・・・。
でも、SQLServerExpresとVisualC++2005Expressとの組み合わせなら、
初心者でも簡単にDBアプリ(資料メディア管理アプリ)出来ますでしょうか?
又、DBアプリに関してわかり易いサイトって、MS以外にありますか?
よろしくお願いします。
ちなみに、ググッても分かりませんでした。(検索が悪いとは思いますが)

406 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:27:13 ]
最初は誰でも初心者だけど
それを免罪符にして疑問を○投げって姿勢は良くないお

407 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:35:11 ]
もうSQLiteでいいんじゃね?

408 名前:400 mailto:sage [2007/03/19(月) 21:58:57 ]
>>406
その通りですね。

>>ALL
取り合えず、初心者なんだからDBは置いといて
C++の勉強から先に始めたいと思います。
ある程度、出来てからまた質問させて頂きたいと思います。

みなさまレスありがとうございまいした。


409 名前:日付の罠 mailto:sage [2007/03/20(火) 02:35:56 ]
↑にハマっています。

すみません。
単純な日付計算が出来なくて困っています。

dateTimePicker1の日付から、dateTimePicker2の日付の差である。
日付をラベルに出力する方法をお願いいたします。

自分の想像では、

日付変数の宣言
日付変数=dateTimePicker2−dateTimePicker1
ラベル.Text=型変換(日付変数)

だと想像するのですが、HELPにも乗っていません。
ご教授お願いします。


410 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 03:07:14 ]
日付に罠が仕掛けられていたり、使用法がHELPにのっていないような開発ツールは
使わないほうが良いと思いますよ。

411 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 03:13:26 ]
dateTimePicker って VB?



412 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 03:15:14 ]
dotnet

413 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 03:25:38 ]
>>409
それはC++/CLIかな?それともMscomct2.ocx?


414 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 03:38:16 ]
C++とC++/CLIの区別がつかず、知らずににC++/CLIを使ってる初心者が増えている。
これはMSの罠だな。

415 名前:409 mailto:sage [2007/03/20(火) 10:52:25 ]
>>413
レスありがとうございます。
Microsoft Visual C++ 2005 Express Editionを使用しています。
只単に、カレンダー1とカレンダー2との差を表示したいだけです。
例:”期間は、Y年M月D日です。”または、”日数のみ計算でXXX日です。”

C++/CLIが何かさえ分らない自分ですが、よろしくお願いします。

>>414
そうなんですよ。
HELPが分りにくくて・・・理解しにくいし検索もHITしないんです。
なんか、単純計算使用例みたいなのも載ってないっぽいです。
もちろん、頭が悪い自分が一番悪いだろうけどね。

416 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 11:21:12 ]
>>415
DateTimePickerで検索したら、値を取り出すサンプルが出てきたぞ。
値を取り出すとDateTime型のようだから、DateTime型のメソッドがそのまま利用できる筈なんだが。

417 名前:416 mailto:sage [2007/03/20(火) 11:23:26 ]
あ、検索したのはMSDNね。

418 名前:409 mailto:sage [2007/03/20(火) 18:49:03 ]
>>417
レスありがとうです。

でも、理解出来ませんでした。(T_T)
何がどうなっているのやら・・・。

まず、>>409の1行目の予定の
日付変数の宣言方法さえ分りません。
Int型は、市販の書籍に載ってたんですけどねぇ。
お手数ですが、簡単なソースにコメントを書いて頂ければ幸いです。

教えて頂いたサイトから、
「プログラミング チャレンジ スクエア」って言うのも
見つけたんですが、C++は無いのです。
あんな感じのサイトのVisualC++2005ExpressのHPは無いんでしょうか。

宜しくお願いします。

419 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 18:57:47 ]
そういうやつのためにC#があるんだから素直にそっち使っとけ

420 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 18:58:45 ]
最早C++/CLIはC++じゃない(と言い切ってもいい位の)存在だから、
C++をやりたいならGUIは一旦横に置くべきだし、GUIをやりたいならC#に乗り換えるべき。

421 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 21:09:00 ]
2つの日時の値を引き算すると、時間間隔を表すTimeSpan型が返る。
TimeSpan span = dateTimePicker1->Value - dateTimePicker2->Value;

でそのTimeSpanから日の部分だけを取り出し文字列に変換してラベルにセット
label1->Text = span.Days.ToString();

最初はMSDNが理解しにくいのはわかるけど、あれを読めるようにならないと進歩はないよ。



422 名前:409 mailto:sage [2007/03/21(水) 10:44:52 ]
>>421
ありがとうございます!私にも分りやすいです。
そういう答えが欲しかったんです。m(_ _)m
本当に感謝しています。私にとっては貴方は神です。

>>419,>>420さんの忠告もありがとうございます。
自分が求めているのがC++ではなくC#だと気付かされました。

何より、またこのスレで>>421神に頼るのは心苦しく思います。
C++は、置いといてC#をダウンロードして試してみます。


423 名前:デフォルトの名無しさん [2007/03/22(木) 21:29:05 ]
質問があります。
あるデータベース的な2次元vector vecがあって、
性質の違う2つのクラスA,Bからそのvecを参照したり、書き換えたり
したいのですが、そのvecはどんなクラスにしてA,Bからどんな風に
使えばよろしいのでしょうか?

考えた範囲ではvecを静的データメンバにして参照するという方法ですが、
何か「vecはA,Bに含まれるよー」という雰囲気が出せないので他に方法が
あるかのかなぁと思っています。

424 名前:423 mailto:sage [2007/03/22(木) 21:42:50 ]
追加で質問です。教えてクンですみません・・。
2次元vector(大きさは確定)をデータメンバに持つクラスにおいて、
どうすれば綺麗に初期化すればよいのか教えてください。

考えたのは、以下のとおりです。
Class hogeData{
 std::vector< std::vector<char*> > data;
 hogeData(){
  data.resize(I);
  for(int i=0; i<I ; i++){
   data[i].resize(J);
  }
  // ...dataに代入など
 }
}

気分的には std::vector< std::vector<char*> > data(I,J);
というように一発で初期化したいのですが、クラスのメンバだと
そうもいかず・・。

425 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:47:26 ]
boost::numeric::ublas::matrixとか使った方が良くね?

426 名前:423 mailto:sage [2007/03/22(木) 22:14:19 ]
>>425 返信ありがとうございます!そんなのもあるんですね。
ぜひ勉強してみます。今ちょっと調べてみたのですが、
vecに対してよく使うことになると思われるsortに関しては、
どうもSTLのvectorの方が速そうです....

ttp://archives.free.net.ph/message/20070223.210148.7ae631a4.en.html

427 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:31:53 ]
Linux環境でgetopt()を使うためにunistd.hをincludeしているソースを、
VisualC++でコンパイルしたところ、unistd.hが見つからないと言われました。
代替になるインクルードファイルはありますでしょうか?
よろしくお願いします。

428 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:40:00 ]
ない

429 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 00:38:21 ]
無いんですか・・ありがとうございます

430 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 04:52:12 ]
ほんとかよ、と思ってしまう回答だがはて…

431 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 06:59:30 ]
getopt()があればどれだけ楽か……



432 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 08:42:42 ]
CUI環境の話だったらC++スレとかでやってほしい。
激しくどうでもいい

433 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 08:51:10 ]
GUI環境しか使えない香具師は只単に読み飛ばすということさえ出来ないらしい。困ったもんだ。

434 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 08:54:59 ]
腐るぐらいスレがあるのにわざわざここで質問するやつの気が知れない。

435 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 08:57:28 ]
VCだからだろ。

436 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 09:02:18 ]
Linux依存→依存なしの移植だろ
VC関係ない

437 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 09:33:42 ]
getopt()だからLinux依存じゃないぞ。VCがPOSIX準拠してないのが問題なんだ。

438 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 09:35:20 ]
>unistd.hをincludeしているソースを

uniって何の略?

439 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 09:40:06 ]
>>438
少なくともLinuxの略ではないな。

440 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 09:42:19 ]
初心者だったら基本やってりゃいいんだよ
実力もないのにややこしいことやろうとすんな

1 初心者には無理だから素直にあきらめる
2 初心者卒業してからやる
3 教えてくれるまで暴れる

441 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 09:51:59 ]
と、実力もないのに初心者を脱出したと思い込んでいる>432=434=436=438=440が申しております。



442 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 09:57:07 ]
>>439
unix standardって感じか? システムコール系の関数が詰まってるね。 

443 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 13:49:52 ]
自分が答えられそうにもないCUI系の質問が来るだけで
火病起こす奴ってなんなの?

444 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 21:47:01 ]
openFileDialogのOKボタンが押されると、c_printfuncにファイル名を渡して
呼び出し、その関数の内部でファイル名を標準出力したいです。
以下のようにしているのですか何も出力されません。
どこが間違ってるのでしょうか・・?

--------------------
[openFileDialogのOKボタン押された時]
private: System::Void openFileDialog1_FileOk(System::Object^ sender,
 System::ComponentModel::CancelEventArgs^ e) {
 String^ fname;
 if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) {
  fname = openFileDialog1->FileName;
  c_printfunc(fname);
 }
}
----------------------
[c_printfunc.cpp]
#include "stdafx.h"
#include <stdio.h>
int c_printfunc(char* fname) {
 printf("%s\n", fname);
 return 0;
}

445 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:03:30 ]
すみません今リブルドしたところ、エラーが出ていました
1>f:\documents and settings\(省略)\Form1.h(485) : error C3861: 'c_printfunc': 識別子が見つかりませんでした

446 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:17:51 ]
なんどもすみません
openFileDialogの中からどうやってc_printfuncを認識させるのでしょうか?
今日始めたばかりでわけわかめ状態です;;

447 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:11:19 ]
質問とは関係ないけど
そういえばアウトプットウインドウにデバッグストリング出力する機能があったな
デバッガばっかり使ってて存在自体を忘れてた

448 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 00:48:25 ]
だからCUIというかソースレベルの質問はスレ違いだって
過去スレ見ればわかるだろ
ここはVisualCの機能や使い方を答える程度のレベルのスレなの

449 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 00:56:51 ]
>>1も読めない初心者未満が何か言ってる

450 名前:446 mailto:sage [2007/03/25(日) 10:16:58 ]
関数プロトタイプを記述することで自己解決しました
お騒がせしました

451 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 14:09:16 ]
ダウンロードするのに住所や電話番号を登録するようですが、
何か連絡が来ることってあるんでしょうか?



452 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:22:46 ]
無いよ

453 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:52:44 ]
#include <stdio.h>
main()
{
printf("文字表示のテスト");
}

これを実行した時に、F5(デバッグあり)で実行すると
すぐにウィンドウが閉じてしまいますが
ctrl+F5(デバッグなし)で実行すると、ウィンドウが表示されたままに
なるのは何故なんでしょうか。

また、DOS窓でなく、通常のウィンドウへの描画は
どのような手順で行うのが簡潔でしょうか。

454 名前:453 mailto:sage [2007/03/30(金) 01:56:21 ]
環境はVC++8.0ですが、学習のためにCの記述をしています。

また、8.0以前のサンプルを開こうとした時に、変換を行った後
そのソリューションを実行するにはどうすればいいでしょうか。

455 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 04:26:58 ]
#include <conio.h>
を追加して

}の前にgetch();追加で
キー一回押すまで進行停止が出来るよ

456 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 06:19:55 ]
>453
裏で別のプログラムが面倒みてくれてる

457 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 07:36:32 ]
>>455

cinのがよくね?

458 名前:453 mailto:sage [2007/03/30(金) 07:55:11 ]
すみません、自分で読み直してみて、一度に質問を書き込みすぎました。
でも、皆さん親切に教えていただけるので、とても嬉しいです(;;)

459 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 09:04:24 ]
微妙に回答のポイントがずれてる希ガス

460 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 10:36:22 ]
じゃ、簡潔に。

>ctrl+F5(デバッグなし)で実行すると、ウィンドウが表示されたままに
>なるのは何故なんでしょうか。
仕様です。

>また、DOS窓でなく、通常のウィンドウへの描画は
>どのような手順で行うのが簡潔でしょうか。
WinAPIを使えばできますが、その為には先ず一通りCの知識が必要になります。

461 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 10:40:20 ]
EEなら該当スレみつけてSDKインストール



462 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 10:50:54 ]
>また、DOS窓でなく、通常のウィンドウへの描画は
>どのような手順で行うのが簡潔でしょうか。

まとめると
(1)MicrosoftのサイトからPlatformSDKをダウンロードしてインストール
  (これでWin32APIを使うことができる)
(2)ウィンドウ作成
  (Win32APIはmainの代わりにWinMainを使う)
(3)ウィンドウに文字を出力

463 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 11:07:35 ]
>通常のウィンドウへの描画は...

通常のウィンドウをどうやって作るかにもよるんだけど
1. Win32(C or C++)
  基本だけど全てを自分でやる必要がある。
2. MFCアプリ(C++)
  MFCが多くのことをやってくれるけど、構造の理解に時間がかかる。
3. CLRのWindowsフォームアプリ(C++/CLI)
  上の二つとは異質だけど初心者には楽。いわゆるドットネット。

他にも選択肢はあるけど、普通はこの3択。誘導される前のスレッドを見る限り
VC8EEなんだろうな。その場合2は選択できない。1を選ぶなら>>462で。
プロジェクトの変換については情報不足杉。

464 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 11:27:54 ]
>>463
MFCアプリ(C++)、CLR(C++/CLI)になってるけど、
この二つは、C言語形式で書けないの?
勉強中でよくわからない・・・

465 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 11:40:54 ]
MFCの場合、自分のロジックはCと互換性のある書き方もできるけど、
WindowsとのI/FはC++でないとコンパイルできない。

CLRの場合、最早Cと互換性を持たせることが無意味。
何故なら、文字列から日付け処理からメモリ管理から何もかも流儀が全て違う。

466 名前:453 mailto:sage [2007/03/30(金) 16:51:55 ]
ありがとうございます、通常のウィンドウへの描画は
WindowsのAPIを使ってみることにします。
まだ、ポインタもわかってないので(というか勉強がまだなので)
地道にCの言語仕様を学んだ後で、SDK取りに行きます。

バージョンの古いサンプルが開けない、というのは
恐らくツールの使い方がわかっていないだけだと思うので
もう少し自分で頑張ります。

467 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 23:25:52 ]
そのレベルなら1年は覚悟した方がいいよ

468 名前:453 mailto:sage [2007/03/31(土) 00:20:45 ]
かかるかもしれないですね。でも、正直そこまで時間はかけたくありません。
地道にひとつずつ習得する以外方法はないと思いますが、

例えば、「ブロック崩し」を作りたい、という目的がある、とした場合に
どの道筋が適切かご指導いただけるとありがたいです。
ちなみにお察しの通り環境はVC8のEEです。

469 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 00:25:11 ]
C#でもやれば?
Javaだと某有名プログラムがあることだし、フラッシュも最近増えてきたけど。

470 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 16:50:42 ]
別の環境で作ったソースをVCで編集しなきゃいけないんですが、
フォルダ構成を元のままVCで作業するにはどうしたらいいでしょうか?

新規プロジェクトを作ってみたら
ソースもヘッダも全部同じフォルダにできてしまうみたいで・・・

フォルダの設定とかありませんか?

471 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 17:25:30 ]
好きなようにできるだろ



472 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 17:59:47 ]
できてしまう、って何でソースやヘッダを作る必要があるんだ?
もうソースはあるんだろ?

473 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 12:46:41 ]
VC6.0でWIN32API(SDK?)で開発しています

エディットコントロールで文字列を追加したときに、自動でスクロール
させたいのですがうまくいきません(文字列の追加はできてます)。

CreateWindowExで指定しているウィンドウスタイルは次の通りです。
 WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL |
 ES_AUTOVSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY,

文字列周りは、このようにしています。
 SetWindowText(hEdit, "起動\r\n(^-^)\r\n");
 SendMessage(hEdit, EM_SETSEL, 0, -1);
 SendMessage(hEdit, EM_SETSEL, -1, -1);
 SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"(@-@)\r\n");
 SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"(T-T)\r\n");
 SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"orz\r\n");
 SendMessage(hEdit, EM_SCROLLCARET, 0, 0);

ネットで調べたところ、ES_AUTOVSCROLLやEM_SCROLLCARETがあれば勝手
にやってくれそうなんですが…
どうすれば自動でスクロールし追加した文字列部分が表示されるように
なるのか、教えて下さい。

474 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 14:03:10 ]
EM_SCROLLCARET
これでわざわざスクロールしてるような気がする

475 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 17:29:35 ]
>>473の文字列追加した後で、別のルーチンから文字列追加を大量に
行ったら、ちゃんとスクロールしてくれました。
>>473の処理はEM_SCROLLCARETの一行をコメントにしても変わらず…
なにか条件があるんでしょうか…

476 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 12:02:01 ]
>>468
ブロック崩しを作りたいなら
@まず持ってるVCの基本操作を覚える(プロジェクト作成の仕方、コンパイルの仕方、実行の仕方、
 できればブレークポイントを使った基本的なデバッグ手法やコンパイルオプションの違い等も。)
ACを覚える(基本文法・関数・ポインタ等。これはどんなCプログラムが作りたかろうが全ての人が通る道。)
BWin32APIに触ってみる(ウィンドウを使ったプログラムの作成。)
Cグラフィカルなプログラムを作ってみる(GDIを使うorDirectXを使う。どっちでもお好きに。)
Dブロック崩しを作ってみる(ゲーム特有のアルゴリズム・当たり判定や入力制御等を学ぶ)

酷く大まかだけどこんな感じでいいんじゃないでしょうか。
ちなみにかかる時間はAが一番長くなると思います。

477 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 01:18:00 ]
嘘だ、絶対4だ。

478 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 08:14:48 ]
でも挫折するのはたいてい3じゃないか?

479 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 10:05:53 ]
M$と相性が合わないなら(1)で挫折するはず

480 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 12:02:09 ]
ゲームは昔から出来合いのゲームのソースをいじりながら覚えたもんだが
BASIC限定だったのかもしれないな

481 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 12:34:05 ]
basicでゲームやったことありますとか言い出すやつは使いものにならない。
たとえそういう経験あったとしても黙っておくもの



482 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 12:57:19 ]

      < ワタシ ヲ ヨンダ??
  ●/ 
<■
/  >

483 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 13:59:52 ]
>>481
そういう話じゃないでしょ。
既存のソースの改造から始めるのはどうかという話では。

484 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:17:17 ]
いきなり改造から始めるなんて聞いたことがない。
VCの場合コードの量が半端じゃないし、
他人の書いたコード読んで仕様まで理解できたら相当なレベルだと思う。
初心者レベルだとビルドできなくて投げ出すのがせいぜい。

485 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:25:47 ]
いやだからBASICの話でしょ改造なのはw

486 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:48:20 ]
昔はね。
今でも新しいことやるのはサンプルソースからやるけど。

487 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:51:03 ]
  ┏┳┳┓     ハイ.     ┏┳┳┓
┏┫┃┃┃     雑談は   ┃┃┃┣┓
┃┃┃┃┣┓   ここまで.┏┫┃┃┃┃
┃      ┃┃┏━━━┓┃┃      ┃
┃ 雑談   ┣┫ . ・∀・ ┣┫. STOP!┃
┗━━━━┛┗┳━┳┛┗━━━━┛
            ┏┻┓┃
        ┏━┛  ┣┻┓
        ┗━━━┫  ┗━┓
             ┗━━━┛

488 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 21:53:49 ]
  ┌┬┬┐     ハイ.     ┌┬┬┐
┌┤│││     雑談は   │││├┐
││││├┐   ここから.┌┤││││
│      ││┌───┐││      │
│ 雑談   ├┤ . ・∀・ ├┤ START.!!│
└────┘└┬─┬┘└────┘
            ┌┴┐│
        ┌─┘  ├┴┐
        └───┤  └─┐
             └───┘

489 名前:デフォルトの名無しさん [2007/04/03(火) 23:58:42 ]
初心者なんですが、どうしても分からない事があります。お教え頂けないでしょうか?
 フックプロシージャで、VK_DOWNをVK_TABに変換しているのですが、PostMessageだとうまく行くのに
SendMessageに変えると動作しません。
 ソースは次のようなものです。

static LRESULT CALLBACK OnKeyHook( int nCode, WPARAM wparam, LPARAM lparam )
{
if( nCode < 0 )
return CallNextHookEx( HHook, nCode, wparam, lparam );

UINT msg;
if( lparam & 0x80000000 ){
msg = WM_KEYUP;
}else{
msg = WM_KEYDOWN;
}
switch( wparam ){
case VK_DOWN:
PostMessage( GetFocus(), msg, VK_TAB, lparam );  ←ココです。
return TRUE;
default:
...
break;
}
return CallNextHookEx( HHook, nCode, wparam, lparam );
}

 VK_UP を SHIFT + VK_TAB に変換するのに SetKeyboardState を使いたいので、SendMessage で
行いたいので困っています。
 私の知らない何かがあるのでしょうか? 
 どうかご教授下さい。よろしくお願い致します。

490 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 01:25:54 ]
あまり詳しくないけどSendMessageはメッセージキューを経由しない
(TranslateMessageを通らない)のでWM_KEYDOWNのSendでは
WM_CHARが発生しないとか何とか。

↑↓でフォーカス移動をするだけなら、キーボードイベントを捏造するより
WM_NEXTDLGCTLをポストしたほうが楽だと思う。

491 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 12:02:54 ]
MessageBoxみたく、手軽に小さいウィンドウを出して
ユーザに文字列を入力させたいんですが、そういう関数ってありますか?



492 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 12:28:47 ]
>>491
DialogBox

493 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 12:36:55 ]
>>492
素早い返答thx!!!

494 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 12:40:06 ]
どういやDialogBoxと自分でウィンドウ作るのとどう違うんだろう・・・

495 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 12:44:21 ]
>>494
ダイアログテンプレート以外の違い?
モーダルとモードレスで違うべ。
モードレスは自分で作る場合に近いな。

自分でメッセージループ持たせてモーダルにすることもできるけど。

496 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 15:14:21 ]
>>490さん
ありがとうございます。SendMessageはあきらめました。

ところで WM_NEXTDLGCTL ってダイアログでしか使えないんでしょうか?
今ダイアログを使ってなくて、普通のフォームのEDITとかCreateWindowで貼り付けてる状態で、
WM_NEXTDLGCTLは効かないみたいなんです orz


>>494さんの疑問は私も悩んでいる点です

初心者でいっぺんにいろいろ覚えられないので、とりあえずダイアログを使わずにフォームをゴリゴリ
書いて、きつくなってきた所でダイアログの恩恵にあやかろうという方針を立てていました。

でも、そもそもの使用目的が違うような気がしてきて、にもかかわらず、その辺りの指針がはっきり
せず、すっきりしません。

皆さんはどういう基準で使い分けられてるんでしょうか。

497 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 18:09:55 ]
今思ったんですが、普通のウィンドウとDialogの違いってメニューを付けられるかどうかじゃないでしょうか?

普通のウィンドウ、Dialog ともにモーダル、モードレスにできるし、どれで始めて、どう遷移していけばいいか
迷うんですけど...

ひょっとしてDialogにもメニュー付けられたりして OTL

498 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 18:27:22 ]
たしか付けられるはず。

499 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 18:37:25 ]
基本的にダイアログテンプレートを使うか使わないかでわければいいじゃん

500 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:37:30 ]
ウィンドウには色々なスタイルがあって、
その中の一部分をダイアログと呼ぶ、というだけ。
てか、ダイアログをメインウィンドウにした方が
色々と楽だと思うのは俺だけ?

501 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:41:57 ]
>>496
ダイアログ以外では使えないと思う。
MFCのCFormViewなどでは通常のウィンドウの上にモードレスダイアログを貼り付けて
ダイアログリソースを利用しているので WM_NEXTDLGCTLも動く。

VistaのUIのガイドラインではウィンドウ全体を表示するためにスクロールバーを必要とする
ダイアログは使うな。ダイアログはメニューバーやステータスバーを持つな。となってるけど
ユーティリティのようなトップレベルウィンドウがダイアログの場合は除くとなっている。

トップレベルウィンドウをダイアログにするか、通常ウィンドウにするかの基準は、ざっと見た限りは
見つからなかった。
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/UxGuide/UXGuide/Windows/DialogBoxes/DialogBoxes.asp



502 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:45:04 ]
>>496
IsDialogMessageでを使えるようにならない?

503 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:45:13 ]
あと、ウィンドウクラスが #37770 じゃ困ることもあるべ

504 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:46:34 ]
>>498
メニュー簡単に付きました orz

>>499
ですよね

現在ダイアログに傾倒して行ってるところです。
できれば全部これでやりたいと思い初めています。メイン画面から全部。

でもどのサンプルを見ても通常フォームから始まってるんですよね...

ダイアログでは実現できない事って、例えばどんな事なんでしょうか。



505 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:47:02 ]
>>503
ダイアログでもウィンドウクラスを指定できる。
指定したときには、そっちになり#37770にはならない。

506 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:51:03 ]
WM_PAINTとかWM_CHARとかウィンドウそのものに関するメッセージを使うときには
普通のウィンドウにして、ダイアログにしない気がする。
あと、501のとおりメニューやスクロールバー、ステータスバーが付くときも
ダイアログは使われていないと思う(でもたしかにユーティリティでは見かけたことある)。

505みたいにどっちつかずな面もあるけど。

507 名前:デフォルトの名無しさん [2007/04/04(水) 20:58:21 ]
>>500
私もメインウィンドウをダイアログで行こうと考えています。

>>501
ありがとうございました。指針を示して頂いて、安心しました。
MSDN英語で読めるっていいですね。私はMSDN日本語でも頭がぐるぐるしてくるんです。

>>496
だめでした。

>>503
ダイアログのWM_CREATE(?)から CREATESTRUCT は取れるんですか?

508 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 21:01:26 ]
まちがえました。

>>502
IsDialogMessageをメッセージループに入れてもだめでした。

509 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 00:50:55 ]
ダイアログをメインフォームにしようとしているのですが、分からない事が出てきました。

DialogBoxParam でモーダル起動した場合、メッセージループが内部にあるから IsDialogMessage を組み込めないと
思うのですが、何か方法があるのでしょうか?

CreateDialogParam でモードレスダイアログを作って、メッセージループを準備するのが正しいやり方なのでしょうか?

どうかお教え下さい。よろしくお願いします。

510 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 01:42:26 ]
ModalならIsDialogMessageは必要ないだろ

511 名前:デフォルトの名無しさん [2007/04/05(木) 02:11:46 ]
2個スレッドを作って、一つでユーザーインターフェースの処理
でもう一方で計算をさせたいと考えてます。
で、AfxBeginThreadと制御関数でマルチスレッドぽくはできました。
ただ、計算の進歩状況の表示や中断をさせられません。
今のところボタンをクリックされた後イベントハンドラ中で
while文を回して進歩状況を表示していて意味がないんです。
ユーザー インターフェイス スレッド?を作れば一つは解決ですか?



512 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 02:27:39 ]
>>510
本当だ!IsDialogMessage を入れないと TAB キーが使えないのかと思ってました。
ありがとうございます。

513 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 02:43:43 ]
ウィンドウ登録、作成、メッセージループをダイアログに任せるだけで、こんなにもソースがすっきり!VBみたい
しかもコントールをXP風にできました。
うれしいです (↑∇↑) ありがとうございました。

514 名前:511 [2007/04/05(木) 05:12:06 ]
ようするに、
WinMain()に別のスレッドから進歩状況を伝えて
イベントを起こして表示させる方法を教えてください。
ということだったんですが、今もう一度探したら
PeekMessage()というのを見つけました。
どうも自分が行わせたい処理はマルチスレッドを使わなくても
よいように思うんでPeekMessage()を使ってみます。

できたあとの話になるんですが、処理にかかった時間を計測とか
できるんでしょうか?関数の実行に要した時間なんですが…

515 名前:511 [2007/04/05(木) 05:26:52 ]
timeGetTime見つけました。


スレ汚し申し訳ない…

516 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 05:30:31 ]
>>514
皆さん寝てるんじゃないですか。

スレッドは以前覚えたんだけど...確かセマフォとかミューテックスとかあってご要望の事もできる筈だけど
使わなかったので忘れましたヾ(≧▽≦)ノ

明日の夜ぐらいにはエロいひとが来て、答えてくれるんじゃないかなぁ。
とりあえず ↓ に目を通しておかれたらいいかも。

www2m.biglobe.ne.jp/~yasutaka/intro/no_99.htm

関数の実行に要した時間は簡単にとれると思うけど...

517 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 05:48:31 ]
>>505
ダイアログにウィンドウクラスを指定する方法を是非ともお教え下さい。お願いします┏○

518 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 08:03:06 ]
>>517
wisdom.sakura.ne.jp/system/winapi/win32/win89.html

519 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 20:08:04 ]
>>518
ありがとうございます ┏○

520 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 20:40:11 ]
 COM(ActivX?)が良く分かりません。以前VBでコントロール作ったり、ActiveX.Exe,ActiveX.Dllを作ったぐらいで...
 将来的にやりたい事は、以下の2つです。できればMFCなしで行いたいんです。

1.ブラウザ上に貼り付けて利用するもの。
2.DirectX,DirectShow がComベースらしいので理解したい。

 疑問点は以下の2つです。

1.MFC使わずにATL だけで実現可能でしょうか?
2.VS.NET 2003 で作成できるのでしょうか?(No Managedで)
  今まではVC6の ATL COM AppWizard で作成してたんですが、VS.NET 2003 ではどの AppWizard で作ればいいのか
  分かりません 。

 どうかよろしくお願いします。

521 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 21:21:17 ]
┏  ・:∴○ ドシュッ



522 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 04:01:26 ]
520ですが、1は自己解決しました。

VC付属の OLE VIEWER で右クリックしたらHTML用にOBJECTタグを作ってくれて、ブラウザ上で動作しました。
ろくに試しもせずに質問してしまい、申し訳ありませんでした。

523 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 10:45:33 ]
聞きたいことがあったんだけど、レス書いてたら答えに気づいたw

524 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 18:07:19 ]
そういうことって結構あるよ。
文章にするというのが軽く気分転換になっていると思う。

525 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:09:26 ]
すみません。

変数の定義(int型)をmainメソッドの中の中間あたりで行うと
「そのような識別子はありません」とエラーが出てしまうんですが
(定義をmainの先頭に持ってくるとエラーが出なくなります)
なぜなんでしょう。先頭と中間での定義の間で
printf、scanf、while関数等を使っているんですが、何か関係がありますか?

526 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:14:54 ]
>>525
言語は何?
古いCでは変数宣言はブロックの先頭にある必要がある。
#勿論、ブロックの先頭ならよいので以下の例は問題ない。
int main()
{
printf("foo\n");
{
int foo = getchar();
printf("%c\n", foo);
}
return 0;
}

どうでもいいが、while関数なんてものは無いし、
一般的にcではメソッドとは言わない。用語は間違わないように。

527 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:23:03 ]
知ってるけどスレ違いだから教えてやらない

528 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:29:35 ]
そうなんですか、ちなみに言語はCですね。失礼しました。
getch()等が「古い型」だと注意されるのはなんだろうと思っていましたが。

ブロックを設けて先頭へ記述するようにします。
用語も適当に使っていました。

529 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:29:56 ]
まさか

printf("%d", a);
int a;

なんてやってるオチでは…

530 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:31:23 ]
>>526
インデントぐらいつけなよ

531 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:51:13 ]
あー、普段はエディタが勝手にインデントするし、どうせ見えないと思って割愛した。許せ。



532 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 18:03:44 ]
自動コード整形のパターンってカスタマイズできるんでしょうか?

533 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 20:30:36 ]
2chにソース張ること自体ねぇ・・・
どっか引っ越そうぜ

534 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:01:23 ]
int main() {
    using std::vector;
    typedef std::vector<int>::size_type vec_sz;

    vector<int> Integers;
        int    Integers_num = 112,   Integers_max = 100,     Integers_min = 0 ;
        make_randnums( Integers, Integers_num, Integers_min, Integers_max);    
    vector< vector<int> > Devided;
        vec_sz Devided_num = 4;
        Devided.resize( Devided_num );
        vec_sz Dev_contents_num = Integers.size() / Devided_num ;
        for ( vec_sz i = 0; i < Devided_num - 1 ; i++ )
            Devided.at(i).resize( Dev_contents_num );

        vec_sz last_num = Integers.size() - ( Devided_num - 1 ) * Dev_contents_num;
        Devided.back().resize( last_num );

        if ( Integers.size() ==
            ( Devided.size() - 1 ) * Devided.at(0).size() + Devided.back().size() ) {
            }else exit(1);
        std::sort( Integers.begin(), Integers.end() );
        std::reverse( Integers.begin(), Integers.end() );    

        vector<int>::iterator
            start_ptr    = Integers.begin(),
            end_ptr        = start_ptr ;
        for ( vec_sz i = 0; i < Devided.size(); i++ ) {
            std::copy( start_ptr, end_ptr += Devided.at(i).size(), Devided.at(i).begin() );
            start_ptr += Devided.at(i).size();
        }
    return 0; }

535 名前:534 mailto:sage [2007/04/08(日) 22:05:10 ]
このプログラムは某入門書の例題でヘタレの俺なりの回答案です
80行以上あったプログラムがコメントとか{}消したら1レスに収まっちゃったわけですが
コレって元の書き方が悪いんですかねぇ?

536 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:07:06 ]
勿論全体ではなく一部なんですが
それでも80超行が30行ちょっとってのは無いでしょうってことです

537 名前:536は535=534です mailto:sage [2007/04/08(日) 22:07:45 ]
すみません

538 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:08:20 ]
激しく読みにくくてウザい

539 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:11:33 ]
ゴミ

540 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:23:15 ]
>>534
コメントは消すなよw

541 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:32:43 ]
こういうのだったら消していい。
int i; /*ループ変数*/



542 名前:デフォルトの名無しさん [2007/04/08(日) 22:37:41 ]
良いプログラムとは、コードよりコメントの行数の方が多い

543 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:54:13 ]
ん?
元のソースはわからないけど
これよりはマシだったんだろうなぁと思う。

544 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 14:18:52 ]
良いプログラムとは、コード自体がコメントのように読める

545 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 14:24:59 ]
良いプログラムとはコードのないプログラム

546 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 14:42:14 ]
良いプログラムとは、ドキュメントだけでコードが理解できる ( ・`ω・´)ノ

547 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 15:18:10 ]
それは読んでる人の性能がいいだけじゃ・・・

548 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 15:26:57 ]
学習用の過程で作ったものだったら
それこそ8割がコメントとかでもいいんじゃないの?
コメントに表現しようとあれこれ考えるのも理解の助けになるし

549 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 17:44:31 ]
8割コメントって、学生かい ( ・ω・)
一応、クラス3分、関数30秒(=4行くらい)
で、読み終わる程度がいいとされてる
限られたスページと時間で、どれだけ理解させるかが文章力だ m9( ・`ω・´)

仕様100ページもあったら、結局何書いてるか分からんし
マニュアルも全部読まないでしょ、バージョン上がったらゴミになるし

550 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 17:46:33 ]
>仕様100ページもあったら、結局何書いてるか分からんし

・・・

551 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 18:03:46 ]
Boostのビルドも出来ん雑魚はほっとけ



552 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 19:48:20 ]
仕様書以外に何が用意されているかが問題だな。
サンプル一切無しなら死ねる。

553 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 16:10:07 ]
どれだけコードを綺麗に区切ってまとめられるかと、
それにどれだけ適切なコメントをできるかが
勝負の分かれ目

コメントは付けりゃいいってもんじゃない
8割コメントはちょっとアホだろ・・・w
場合によるけどさ

554 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 20:28:35 ]
ここって結構底辺なのなww

555 名前: ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ mailto:sage [2007/04/10(火) 21:08:38 ]
       _____
      /::::::::::::::::::::::::::\                  _
     /::::::::::::::::::::::::::::::::::::::\             /  ̄   ̄ \
     |:::::::::::::::::|_|_|_|_|           /、          ヽ
     |;;;;;;;;;;ノ   \,, ,,/ ヽ          |・ |―-、       |  きみ頭だいじょうぶ?
     |::( 6  ー─◎─◎ )          q -´ 二 ヽ     |
     |ノ  (∵∴ ( o o)∴)         ノ_ ー  |     |
   /|   <  ∵   3 ∵>          \. ̄`  |      /
   ::::::\  ヽ        ノ\           O===== |
   :::::::::::::\_____ノ:::::::::::\        /          |

556 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 12:22:23 ]
それがくだすれのくだすれたる所以

557 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:36:39 ]
class Fred;
typedef auto_ptr<Fred> FredPtr;
class Fred{
public:
static FredPtr create() throw(bad_alloc);
static FredPtr create(int i) throw(bad_alloc);
static FredPtr create(const Fred& x) throw(bad_alloc);
virtual void goBowling();
private:
Fred(int i=10) throw();
Fred(const Fred& x) throw();
int i_;
};
FredPtr Fred::create() throw(bad_alloc)
{ return new Fred(); }

FredPtr Fred::create(int i) throw(bad_alloc)
{ return new Fred(i); }

FredPtr Fred::create(const Fred& x) throw(bad_alloc)
{ return new Fred(x); }

void Fred::goBowling(){
std::cout << this->i_;
}
Fred::Fred(int i) throw() : i_(i){}
Fred::Fred(const Fred& x) throw() : i_(x.i_){}
void sample()
{
FredPtr p(Fred::create(5));
p->goBowling();
}

558 名前:デフォルトの名無しさん [2007/04/15(日) 09:37:49 ]
C++QAにあるソースなんですが、
p->goBowling();でアクセス違反が起こります。

なんで?

559 名前:デフォルトの名無しさん [2007/04/15(日) 21:24:47 ]
元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて
結局派遣やってるバカがいるんだけどw
なんか派遣先といい関係、とか言ってたから思わず吹き出しちゃったよw
最近はマネージャーもやってるとか寝言言ってるし、派遣がまねぇじゃぁ?はあ!?w

そもそも信頼されてるなら直接契約するか正社員にするはずだが、
いつでも切れる派遣会社経由って舐められてんだよ

派遣期間が長くならないうちに早く就職しろ、と忠告したら、ウッキー!って逆ギレw
バカで頑固だから何度言っても理解できない
騙されたとはいえ結局は自分で決めて派遣やってる癖に逆ギレしちゃってまぁ
人間として本当に恥ずかしい


560 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:34:31 ]
そうか、とりあえずスレタイ読み直せ。

561 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 17:01:15 ]
>>559
派遣と言ってもいろいろあるんだけど知らんのか?
数十人の派遣プログラマがいればマネージメントする人間も当然必要になる
だろ。その人間は責任を負うと同時に給与も高いって仕組み。

派遣は確かに「いつでも切れる」存在ではあるけど、切るためにはそれなり
の理由が必要だし、むやみに切れば信頼関係が損なわれて派遣を採用する
会社側にも損失はあるんだよ。

そもそもお前のそのレスから簡単にプロファイリングするに、
お前自身がちょっとどうかと思う人間に見えるわけだが…。



562 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 17:03:00 ]
よくみかけるコピペだけど

563 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 17:12:48 ]
>>562
そうなの?俺ははじめて見た。
どこが笑い所のコピペなの?

564 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 17:21:10 ]
www.google.co.jp/search?hl=ja&q=%E7%A8%BC%E3%81%92%E3%82%8B%E3%81%A8%E3%81%8B%E9%A8%99+site%3A2ch.net


565 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 17:57:12 ]
>>564
数あるコピペから>>559はなぜこれを選んだんだろ。
貼り付けた理由が理解不能。しかもこのコピペ、ちっとも面白くない。
あとスレ違いも甚だしい。なんなんだコイツは。

566 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 18:21:21 ]
面白くない上に長いから、嫌がらせにはちょうどいいということじゃないのか
あまり長すぎると1行も読まれないから、あのくらいにしたんだろう

567 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 21:00:57 ]
あの長さなのにコードが一行も無い時点で読まない

568 名前:デフォルトの名無しさん [2007/04/17(火) 21:43:20 ]
流れ読まずに投下スマソ

WTL7.1 の AppWizard でダイアログベースのプロジェクトを作って、
ダイアログのフォントを MS UI ゴシック/9pt に設定したんだが、
実行時に文字化けを起こす。
教えてエロい人><

569 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 21:57:48 ]
>>568
WTLだと言語がデフォルトで「英語」になってるはず。
開発環境によって違うが、リソースエディタのどこかに言語を設定するところがあるから
そこを「日本語」に変えてみ。

570 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 22:53:43 ]
>>569
おっしゃるとおり、リソース自体の言語が 英語 になってますた!
最初日本語にしても「あれ?カワンネ」と思いリビルドしたらうまくいった!
thxエロイ人!!!!!!!!!!

571 名前:デフォルトの名無しさん [2007/04/17(火) 23:12:59 ]
以下のような全角半角変換関数を作ったのですが、変換成功判定がうまくいきません。
『×』の行がおかしいところです。
どうすればいいのかお願いします。
ちなみにVC++6です。

//全角→半角変換関数
BOOL CDlg050Imp::ConvertZenToHan(CString gZenNum, CString& gHanNum){
BOOL bRet = TRUE;//変換成功フラグ
CString gAfter = _T("");//gHanNumを直接使うと前回のバッファが残っているので別変数を間にかます。
int nLenValue = gZenNum.GetLength();
int nRet = LCMapString(GetUserDefaultLCID(), LCMAP_HALFWIDTH, gZenNum, nLenValue, gAfter.GetBuffer( nLenValue ), nLenValue);
gHanNum = gAfter;//コピー
× int nLenAfter = gAfter.GetLength();//必ず0になってしまう。
× int nLenHanNum = gHanNum.GetLength();//必ず0になってしまう。
if(nLenValue != nLenAfter)//文字数が違うなら
bRet = FALSE;//変換失敗
else
{
for(int nMoji = 0; nMoji<nLenValue; nMoji++ )
{
CString gOneZen = gZenNum.Mid(nMoji, 1);
× CString gOneAfter = gAfter.Mid(nMoji, 1);//nLenAfterが0なので当然ながらアプリエラーが起きる。
if(gOneZen == gOneAfter)//同じ文字があるなら
{
bRet = FALSE;//変換失敗
break;
}
}
}
}



572 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 23:19:26 ]
ReleaseBufferはどこだ?

573 名前:571 [2007/04/17(火) 23:32:23 ]
× gAfter.ReleaseBuffer(nLenValue);//アプリエラーが起きる
int nLenAfter = gAfter.GetLength();//正常に長さが取れた


ReleaseBufferを入れてみたら、アプリエラーは起きますけど長さは取れました。
って、やり方が違うのかな…

574 名前:デフォルトの名無しさん [2007/04/18(水) 00:00:51 ]
>>561
論点ずれまくりだろ
自分で正社員を辞めて派遣になったのにブーたれてるような人間は
何をやってもダメだと思うぞ

575 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 02:26:59 ]
プログラムをコンパイル→実行したあと自動的に閉じないようにできますか?

576 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 03:05:08 ]
できます。

577 名前:デフォルトの名無しさん [2007/04/18(水) 12:32:28 ]
質問よろしいでしょうか。

VisulC++6.0で
exe→pdf呼び出しを行いたいのですが、コンポーネントの追加にAdobe PDF Readerを追加し、ダイアログに貼り付けようとしたら「ActiveXコントロールのインスタンスは作成されませんでした」とメッセージが表示され、貼り付けることができません。

exeから呼び出しを行いたいので、ShellExcuteEXを使わない方法以外にはないのでしょうか?

どなたかご教示お願いします。

578 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 14:38:01 ]
>>577
ネタか?
CreateProcessの引数にpdf

579 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 14:58:38 ]
IEがやってるようにActiveXを上手いこと使いたいんでないの。

580 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 15:04:49 ]
じゃIE貼っとけ

581 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 15:23:54 ]
577です。
Acrobat SDKのActiveViewみたいなことをと思っておりました・・・。
質問の意図が意味不明になっており、ご迷惑をおかけしました。

579氏、580氏
IEを貼る手法で行いたいと思います。。

ありがとうございました。



582 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 19:31:46 ]
>>576
どうやるの?
ソースに余分な関数入れるんじゃなくて設定でできるの?

583 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 20:02:45 ]
つ デバッグ無しで開始

584 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:17:49 ]
>>583
ありがとうございます。出来ました(゚∀゚)
すごく助かりました

585 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 11:01:38 ]
ウィンドウプログラミングで
ウィンドウハンドル、ウィンドウプロシージャで作るのと
ビュークラスやダイアログクラスで作るのと
2つあるみたいですけど・・・何が違うのですか?
どちらが主流なんですかね

586 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 19:25:37 ]
>>585
>ウィンドウハンドル、ウィンドウプロシージャで作るのと
これは低レベル(抽象度が低いって意味ね。「高級言語」とかいう時の高級/低級)。

>ビュークラスやダイアログクラスで作るのと
中で上の低レベルなものを使ってる。

Win32APIだけで作るのはだいぶ面倒くさい。既にあるものは使った方がいい。

587 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 17:24:44 ]
Visual C++6.0 のインストールを行っています。
続けてサービスパック6を入手しインストールしようとしましたが、
「ファイル C:\Windows\System32\MSFLXGRD.OCX を開くことができませんでした」
となり、セットアップが正常終了しません。

セットアップ手順に誤りがあるのでしょうか。
(MSDNからサービスパック6を入手し、展開先のフォルダで setupsp6.exe を実行しました)

588 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 17:32:13 ]
CDにMSFLXGRD.OCX入ってるだろ

589 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 17:55:15 ]
>>588
迅速なレス感謝です!
そもそも、Visual C++6.0インストール時のオプション設定で選んだインストール構成では MSFLXGRF.OCX が不要
(つまり、今発生しているSp6適用時のエラーは無視してよい)なのか、
それとも、CDからOCXファイルをコピーしてきてでも本セットアップ(SP6)をあてるべきなのかがわかりません。


590 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 18:08:11 ]
今や貴重なコントロールなんだから入れておけば?<FlexGrid

591 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:46:48 ]
Sp6のセットアップエラーを無視しても動きましたが、
一応FLXGRD入れておくことにしました。

助言ありがとうございましたm(__)m




592 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:26:17 ]
winXPでMicrosoft Visual C++ .NETを使っています。

ご相談したいのは、
「新規作成」→「プロジェクト」→C++の「MFC アプリケーション」で作成して
その後のウィザードで「アプリケーションの種類」→「ダイアログ ベース」に設定して「完了」を押すと
〔〜.ncd〕〔〜.sln〕〔〜.suo〕〔〜.vcproj〕しか作られません。
どうすれば良いでしょうか。
御教授をお願いします。

593 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 01:19:05 ]
まずは日本語の勉強してきてくれ。
難しいなら敬語は使わなくてもいいよ。

594 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 15:03:05 ]
どの辺が分かり難かったでしょうか?
要約をさせていただくと、「〔〜.ncd〕〔〜.sln〕〔〜.suo〕〔〜.vcproj〕以外のも作られるようにするには
どうすればいいのでしょうか」ということです。
どなたか、ご返答をお願いします。

595 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 15:19:48 ]
それ以外の何を作りたいのかさっぱり。

596 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 15:34:02 ]
>>594
クラスビューやソリューションエクスプローラなどで「追加」すればいい。

色んな所で右クリックしてどういうメニューが出るかとか、
上に並んでるメニューの中の項目を一通り試してみるとか、しないか?普通。
IDEもGUIアプリなんだしさ。

597 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 16:26:34 ]
ウィザード使ったらビルドすれば実行可能な状態のソースまで作ってくれる。
空のプロジェクトなら自分でソース追加しなきゃ始まらないけど、
ダイアログベースならダイアログ出すソースができてるはず。

598 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 17:15:52 ]
>595-596はたぶんMFC使ったことないから無視で

599 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 17:28:06 ]
ビルドしなくてもソースは生成されていないとおかしい
操作ミスなのではないか?

600 名前:599 mailto:sage [2007/04/23(月) 17:28:58 ]
あ、何か誤読してたスマソ

601 名前:592 mailto:sage [2007/04/23(月) 18:02:29 ]
すいません。
書き忘れていたことがありました。
「スケルトンが作成されない」のです。
本当に申し訳ありません。



602 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 19:02:34 ]
2005じゃないということはだいぶ前にインストールした?
それから何回か使った?
全く状況がわからん

603 名前:592 mailto:sage [2007/04/23(月) 20:04:15 ]
>>602
2003です。
インストールしたの半年前です。


604 名前:592 mailto:sage [2007/04/23(月) 23:00:15 ]
>>596
ご返答ありがとうございます。
「開始」を押すと
「デバックを開始できません」
「プログラム'〜.exe'を開始できません。」
「指定したファイルが見つかりません」
というウィンドウが出てしまうので、ただスケルトンが表示できていない
のではと思うのですが、それ以上は私にはわかりません。

605 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 10:08:10 ]
>>604
ダイアログ以外はどうなんの?

606 名前:デフォルトの名無しさん [2007/04/25(水) 12:10:32 ]
大学のVisual studio2003でWM_MOUSEWHEELメッセージを拾おうとしたら
WM_MOUSEWHEELは定義されていないというエラーが出ました。
マウスカーソルをWM_MOUSEWHEELの上に持っていくと、
#define WM_MOUSEWHEEL 0x020A
とちゃんと出ているので自分でその値をdefineしたらビルドが通ったのですが、
なんで自分で置かないとWM_MOUSEWHEELが定義されていないと出るのでしょう?

607 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 12:28:19 ]
WM_MOUSEWHEEL はあとから追加されただけで
windows.hに無いからね

608 名前:607 mailto:sage [2007/04/25(水) 12:29:41 ]
#define _WIN32_WINNT 0x0400
を入れれば有効になると思うよ

609 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 12:44:00 ]
>>607
ありがとうございます。
後からというのは自宅のvisual studio2005では普通に出来たのでそこからということでしょうか?
ちなみにソースコードのWM_MOUSEWHEELにマウスカーソルを持っていくと
#define WM_MOUSEWHEEL 0x020A とちゃんとdefineされているように出てくるのは何でなのですか?


610 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 14:49:48 ]
「条件」によって存在しなかったことになる。

611 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 16:56:44 ]
>>610
本当にすまないのですがまだ無知ゆえもう少し詳しくお願いできますか?



612 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 17:02:50 ]
条件コンパイル

613 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 17:20:47 ]
>>612
なるほど、そういうことでしたか!
よく分かりました、ありがとうございます><

614 名前:デフォルトの名無しさん [2007/04/25(水) 22:12:59 ]
質問させてください。

FLOAT型の変数の値をMessageBoxで表示させたいのですが、ビルドを実行すると
2番目の引数を'float'から'LPCSTR'に変換できません。と出ます。float型をLPCSTR型に
変換するにはどうしたらよいのでしょう?コードはこのような感じで書いてます。

float a = 0.3f;
MessageBox(NULL, a, NULL, MB_OK);

615 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:15:25 ]
sprintf

616 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:26:30 ]
>>615
できました!ありがとうございます!






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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