- 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/
- 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()があればどれだけ楽か……
|

|