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/
2 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 18:34:35 ] 2
3 名前:デフォルトの名無しさん mailto:sage [2006/11/30(木) 14:26:39 ] 1乙
4 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 16:51:44 ] 乙ついでに質問です。 ツールチップを表示するため、CToolTipCtrlのメンバ変数を定義し、 OnInitialUpdate()内でCreate()、Activate(TRUE)、AddTool()を実行しています。 ツールチップを貼り付けたコントロール内でカーソルを移動する際に、即ツールチップを 非表示にしたいのですが、表示されたツールチップ上を通過したときのみ即消えし、それ 以外ではしばらく時間がたたないと消えてくれません。 ツールチップ表示後、マウスカーソルが移動を開始したらすぐにツールチップを消すように するにはどうしたらよいのでしょうか?
5 名前:デフォルトの名無しさん [2006/12/07(木) 02:51:32 ] すいません。 >調べもの専用Googleブラウザを作ってみよう >www.atmarkit.co.jp/fwcr/special/custom_browser/01.html っていうのを僕もやってみたいのですが、 Microsoft Platform SDK のインストールは、 全部のコンポーネントをインストールしないといけないのでしょうか? 低速回線なので必要なコンポーネントだけダウンしたいんです。 最小構成でも数百MBになってしまうのでしょうか?
6 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 13:15:41 ] >>5 Webインストール版だと必要なものだけダウンロードできる。 それをやるにはたぶんCore SDKとIEのやつくらいがあれば十分だと思う。 足りなかったらその分だけをまたダウンロードしろ。 でも、Core SDKだけで100MiBは軽く越えると思う。 人の家かどこか高速回線でCDイメージを落として、CDに焼いてきたほうが早いと思う。
7 名前:デフォルトの名無しさん [2006/12/08(金) 06:44:48 ] >>6 ありがとうございます。 サイズ的に厳しそうなので人に頼むことにしました。。
8 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 09:08:20 ] まずは簡単な数字あてゲームを作りたいので無料の開発環境の作り方を知りたい・・・ 結論として2Dのゲームまで(ゼルダ・ドルアーガ・ワルキューレ)できるような言語はVC++が良いと聞きました。 初心者質問 @ VC++2005エクスプレス エディションをインストールしたのだが どうやって作ればいいのかわからない(手順のサイトあればよろ) A ボーランドのC++ でも作り方をしりたい(手順のサイトあればよろ) B もしあれば他の良いC++の無料をダウンードしたいのですが・・・(VC++の無料版って他にあるのか・・・) ↑C++にはこだわらない(HSP、VB以外で・・・っていうか ないですよね^^) 一応JavaScript で簡単なやつを作った。 1と2は自分PCにインストールプログラムはある。一度インストールはしたが、そこでどうしたらいいのか? まとめとして Bだけ聞きたいです。
9 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 10:19:17 ] 不特定のダイアログが、現在 DoModal で表示されているかどうかを 判定する方法はありますか? やりたいことは、ダイアログが DoModal で表示されている最中に、 メインフレームに飛んでくるメッセージ(他プロセスから飛んでくる)に 対して、反応しないようにしたいのです。 ダイアログ表示前後にフラグ立てをしてやればいいんでしょうが、 今後、ダイアログ表示が増えたとき、そのルールを徹底するのが面倒なので、 不特定のダイアログが DoModal されているという状況が判定できないか と考えています。
10 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 11:01:07 ] >>9 IsWindowEnabled
11 名前:9 mailto:sage [2006/12/08(金) 15:00:33 ] >>10 ありがとうございました。できました。
12 名前:デフォルトの名無しさん [2006/12/08(金) 21:58:55 ] Visual C++を始めたばかりのものです。いきなり以下の課題を上司から指示 されました。”ダイアログボックスを表示し て、リストボックスをその中に2つ作り、片方のリストボックスに複数の 文字列を初期状態で挿入されている状態にします。この文字列の1つを選択 してボタンを押すともう片方のリストボックスに移動するようなダイアログ ボックスを作るようにしなさい。”というものです。当方Javaを3ヶ月ほど やった経験があるのでオブジェクト指向は大体わかるのですがC++や VisualC++はまったく初めてです。参考になるお薦めの本がありましたら どうか教えてください。よろしくお願いします。
13 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 22:50:05 ] VCのバージョンは? 新規作成のプロジェクトからMFCのダイアログベースでアプリケーション できた? あとはダイアログにボタン1つリストボックス2つ貼り付け 変数を割り当ててふにふにする。
14 名前:12 [2006/12/09(土) 08:46:43 ] VCのバージョンは6.0です。MFCのダイアログベースでアプリケーション できました。ボタン1つリストボックス2つの貼り付けもできました。 変数を割り当てるところがわかりません。良い本などあったらおしえて ください。よろしくお願いします。
15 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 09:16:42 ] DDX/DDVでgrep メンバ変数じゃなくて一時的にリストボックスの インスタンスへのポインタが取れればいいのなら CDialog::GetDlgItem() を使えばいい 凡例: CXXDlg::OnInitDialog() { ・・・ CListBox* pListBox = (CListBox*)this->GetDlgItem(IDC_LISTBOX); ・・・ } 良い本は俺も知らん
16 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 13:17:00 ] >ボタンを押す ボタンを右クリックしてイベントハンドラの追加 あとはMSDNかヘルプのCListBoxの項目。 VC6は操作がちがうかも。 >良い本 VCとかMFCの本買ったことない。MSDN使って覚えた。
17 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 23:16:03 ] VC++2005EEで、メニューを作ることはできないのでしょうか。 .netのフォームではありません。
18 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 00:56:15 ] できます。
19 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 03:33:29 ] では、その手順を簡単に教えてください。
20 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 09:39:07 ] CreateMenuして、 AppendMenuする。
21 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 10:23:11 ] >>20 それはできますけど 聞きたかったのはリソース作るやつです。 できないっていうことっすか。 フリーソフトとか使ってます^^;
22 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 12:59:42 ] 自分でリソーススクリプト書けば良いやん。
23 名前:ななし [2006/12/14(木) 13:13:21 ] あの〜質問なんですが・・・VC++でビットマップを表示させたいのですがインポートしても ビットマップは256色以上含んでいるため表示できませんとでるのですがどうしたらいいのですか??
24 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 09:47:20 ] 初めてソフトを作ってみたのですが、バージョン情報に入れるURLの一つが何故かハイパーリンクになりません どなたかヒントを教えていただけませんか? ↓のhoghog.hog/ がそうです。 //ここから hoger のバージョン情報 hoger ver 0.1 Copyright (C) 名無しさん 2007 All Rights Reserved. Web Site :nanashi.hog/ Web Site :hoghog.hog/ //ここまで 使用しているCONTROLは、STATIC, SS_LEFT SS_NOTIFY WS_CHILD WS_VISIBLE WS_GROUPです。 よろしくお願いします。
25 名前:デフォルトの名無しさん [2006/12/25(月) 22:15:25 ] ほしゅあげ
26 名前:デフォルトの名無しさん [2006/12/26(火) 01:34:59 ] 一般的に関数の戻り値にローカル値を指定するのはダメですが、 以下のような定数文字列もダメなんでしょうか? 試しに実行したらうまくいったのですが… std::string func() { return "hoge" }
27 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 05:14:17 ] どうみても戻り値はstd::stringです。 本当にありがとうございました。
28 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 07:49:02 ] >>26 戻り値の型が一般型ならば何の問題もない。 問題は、ローカルなオブジェクトをポイントするポインタを返すことだ。 定数はローカルオブジェクトではないから、それを返すことは問題ないし、 まして別の型に変換してしまえば問題になるわけがない。 // 1行目の例 int func() {return 0;} // 2行目の例 char * func() {char foo[] = "FOO"; return foo;} // 3行目の例 const char * func() {return "BAR";} // 4行目の例 std::string func() {return "hoge";}
29 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 09:53:47 ] 別の型に変換するという場合をもっと一般的に言えば、 ローカルなオブジェクトそのものを返すのは問題ないという感じか。
30 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 11:32:52 ] 呼び出した側が自分のローカルな変数にコピーしてるべ int n; n = f(x); ってやったらf(x)の戻り値を自分のローカル変数に入れてるやん
31 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 01:11:48 ] >>30 それで?
32 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 09:51:41 ] つまりアクセスするのは自分のローカルだから何の心配も要らない
33 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 10:14:55 ] >>32 だから?
34 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 10:20:43 ] だから>>29 のは間違い
35 名前:デフォルトの名無しさん [2006/12/28(木) 10:21:34 ] >>31 =>>33 のような低脳はほっとけ
36 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 10:42:31 ] >29が何を言いたいのかもよく判らないが、>30に至っては一体全体何を言いたいのやら。 まして>29が間違いだという>34は何を考えているのかさえ判らない。 結局のところ、>26の疑問は>28で答えられているので>29以降の流れはノイズということで宜しいか。
37 名前:デフォルトの名無しさん [2006/12/28(木) 10:48:08 ] リストボックスにセル範囲を調節できる、|が入ったタイトルバーを 付けたいのですがどうやったらよいかわかりません。どなたか ご存知の方教えてください。よろしくお願いします。
38 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 15:06:15 ] つ[ListView(ListCtrl)]
39 名前:デフォルトの名無しさん [2006/12/30(土) 21:13:44 ] 混合モードって一体どうやったら表示出来るんですか。 プロパティで設定しても全く変化がないです。 そもそもドコに表示されるんですか?
40 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:36:20 ] デバッグ中
41 名前:デフォルトの名無しさん [2006/12/30(土) 22:41:53 ] VC++6.0でプログラムを始めたものです プログラムの設定をiniファイルで管理しようと思っているんですが iniに0xを記述しなくても16進数のデータを読み込む方法は無いでしょうか? 現在は数値読み込みを使って test=0xFFFFFF のようにして読み込んでいるのですが、他のプログラムのiniで test=FFFFFF の形で読み込んでいるものがあり、方法を調べたんですが見つからなかったので質問しました ご存知の方、是非教えてください。お願いします。
42 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:47:00 ] >>41 GetPrivateProfileString()して、strtol()かstrtoul()でもできる。
43 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:48:02 ] >>41 またお前か おなじこと何回も聞くな
44 名前:41 [2006/12/30(土) 22:50:45 ] >>42 レス有難う御座います その方法でやってみます
45 名前:41 [2006/12/30(土) 22:55:15 ] >>43 このスレで発言したのは初めてだったんですが、過去に同じ質問をした方がいたようで申し訳ないです。 最低限過去ログは読むべきでした。 今後は過去ログを読んだ上で質問させていただきたいと思います。 連レスすみませんでした
46 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:55:20 ] pc10.2ch.net/test/read.cgi/tech/1166172047/216
47 名前:39 [2006/12/30(土) 23:06:51 ] >>40 デバッグ中に、"逆アセンブル"ウインドウを表示する事は出来るのですが、 混合モードについてはは影も形もありません。 何か特別な設定が必要なのでしょうか
48 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 17:44:27 ] >>47 ブレーク中にも表示されないの?
49 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 13:13:10 ] debugモードでビルドしたか
50 名前:デフォルトの名無しさん [2007/01/05(金) 14:54:42 ] VC++ 2005で以下のDLL作成を考えています。 1.C言語で作成されたDLL関数を読み込む 2.関数を別名称にしDLL化する。 3.vb.netで作成したDLLを使用する。 1、2を実現するため以下のソースを記載したのですが 構文的におかしくないでしょうか?
51 名前:50 [2007/01/05(金) 14:55:19 ] #include "stdafx.h" #include <stdio.h> #include "api.h" #ifdef _MANAGED #pragma managed(push, off) #endif BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } #pragma comment(lib,"api.lib") extern "C" __declspec(dllimport) BOOL __stdcall APIOPEN(LPTSTR lpHostName ,LPTSTR lpNetmserviceName); __declspec(dllexport) BOOL CAPIOPEN(LPTSTR host,LPTSTR netmservice) { BOOL r = APIOPEN(host,netmservice); return r; } #ifdef _MANAGED #pragma managed(pop) #endif
52 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 15:11:50 ] 構文チェックはコンパイラの仕事
53 名前:50 [2007/01/05(金) 16:03:49 ] >52 失礼しました。 ビルドを実行するとCVTRES の致命的なエラー CVT1100 が発生しました。 MSDNで検索すると/TLBID オプションを変更するとなっているのですが 変更しても同様のエラーが発生します。
54 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 02:19:52 ] プロパティにカテゴリをつけたい場合 IDLファイルにどう書けばいいの?
55 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 02:42:40 ] ICategorizePropertiesを自力実装
56 名前:デフォルトの名無しさん [2007/01/10(水) 11:27:08 ] Win32APIをいぢってプログラムを作ってるんですが、 エディットボックスで日本語入力がうまく行えません。 ウィンドウプロシージャでWM_CREATEのメッセージ処理に、 //ctrls.chatBar⇒HWND //cs⇒LPCREATESTRUCT ctrls.chatBar = CreateWindow(TEXT("EDIT"),TEXT(""), WS_CHILD | WS_VISIBLE, 0,425,531,20, hWnd, (HMENU)CHAT_BAR, cs->hInstance, NULL ); と書いてエディットボックスを貼り付けてます。 日本語を入力する際、何か他に書かないことはあるのでしょうか
57 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 11:34:53 ] フォント
58 名前:デフォルトの名無しさん [2007/01/10(水) 12:02:26 ] HFONT hFont; hFont = CreateFont(20, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, "MS Pゴシック"); SendMessage(ctrls.chatBar, WM_SETFONT, (WPARAM)hFont1, MAKELPARAM(FALSE, 0)); で、フォントを変えてみましたが何もかわりませんでした
59 名前:デフォルトの名無しさん [2007/01/10(水) 15:14:12 ] A,B,Cと3つのボタンを配置し、Aのclick処理を行っている最中にBとCのボタンを先行してclickすると、 Aの処理が終了後B->Cと処理が続きますが、 このBとCの先行入力分のclickイベントを破棄して、無かった事にする方法ってありますか? B,Cがclickされていても、Aの処理終了後は何もしない仕組みが作りたいのですが... VS.NET 2003
60 名前:デフォルトの名無しさん [2007/01/10(水) 15:21:55 BE:15528724-2BP(202)] Aの処理のアタマでBとCをdisable。
61 名前:名無しさん mailto:sage [2007/01/11(木) 18:56:37 ] 終了した後にもう一度繰り返し動作させたいのですが、 exit(0);のように簡単に終了させつつ、 繰り返し最初からやり直すコマンドみたいなものはないんでしょうか? 初心者のまま卒業した先輩のプログラムをいじることになったのですが、 クラスやヘッダなど分からないままやらされてます。 どうもバグがあるらしく、先輩のプログラムは終了しないプログラムでした。 (本当は作業が終わったら終了しなくてはならないプログラムです) return;を使ってもどこに返して居るか分かりません。 main文に無理やり戻して次の関数を続行などできたらベストなのですが・・・
62 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 19:39:16 ] 無理やり戻したところで、続きを正常に実行できる保障がどこにある。
63 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 19:56:59 BE:19410825-2BP(202)] >>61 >main文に無理やり戻して次の関数を続行などできたらベストなのですが・・・ それは別のバグを仕込むだけの愚行。 まず規定の処理で正しく終了するようにしれ。
64 名前:デフォルトの名無しさん [2007/01/17(水) 14:29:56 ] 助けてください Visual C++ 2005 Express Editionを昨日インストールした本当の超初心者なのですが インストールはしっかりできたのですが、新しいプロジェクトを開いても、何の反応 もしない新しいプロジェクトとかかれたものしか出てきません。どうしたらよろしいですか? 教えてください、お願いします
65 名前:デフォルトの名無しさん [2007/01/17(水) 16:20:02 ] MAME32をジョイスティックで動かすことをしたいのですが keybd_eventをつかっても動きません メモ帳で試してみたら、動きました 何か他の方法があるのでしょうか
66 名前:名無しさん mailto:sage [2007/01/17(水) 16:24:50 ] >>62 続きはありません。 メインじゃないプログラムで「この文章を読み込んだら終了」 ってことになってるんですが、終了させる方法が分かりません。 プログラムが少しできる人に付き添って貰ってreturn;ってのを付けて行ったんですが だめでした。 >>63 初期化の関数が別にあります。 return;を付けていってもダメなのでmain文に何とか戻す方法は無いか困ってます
67 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 18:07:07 ] >>66 Cを知らないのにソースをいじろうってのが根本的に間違ってます。
68 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 18:25:00 ] >>66 ソースうpすれば訂正してあげるよ
69 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 18:58:39 ] まあ試しにsetjmp/longjmpを試すのも面白いかもw
70 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 19:01:45 ] >>64 意味がわからん、新規作成じゃだめなのか
71 名前:名無しさん mailto:sage [2007/01/17(水) 19:01:58 ] >>67 Cは約半年程授業で習ったのですが、C++は初めて触るような感じです 素人に毛が生えた程度なので超初心者用とタイトルのあるここに書き込みしました >>68 このプログラム自体は卒業した先輩の卒論ですので、 アップロードのような行為はできないです サイズとしても26.2Mあります。 このプログラムを使って工場のようなものを擬似的に再現して実験するのですが 実験後、待ち状態のまま終了しないことが分かり弄らされてます。
72 名前:デフォルトの名無しさん [2007/01/17(水) 19:09:16 ] #include <iostream> using namespace std; int main(void) { unsigned char x,y; cout << "2つの値を入力してください。\n"; cin >> x >> y; x -= '0'; y -= '0'; int a = x + y; int b = x * y; printf("x = %d, y = %d, x + y = %d, x * y = %d",x,y,a,b); return 0; } これで出力したら10以上の数値が出ないんですが、 どうしたら出るようになるか教えてください。
73 名前:デフォルトの名無しさん [2007/01/17(水) 19:26:55 ] >>70 様 新規作成したあと新しいプロジェクトとでて、どのボタン押してもフーリズ したままです
74 名前:デフォルトの名無しさん [2007/01/17(水) 20:11:04 ] Visual Studio 2005でC++のMFCでダイアログベースのアプリを作っているのですが、 C○○DlgクラスのメソッドでgetParent()を使うとNULLが返ってきます。 getWindow(GW_OWNER)も試しましたがNULLが返ってきました。 どんな原因が考えられますか? やりたい事はCProgressCtrl::Create()なのですが、これの引数に親ウィンドウのポインタが必要になります。 アプリ内で子ウィンドウを立ち上げる事はしていないのですが、 この場合親ウィンドウが無いのでそのせいでしょうか?
75 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:03:36 ] >>74 そりゃCreateしないとウィンドウは存在しないべ
76 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:08:25 ] >>73 新しいプロジェクトってどこにでるの? 通常は、ファイル-新規作成-プロジェクトでWin32を選べば Win32コンソールアプリケーションが出ると思うけど。
77 名前:73 [2007/01/17(水) 21:31:09 ] >>76様 ありがとうございます Win32っていう選択肢もでてこないんです。ファイルに新規作成という言葉がなくて 類似する言葉は新しいプロジェクトぐらいしかありません。その新しいプロジェクト のなかにはテンプレート、プロジェクトという項目があります。 お手数おかけしますが、どうぞおねがいします
78 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:31:22 ] >>74 親ってCProgressCtrlの親だから、DlgからCreateするならthisポインタでOK
79 名前:74 mailto:sage [2007/01/17(水) 21:32:29 ] >>78 thisポインタも試したのですが、 ビルドは通ってもランタイムに不正落ちします。 どんな原因が考えられるでしょうか?
80 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:33:47 ] コード見ないと分からない。
81 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:34:15 ] >>79 どこでCreateしてるのだ ダイアログのOnCreate以降じゃないとだめだぜ?
82 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:36:51 ] >>77 デフォルトのテンプレートがインストールできてないのかな? インストールしなおしてみては
83 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:41:53 ] Express EditionってなんかファイルをいじらないとWin32のプロジェクトが出てこないとか言うことはなかったっけ?
84 名前:73 [2007/01/17(水) 21:46:21 ] >>82 様 ありがとうございます。やってみます。
85 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 22:51:09 ] 久々にVC++インスコしてみたら書式が変わってるんですがこれはいったい何事ですか? なんかすべての処理がヘッダファイルに書かれていてcppの方はヘッタファイルのインクルードしかないんですけど・・・ マネージコード、アンマネージコードとかいうヤツのせい? それとも.NETとかいうヤツから変わったの?
86 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 23:01:09 ] >>83 MSのサイトにそういうのあったようなきがす。 PlatformSDKあたりに。
87 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 23:21:53 ] >>85 ウィザードの種類によっては、cppファイルの生成とかいうオプションがあったと思うよ。
88 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 02:54:45 ] >>87 だから、それで生成したcppファイルが・・
89 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 03:08:11 ] よーわからん、クラスのプロパティ出してメッセージ選ぶとハンドラが作成される。 ってそういう話でまくて?
90 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 06:36:05 ] どーせVC++がVC#っぽくなってるってことだろう
91 名前:73 [2007/01/18(木) 17:11:06 ] たびたびすいません、>>82 様のいうとおりやったのですが、document and settingなどと書かれたものが 有効な win32アプリケーションではありませんとでました。 どうしたらよろしいですか?市販のVisual C++ 2005 Express Editionを買えば できるでしょうか?
92 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 19:39:13 ] >>91 ログ読まずにいきなり回答してみる こういうことで合ってる? ttp://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
93 名前:73 [2007/01/19(金) 12:57:22 ] >>92 様どんレスですいません、ありがとうございます やってみます
94 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:02:17 ] エディットボックスに入力した日本語を、ボタンを押すとtestという 関数に取り込みたいのですが下のようにしてみたんですがうまくいきません。 どのように変更すれば取り込めるのか教えていただけないでしょうか? よろしくお願いします。 char ss; m_edit.GetWindowText(ss); void test(char *ss) { while(*ss != '\0'){ ・・・・処理・・・ ss++; } }
95 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:21:15 ] 何がどううまくいかないのか説明しろ。話はそれからだ。
96 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:45:46 BE:23292162-2BP(222)] >char ss; >m_edit.GetWindowText(ss); コンパイル通らん。
97 名前:94 mailto:sage [2007/01/19(金) 16:38:11 ] すいませんchar ss;じゃなくて、CString ss;でした。 エディットボックスにコントロール変数m_editをつくって、 ssに取り込んで、そのデータをtestにとりこんで処理をしたいと考えています。 *ssでよめるようにするには、エディットボックスからどのようにとればいいの かわかりません。よろしくお願いします。
98 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:59:42 ] void test(LPCTSTR ss)で受け取る
99 名前:デフォルトの名無しさん [2007/01/20(土) 16:26:02 ] MFCのダイアログベースのプログラムからスレッドを生成した場合、 生成した子スレッドに対してダイアログの方は親スレッドと考えて良いのでしょうか? つまりスレッドの識別子などがあるのでしょうか?
100 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 19:58:56 ] スレッド間に親子関係は無い。 ライブラリの初期化・終了処理を考慮しなければ、全て同等。 スレッドの識別子は両方にある。
101 名前:デフォルトの名無しさん [2007/01/20(土) 21:38:38 ] ifの条件が増えたとき、下のどちらの記載が望ましいのでしょうか? if ( (条件1)&&(条件2)&&(条件3)&&(条件4)&&(条件5)&&(条件6) ){ ; } if ( (条件1)&&(条件2) ){ if ( (条件3)&&(条件4) ){ if ( (条件5)&&(条件6) ){ ; } } }
102 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 21:45:22 ] >>101 スレ違い
103 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 21:51:11 ] >>101 関数化しろ
104 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 23:24:15 ] >>101 どっちでもいいけど自分なら前者で書くかな。 条件部分が長すぎて画面からはみ出るなら適度に改行したり。 if((条件1)&&(条件2)&& (条件3)&&(条件4)&& (条件5)&&(条件6)){ ; }
105 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 17:55:25 ] >>100 返信ありがとうございます。 では、生成されたスレッドからダイアログの方へメッセージを投げたい場合は どうすればいいのでしょうか? スレッドを生成する際に引数としてダイアログのスレッドIDを渡す、など必要になるのでしょうか?
106 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 19:48:13 ] ダイアログなんだからウィンドウハンドルでも渡しておけばいいのでは?
107 名前:101 mailto:sage [2007/01/21(日) 20:41:18 ] >>103-104 トンクス ifを分割すれば余分な条件を弾けて得かなって思ったので質問しました。 クラス内で関数化するのが一般的かもしれませんが、 if() の括弧の中を全て#defineに入れてみようと思います。
108 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 21:25:49 ] スレ違い
109 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:24:17 ] 実行ファイルにjpgなどを格納することはできますか? 使用しているのはVC++.net2003です。
110 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:34:54 ] >>107 >103
111 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:36:46 ] >>109 できます。この板のどこかのスレでそんな話題を見かけました。
112 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:36:56 ] fgets や std::getline を使わずにテキストファイルからデータを一行ずつ読み込みたいのですが、 ReadFile で改行文字か EOF が来るまで1バイトずつ読み込んでバッファに取り込むという方法しか 思いつきません。もっといい方法ってありますか? ReadFile でファイルを全部読み込んでから、一行毎に分解するという方法は出来れば避けたいです。 扱いたいのは200万行以上あるファイルです。 いまだにVC6
113 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:54:39 ] >もっといい方法ってありますか? あなたにとって、どういうものが良いものなのか説明してください。
114 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:11:46 ] >>112 素直にfgets()やstd::getline()を使うことにするのが、「もっといい方法」だと思います。
115 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:34:12 ] ならメモリマップトファイルはどうだ。
116 名前:112 mailto:sage [2007/01/22(月) 19:16:40 ] 回答ありがとうございます。 >>113-114 std::getline() でやってたのですが、処理に時間が掛かるのでどうにかならないかなと思いました。 根拠はありませんが、 API で同様の機能が提供されていればもっと効率よく出来そうだとも思ったのですが どうやら無さそうですね。 素直に std::getline() のままで処理内容を見直すことにします。 >>115 CreateFileMapping() とMapViewOfFile() でファイルをメモリ空間にマップできるんですね。 これはこれで面白そうなので別件で試してみようと思います。
117 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:41:58 ] 全部読む必要があれば結局同じことだけどな
118 名前:名無しさん(66) mailto:sage [2007/01/22(月) 21:27:44 ] 待ち状態のまま終わらないプログラムの int nRet = WaitForMultipleObjects(NUM_OF_THREADS, hThread, TRUE, INFINITE); このWaitForMultipleObjectsを終了させるか、 INFINITEYのまま何かを読み込んだらタイムアウト、 のような動作はできるものなのでしょうか? >>69 さんのsetjmp/longjmpを使ってみたのですが、 WaitForMultipleObjectsの後ろにジャンプすると、何故か ジャンプした後にプログラムが勝手に終了してしまいます。
119 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:38:05 ] WaitForMultipleObjectsExとQueueUserAPCという手がなくはないが、 なんかお前がいきあたりばったりで使いそうで嫌だ。
120 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:52:50 ] >>118 スレッドのいずれかが終了すればWaitFor....から制御が返る。 戻り値から終了したスレッドを特定できるので、それ以外のスレッドを終了させればOK。 66でreturnしても駄目だったと書いてるけど、何が駄目だったのか不明。
121 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:55:27 ] あ、第3パラメタTRUEか。120じゃだめです。
122 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:57:12 ] FALSEにして120すれば良い気もする
123 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:25:46 ] でも結局>>67 なんだよな……。
124 名前:デフォルトの名無しさん [2007/01/23(火) 01:05:12 ] Visual C++ 2005 Expressエディションでまずは Hello Worldからと思い 新規プロジェクトでCLRコンソールアプリケーションを選びました。 そうしたら、もうビルドするだけになってるんですね。 まぁこれはいいんですが、このときこんな感じで自動生成されたんですが、 -- #include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { Console::WriteLine(L"Hello World"); return 0; } -- ここで int main(array<System::String ^> ^args) の部分の意味がさっぱりわかりません。 多分引数を受け取る?配列?な気がしますが、良く分かりません。 C言語でやったように int main( int argc , char *argv[] ) パラメタを処理できることが出来るのは判ったのですが、やっぱり int main(array<System::String ^> ^args) の意味と具体的なパラメタの処理方法が知りたいです。 よろしくお願いします。
125 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 01:28:37 ] >>124 くだすれC++/CLI(初心者用) pc10.2ch.net/test/read.cgi/tech/1142144110/l50 普通のがよければWin32コンソールアプリを選べ
126 名前:デフォルトの名無しさん [2007/01/23(火) 01:37:22 ] >>125 Visual Studio にインストールされたテンプレートってのが表示されて その中に Win32コンソールアプリってのはありません あるのは クラスライブラリ CLRコンソールアプリケーション 空のCLRプロジェクト Windowsフォームアプリケーション の4つだけです。 それと知りたいのは、 int main(array<System::String ^> ^args) の意味するところです。 できれば解説願えませんでしょうか? あっ、くだすれC++/CLI(初心者用)で聞くべき質問ってことですか? すみません、良く分かってなくて。
127 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 01:47:31 ] MSDN読めよ、糞が。 とか言いたくなっちゃうから、きちんとマニュアルは読もうな。 C++/CLIで探せばすぐ判るから。
128 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 09:13:59 ] MSは初心者にはC#やVBを推奨してるから VCは使いにくい面があるかもしれない。 特に目的が決まってないならC#やVBをお勧めする。
129 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 09:33:31 ] PlatformSDK入れてMSDNの該当ページ(>>92 )に従え
130 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 21:23:48 ] >>126 そりゃ左でCLRを選んでるからだろ Win32選んでみな
131 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 15:29:36 ] Visual C++だとstring型のハンドルがありますが、 C++のstringは使えないでしょうか? Visual C++はC++の拡張と聞きましたが、C++が分かっていても、 Visual C++はほとんど一から型とかライブラリの使い方を勉強する必要が あるのでしょうか?
132 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 22:08:59 ] 使いたければ使えばいい。
133 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 23:02:30 ] 組み込み型じゃないからな
134 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 02:00:37 ] VC++.NET2002で質問です。 MFCアプリケーション上でダイアログボックスを作って、 DoModal()でモーダルダイアログボックスを表示してます。 ところが、そのダイアログボックスのOnInitDialog()内で メッセージボックスAfxMessageBox( "HogeHoge");を表示すると OKで閉じた後、なぜかモードレスダイアログになってしまいます。 (ダイアログ表示中でも親ウィンドウが操作できてしまう。) これってこういう仕様なのでしょうか?
135 名前:質問者A mailto:sage [2007/01/25(木) 09:21:22 ] Visual Studio C++ Express Edition使っています。 初めてwindowsプログラムします。 猫でもわかるプログラミングのWindowsSDK編第1部の イントロダクションのsample01.cppをビルドしたんですが、 エラーが出てしまいます。 ★プロジェクトの作成方法 [ファイル]-[新規作成]-[プロジェクト] [新しいプロジェクト]ダイアログで [プロジェクトの種類]→Win32 [テンプレート]→Win32コンソールアプリケーション と選択して、 プロジェクト名(lesson)を入力して [OK]をクリック。 [Win32アプリケーションウィザード] で、 [アプリケーションの種類]→Windowsアプリケーションにチェック [追加オプション] で、 [空のプロジェクト]→チェックせず(デフォルト) [プリコンパイル済みヘッダー]→チェック(デフォルト) で、[完了]ボタンを押しました。
136 名前:質問者A mailto:sage [2007/01/25(木) 09:21:54 ] あらかじめ用意された↓をビルドすると正常終了します。 //lesson.cpp #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { return 0; }
137 名前:質問者A mailto:sage [2007/01/25(木) 09:22:33 ] ★プログラムの変更 これを猫でもわかるに変えたいんですけど、 関数名が@とAで違うので、 Aの関数名だけ@の名前(_tmain)に変えて 実行しました。 @↑ int _tmain(int argc, _TCHAR* argv[]) A猫でもわかるのサンプル int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow)
138 名前:質問者A mailto:sage [2007/01/25(木) 09:24:23 ] すると、↓のようなエラーが出てしまいました。 ★エラー内容 lesson.cpp d:\lesson\lesson\lesson.cpp(24) : error C2440: '=' : 'HGDIOBJ' から 'HBRUSH' に変換できません。 'void*' から非 'void' 型への変換には明示的なキャストが必要です。 d:\lesson\lesson\lesson.cpp(26) : error C2440: '=' : 'char [25]' から 'LPCWSTR' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 d:\lesson\lesson\lesson.cpp(40) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [25]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 d:\lesson\lesson\lesson.cpp(47) : warning C4244: 'return' : 'WPARAM' から 'int' への変換です。データが失われる可能性があります。 ビルドログは "file://d:\lesson\lesson\Debug\BuildLog.htm" に保存されました。 lesson - エラー 3、警告 1 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== プロジェクトの作成の仕方が悪いのでしょうか? 教えてください。
139 名前:質問者A mailto:sage [2007/01/25(木) 09:27:11 ] 変更後のプログラムです。(長いので分割して書きます。すみません) #include "stdafx.h" #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); char szClassNme[] = "ウィンドウクラス・ネーム";
140 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 09:51:35 ] www.kumei.ne.jp/c_lang/ ここの2005と書いてある部分を参照
141 名前:質問者A: mailto:sage [2007/01/25(木) 10:09:30 ] (「連続投稿です」と言われて書き込みが途中で止まっていました) >>140 ありがとうございます。気付きませんでした。 [VS2005の設定方法]見ました。 >次に、Win32APIを利用したWindowsアプリケーションの設定です。 >「新しいプロジェクト」では、プロジェクトの種類を「Visual C++」、テンプレートを「Win32 プロジェクト」にします。 私の環境だと「Win32 プロジェクト」がありません。 「Win32コンソールアプリケーション 」のみです。 (これってVC++2005のExpressだと無理ということでしょうか?) とりあえず「Win32コンソールアプリケーション 」として 残りはサイトに書かれている通り、 「アプリケーションウィザード」で、 アプリケーションの種類を「Windowsアプリケーション」 追加のオプションを「空のプロジェクト」 にしました。 しかし、>>138 と同じエラーがでてしまいました。
142 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 10:58:36 ] >>141 プロジェクトのプロパティの「全般」に文字コードの指定があるからMBCSに変更。 24行と47行のは明示的にキャストしとけ。 にしても、初心者が見る箇所に Win16を引き摺ってるようなコードを放置してあるのは良くないな。
143 名前:質問者A: mailto:sage [2007/01/25(木) 11:19:00 ] >>142 >プロジェクトのプロパティの「全般」に文字コードの指定があるからMBCSに変更。 できました!ありがとうございます。
144 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 13:28:52 ] OS:WindowsXP SP2 環境:VS2005 MFC使用 教えていただきたいことがあります イミディエイトウィンドウにメモリリーク時の情報が表示されますが、発生したファイル名 を表示したいのですがどのようにしたらよいのでしょうか? MFCでは標準でDEBUG_NEWが定義されており、これでファイル名も表示されるという情報を ネットでよく見かけるのです。この情報に間違いがなければデフォルトで表示されるはずなのですが・・。 今のアウトプットウィンドウの表示 Detected memory leaks! Dumping objects -> {15027} normal block at 0x01322E30, 346 bytes long. Data: <5 9 9 9 E Q> 35 00 39 00 39 00 39 00 00 00 45 00 00 00 E6 51 Object dump complete. おそらくこうなるであろうファイル名付属のアウトプットウィンドウの表示 Dumping objects -> C:\MyProjects\TestProt\Test.cpp(17) : {16} normal block at 0x00780EC0, 4 bytes long. Data: < > CD CD CD CD Object dump complete. よろしくお願いいたします。
145 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 13:49:44 ] その質問に答えようと思ったら 適当なプロジェクト作ってわざとメモリリークさせて結果を見てみるだけだから 自分でやってみればいい
146 名前:144 mailto:sage [2007/01/25(木) 14:04:43 ] >>145 ためしに新規のプロジェクトを作成し、ってわざとメモリリークさせてみたところ、 ファイル名が表示されていました。 DLL参照したり、ソースファイルとプロジェクトのディレクトリを別々にしたりしてるんで それが原因なのでしょうか?
147 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 17:13:19 ] >>135 猫でもわかるなら、VS2005サンプルプログラムのところも見てみろよ。
148 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 21:16:50 ] >>147 は死ね このスレは「くだすれVisual C++(超初心者用)その4」だぞ 馬鹿か貴様
149 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 21:18:56 ] >>135 そのコードのURL書いてみて
150 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 21:32:31 ] 超初心者には147程度の記述では不親切だったか?
151 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 02:40:35 ] 135の件は142の答えで解決済み。
152 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 11:15:33 ] Visualstudio.NET2003使ってる者ですが プロジェクトを作って 新しい項目の追加を選択して a.cとか適当名前いれて ソースファイルに何も書き込まずに デバッグ無しで開始を選択すると エラーが発生して デバッグを開始出来ません 指定されたファイルが見つかりませんのウインドウと error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 _WinMainCRTStartup で参照されました。 fatal error LNK1120: 外部参照 1 が未解決です。 とでます。 どうしたらよいのでしょうか・・ さっぱり見当が付かないんですが。
153 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 11:33:04 ] main(wmain/_tmain)関数から始まるプログラムを書きたければ、Win32コンソールプロジェクトを作れ。 そうでなければWinMain(wWinMain/_tWinMain)関数を書け。
154 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 11:55:53 ] プログラム以前のレベルですが2点教えてください。 10年近く前までC(++ではない)やってた者ですが、 突然ゲーム作りがしたくなりまして 一から勉強し直しのつもりでVisual C++を買おうと思ってるんです。 でも何を買ったらいいのかさっぱり判りません! 1.VC++.NET2003ってStandard版しかないのですか? Professionalとか、上位版が出ていたりするのですか? 2.VC++.NET2003って今でも店頭で入手できるんでしょうか? 2005を買ってダウングレード、みたいな方法もできるのですか? その場合には2005のどれを買えばいいのですか? とりあえずDirectX関連の本を買って読んでるんですが その本がC++.NET2003までしか対応していないのです。 ↓漏れが買った本 ttp://www.kohgakusha.co.jp/books/detail/978-4-7775-1043-6
155 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 13:06:33 ] >>154 2003を買う必要は全くありません。 2055EEを入手するか、それで飽き足らなければ2005PRO辺りを買えば宜しいかと。
156 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 13:13:21 ] 2005EEはフリーだよ
157 名前:154 mailto:sage [2007/01/28(日) 15:31:30 ] >>155-156 ありがとう あえて2003を買おうとしているのには訳があって この本にソースとかプロジェクトファイル?が収録した CD-ROMが付属してあるわけですが、 2003用のファイルを2005の環境で開いたら、 何かと細かいエラーとか警告とか、いろいろ出てきそうな 気がするんです。(問題ない?) いちばん恐れているのは、2005の環境で変なエラーがいっぱい出て、 それを直すためにコンパイラの設定とかソースの修正とか いろいろ見直してるうちに結局ワケわかんなくなっちゃって、 しかもそれでもなお直らず、本当に勉強したい部分にまったく 触れられないまま、挫折してしまうことです。 ・・・すいません、実はVC6の頃に一度これで挫折してるんですorz とりあえず2003の環境なら、あまり深く考えずに 本に書いてある通り操作したら、一通りサンプルもうまく動いて 勉強に専念できそう、と考えたんです。 本読んでて、昔と今じゃあ技術が全然違う事だけはよくわかったので、 初心に帰ってがんばろうと思ってます 長文スマソ
158 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 16:35:56 ] 10年近く前までCをやっていたと言い張る人間にしては、随分と情けない話だ。
159 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 16:55:02 ] 古本屋で買って来たVC1の本でもほとんど同じだったよ 昔の方が機能が少なくてわかりやすいという点もあるけど
160 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 02:32:23 ] 途中で挫折するのは基本ができてないくせに応用したがるからじゃまいか
161 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 11:13:42 ] そういうこと。 順調に進歩する人と いつまでたっても進歩しない人と 途中で投げ出す人を見てきたが、 性格というか気分というか、 そういうが現れてるような気がした。
162 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:21:12 ] >>157 まあVC++ 2005はセキュリティ関連で色々と細かい警告を出すようになったが、それは有名だしググれば対処法はすぐ見つかる。 その程度のプログラムならそのほかには、特にVC++ 2005に持っていったからといってエラーになるということはないと思う。 せいぜいSDKを入れていない、入れたけどVC++で設定し忘れることに気を付けろというくらいかな。
163 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:06:14 ] もう一つ、文字コードの違いにも注意。
164 名前:デフォルトの名無しさん [2007/01/30(火) 00:08:27 ] 10年前ってオレ学生だな DOSのBorlandCと窓のC++習ってたけど 似たような事やるにしても DOSベースか窓ベースかで難易度に死ぬほど差を感じた で、その頃C++Builderとか出てきたけど あれはMSVCとは比べもんにならんぐらい簡単で驚いた
165 名前:デフォルトの名無しさん [2007/01/30(火) 00:43:43 ] 失礼します。 今日C++をはじめてみた者です。アホらしい質問かもしれませんがお願いします。 以下のプログラムについて質問です。 #include <iostream> using namespace std; class Glass {int nakami; //水の量 public: Glass(int x) : nakami(x){} //引数を取るコンストラクタ //ユーザかプログラマに渡される値(xで表される)をnakamiに格納 void dasu(int); //水を出す関数 }; void Glass::dasu(int x){ if(nakami >= x){ nakami -= x; cout<< "水を出しました。" << endl; cout<< "現在のコップの中身は" << nakami << "です。" <<endl; } else{cout<< "そんなに水がありません。" <<endl; cout<< "現在コップの中には" << nakami << "入っているだけです。" <<endl; } } int main() {int x; //整数の「いれもの」xの定義。下のcinの前ならどこにあってもよいのです。 cout << "コップを生成します。どれだけ水をいれるか入力してください。" << endl; cin >> x; Glass glass(x); //引数を取るコンストラクタが呼び出され、 //水がxだけ入ったglassという名のコップが生成される cout << "さあ、glassから水を出します。いくら出しますか。入力してください。" <<endl; cin >> x; //上のxを使いまわしている glass.dasu(x); cout<<"終了"<<endl; } これは、とある(おそらく有名な?)C++入門ページの所からの引用なんですが、 なぜ、変数のxを使いまわすことができるのかわかりません。 一回目に指定した物がnakamiに入って、二回目に指定した物がdasu量になるなんて、 そんな都合のいいようになるわけが・・・と思ったら普通になったわけですが、どうなってるんでしょうか?
166 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 01:02:34 ] >>165 何が聞きたいか分からん・・・ たとえば、 x=5; cout << x; x=10; cout << x; これでも x を2回使いまわしてることになるが(1回目は1"5"、2回目は "10" が出力される) 何か疑問があるか?
167 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 01:09:00 ] >>166 あーーーーーー、簡単な形で見ると、わかりました。 つまり、cinでユーザーがxに入力した値はそのすぐ下にあるxに 反映されると言うわけ・・・かな? いや、そうですね。 解決しました。ありがとうございます。
168 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 06:17:17 ] >>167 今更どうでもいいけど、ここはVCのスレだから、どうせならC++初心者のスレに逝けばよかったのに。
169 名前:デフォルトの名無しさん [2007/01/30(火) 12:26:49 ] foobar2000のプラグインを作ってみたいんだけど、 当方、組込み系のプログラムが専門で、Windowsのプログラムは未経験です。 VisualC++を使ってみようかと思ってるんですが、Foobar2000のプラグイン開発って ExpressEditionでもできるの?
170 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 12:31:16 ] 超初心者とかいう以前の問題かもしれないけど、教えてください。 ttp://www.imgup.org/iup324420.jpg このOrchisのブラウザ→firefox.exeの部分はなんていう名称でしょうか? Orchisではサブメニューとなってますが、VC++でいうには? マウスポインタが来ると展開されるもの…というか…メニューバーとも違いますし…
171 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:04:29 ] フラッシュ板かこっちか迷いましたがプログラム側で起動すると思ったのでこちらに書きます インターフェイスをswfにしたいんですがプログラム側ではどういう処理が必要ですか? .exe起動→swf起動→swfをウィンドウに貼り付け 今ここで行き詰ってます よろしくお願いします
172 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:37:24 ] さあ?
173 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 17:38:54 ] pc10.2ch.net/test/read.cgi/tech/1153542424/785-786 このような状態なんですがどうすればいいんですか?
174 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 17:45:41 ] >>173 プロジェクト作った?
175 名前:173 mailto:sage [2007/01/30(火) 18:32:03 ] 今プロジェクト作成に気をつけながらやってみたらうまく行きました 朝のやつは何かおかしかったみたいです。ありがとうございました
176 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:23:54 ] openfiles.exeのように、 ロックを取得しているプロセス名を取得する方法ってどんなやり方がありますかね?
177 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:16:18 ] includeファイルの中身を見ても仕組みがよくわからないんですが インクルードファイルの機能を見るにはどうすればいいですか? ヘルプを見ましたがいまいちよくわかりませんでした・・・ 何かよい検索方法があれば教えてください よろしくお願いします
178 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 19:38:21 ] もう少し具体的に書いてくれ 普通は、この機能を使うには どのヘッダファイルをインクルードすればいいのかを 調べるから順番が違って参考になる答えがだせるかわからんけど
179 名前:デフォルトの名無しさん [2007/01/31(水) 23:01:33 ] タブ(CTabCtrl)を使ったプログラムを作ったのですが、タブ内の処理(他クラス・チャイルド)と親クラス(?)で変数を共有する方法を教えてください。 親クラスの変数をタブのクラスで参照できれば良いです。 また、親クラスからあるトリガで子クラスの表示処理を走らせたいのですが、子クラスを起こすor親クラスから直接描画できますか? よろしくお願いいたします。
180 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 23:06:16 ] スルー
181 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 00:12:34 ] >>179 正直言っている意味がわからんのだが、 参照できる親クラスメンバは、子クラスからならばprotectedかpublic、 継承関係にないならばpublicのみだぞ。
182 名前:デフォルトの名無しさん [2007/02/01(木) 04:52:51 ] 親ってことは、CWnd::GetParent()か?
183 名前:デフォルトの名無しさん [2007/02/01(木) 04:55:17 ] みんな意地悪しないで(知ってて知らん振り、わからない振り?)、 自分が初心者だった頃を思い出して質問を酌んでやれよ。
184 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 04:57:24 ] >>181 >正直言っている意味がわからんのだが、 そりゃ、>>179 以上にあんたが初心者ってことだお。
185 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 04:59:25 ] 言いたい事は何となくわからんでもないけど クラスをどう作ってるか分からんとねぇ
186 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 06:13:21 ] >183-184にまかせた
187 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 08:29:22 ] そりゃクラスじゃなくてウィンドウの親子だな
188 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 18:09:45 ] つまりそうだろ!?
189 名前:デフォルトの名無しさん [2007/02/01(木) 22:29:51 ] すいません、自分はクズたれ初心者です。 そこで質問です、何か作ってみようと思って、SDKみたりするんですが C言語だと、長ったらしいソースをメッセージ毎に書いて、他にも知識が必要だと思い ところが、MFCだと、それら(win32api達)を一通り用意用意されすぎて、でも結局win32apiをラップ したものですし、なんかMFCを使うのは、パソコン初心者に「さぁ、使い方は教えないが便利だよ。使ってみなさい」 と言って標準アプリが付いたパソコンをわたしてるような感じで、使い勝手が分からない感があります。 どこかサイトで、MFCをつかわずwin32apiを使ったC++プログラムサンプルソースを公開してるところは ありませんでしょうか、CodeGuru,TheCodeProject,Programmer'sHeaven,SourceForge等を見ても MFCか、いわゆるコンソールアプリ(boost等)のどちらかしか見つけられません。 自分の探し方が悪いのでしょうが、どなたか教えてください。 (ちなみに、FastCopyのソースを見ましたが、敷居が高すぎました)
190 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:43:19 ] MSDNにSDKのサンプルがいっぱいついてる
191 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 23:13:59 ] >>189 そもそもWin32APIが関数と構造体の塊のようなものだから、 直にWin32APIを使うプログラムなんてCでもC++でも大して変わらない。 (COMが絡む分野を除く) Win32APIを使ったプログラムで、C++らしく書くとすると、 結局MFCがそうであるように多かれ少なかれWin32APIを何らかの形でラップしたような感じになるのがオチ。 だからといってMFCを使えというわけではないし、MFC以外にも色々とあるわけだが。
192 名前:デフォルトの名無しさん [2007/02/01(木) 23:35:56 ] VC++を評価版でやってみたいのですが、何をダウンロードしてインストールすればよいのでしょうか? 初歩的な質問で恐縮ですがよろしくお願いします。
193 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 23:39:37 ] >189 おいらは、猫->ATL/WTL
194 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 23:43:25 ] >>192 これのどっちか Visual Studio 2005 Team Suite 180日間限定評価版 Visual Studio 2005 Professional Edition 90日間限定評価版 www.microsoft.com/japan/msdn/vstudio/downloads/default.aspx
195 名前:デフォルトの名無しさん [2007/02/01(木) 23:45:32 ] >>194 どうもありがとうございました。
196 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 14:43:14 ] リソース*.rcファイルの中で#ifdef,#else,#endifの処理があるのですが、 プロジェクトの設定の、プリプロセッサの定義に書いても、*.rcの中だけ無視されます。 (他の*.cppとかはちゃんと#ifdefで条件分岐してます) どうすれば*.rcの中でもプリプロセッサの定義が有効になりますか?
197 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 14:45:36 ] 解決しました。 プロジェクトのリソースタブにもプリプロセッサの定義がありました。
198 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 13:32:57 ] >>192 どうしても有料のエディションの評価版がいいの? 無料のExpress版は嫌?
199 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 03:18:09 ] 評価期間過ぎたら製品版買ってMSに貢献するんだろ 無料勧めちゃイカン
200 名前:デフォルトの名無しさん [2007/02/08(木) 17:12:26 ] 多分すごい有名な 「新VisualC++6.0入門ビギナー編 林春比古署 ソフトバンク社」 を使って今勉強中なんですが、 241ページのサンプルプログラムで、 CPenクラスのオブジェクトのポインタ、’oldPen’ってゆうのを、 ’旧ペン’と銘打って保存って書いてありますが、 これをする意味がわかりません。 わざわざポインタでなぜ確保しているのでしょうか? pDC->SelectObject(&CPen型Object)で選択して書くだけなのに、 別に’旧ペン’を保存しておく必要があるのでしょうか? 私が簡単に確認した程度では、 oldPen 自体設定しなくても実行可能でしたし、 最後に’旧ブラシに戻す’ってゆう作業もなくても問題ありませんでした。 他にもいろいろ記述してoldPenの有用な使い方を検証しましたが、 やればやるほど意味がないのではという考えに傾きます。 大変限定的な質問ですが、 よければ本を持ってる方、もしくはよく知ってらっしゃる方でわかる方がいれば 教えていただけないでしょうか?
201 名前:デフォルトの名無しさん [2007/02/08(木) 17:13:22 ] 多分すごい有名な 「新VisualC++6.0入門ビギナー編 林春比古署 ソフトバンク社」 を使って今勉強中なんですが、 241ページのサンプルプログラムで、 CPenクラスのオブジェクトのポインタ、’oldPen’ってゆうのを、 ’旧ペン’と銘打って保存って書いてありますが、 これをする意味がわかりません。 わざわざポインタでなぜ確保しているのでしょうか? pDC->SelectObject(&CPen型Object)で選択して書くだけなのに、 別に’旧ペン’を保存しておく必要があるのでしょうか? 私が簡単に確認した程度では、 oldPen 自体設定しなくても実行可能でしたし、 最後に’旧ブラシに戻す’ってゆう作業もなくても問題ありませんでした。 他にもいろいろ記述してoldPenの有用な使い方を検証しましたが、 やればやるほど意味がないのではという考えに傾きます。 大変限定的な質問ですが、 よければ本を持ってる方、もしくはよく知ってらっしゃる方でわかる方がいれば 教えていただけないでしょうか?
202 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 18:00:52 ] DCに選択中のGDIオブジェクトは破棄できないから。
203 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 18:29:47 ] >200-201 ★初心者にVisual C++を教えるスレ★ Part25 pc10.2ch.net/test/read.cgi/tech/1168354839/380 マルチ
204 名前:デフォルトの名無しさん [2007/02/08(木) 18:31:55 ] ほんとだあ
205 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 18:56:07 ] あちこち書き込むと早く回答がもらえるよ〜俺って頭いい〜とか思ってるのかね。
206 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 22:37:31 ] ttp://aoiruka.blog8.fc2.com/blog-entry-103.html ここに載っている方法で加算合成を行っても問題はありませんか? 自分の環境では特に支障なく動作するのですが。
207 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 22:50:54 ] >>206 そのリンク踏んでも問題はありませんか? 自分の環境で支障がでると困るので
208 名前:デフォルトの名無しさん [2007/02/09(金) 10:29:48 ] あっちこっちかいたらあかんのか、ぼけ。 二箇所しか書いてへんし、掲示板のタイトル選んで書いてるし、 回答は少しでも速いほうがいいし、 もしかしたらいろんな答えがあるかもわからんし、 それを知りたいのは普通やんけ。 誰も頭がいいなんか思うか。 そういう発想にいたるお前は自分が悲しくないんか。 まあ、ここでそんなやつにかまってる自分が悲しいけど。 気分が悪いんでもうこんなところに質問書いたりしません。 どうも何らかの答えになるようなことを書いてくださった方はありがとうございました。
209 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 14:04:46 ] もうくるなよ
210 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 14:41:44 ] 質問です。VC++6.0でMFCを利用しています。 3つのダイアログをモーダレスで表示します。 仮に、A,B,Cとします。 この3つのダイアログのZオーダーを常にA→B→Cに固定するにはどうすれば よいでしょうか。 私自身、Zオーダーという言葉の使い方が間違っているかもしれませんので補足します。 AとBが重なっていれば必ずAが前面に表示され、BとCならB,AとCならAという 動作です。 ダイアログが2個なら、TOPMOSTが利用できるのですが、3つの場合はどのようにしたら よいでしょうか。 可能であれば、BダイアログをドラッグしながらAダイアログ上を横切ると、スムースにAの下 を潜り抜けるようなのがよいです。 よろしくお願いします。
211 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 17:04:21 ] こういう向いてないやつはどうしたらいんだろうね 本人が悟ってくれるといいけど
212 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 17:40:22 ] >>210 ダイアログの作成順をC B Aの順にし、Create時Aの親をBに、Bの親をCにする。
213 名前:デフォルトの名無しさん [2007/02/09(金) 22:52:26 ] ど素人です。 labelに文字を続けて表示させたいのですが、 label->Text = S"hello wo"; label->Text = S"rld"; としてもrldとなってしまいます。 これをfor文等で何回も実行させたいのですが、どうすればよいのでしょうか。
214 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:00:29 ] これなら低級エスパーでも答えられるな。
215 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:09:15 ] >>213 普通のCのプログラムならそんな感じだろうけど Windowsだからね 最低限の基礎知識がないとこれから大変だと思うよ 手取り足取り面倒みてくれる人がいるといいね
216 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:15:26 ] S""って、マネージリテラル文字列?C++/CLIか?
217 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:15:29 ] 初心者です。 超アホな質問で申し訳ないんですがよろしくです。 VistaにてVS2005Expressを使おうと思ってます。 一応本体+SP1(MSUpdateにて)とSP1Update4Vista(β版)とやらをインスコしてみました。 ・・がこれでSP1は適用できてるんでしょうか? 確認方法がわからないんですorz||| バージョン情報にはSPの文字は見えませんでしたが・・ また、Vista上の2005でビルドすると文字コードエラーが連発しますが、 なんとなくSP1では対策済みとの情報があったような気がしてて、 SP1が適用できてないのでエラーが残ってるのかなぁとか思ってるわけですが、 実際のところどうなんでしょうか? SP1にしたからって文字コードエラーが消えるわけではないのか、 それともSP1自体適用されてないのか・・ どうかよろしくお願いします!!m(_ _;;)m
218 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:20:57 ] >>213 label->Text += S"rld";
219 名前:213 [2007/02/09(金) 23:40:38 ] >>216 よくわかりませんがVC++.NETでwinフォームアプリケーションを作っています。 >>218 ビルドすると '+':__gcポインタ 'System::String __gc *'に対してポインタ演算ができません。 とエラーがでてしまいます。
220 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:54:54 ] 一つの入れ物に二つ入れようとしたら 前に入れたのがでて、後から入れたのが残るよ
221 名前:213 mailto:sage [2007/02/10(土) 00:13:25 ] String* ss; ss = System::String::Concat(S"hello wa", S"rld"); label->Text = ss; とすれば表示させることができました。 一応問題は解決したのですが、もしこれより効率的な書き方があれば 今後のために教えてください。
222 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 00:33:15 ] >>221 MASM6.3? だったら MOV ES・SI、ソース MOV DS/SI、ですちねーしょn MOV ECX、カウント REP MOV
223 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 00:39:01 ] コンパイラ様より効率的なんだろうか
224 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 00:42:14 ] >>223 昔DECのフォートランでDOループで定数を埋めるプログラムを作ったら 逆アセンブルしたら全部クリア命令だった
225 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 00:53:38 ] >>222 rep movsb だろ。 ていうか、そもそもCLIか。
226 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 01:43:22 ] >>221 大量の文字列連結用にSystem.Text.StringBuilderってのがあるけど、 二つ三つ繋ぐのには大げさすぎだな。
227 名前:デフォルトの名無しさん [2007/02/11(日) 17:15:26 ] 乱数を取りたいんですが Random random = new System::Random(); int ran = random.Next(100); ではコンパイルできないんですがどうしたらいいですか?
228 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 21:48:08 ] C++/CLIならたぶんこう。 System::Random random; random.Next(100); マネージドC++ならたぶんこう。 System::Random* random = new System::Random; random->Next(100); .NETを使わないC++ならboost::randomを使っておけ。 嫌なら<cstdlib>のstd::rand (& std::srand)。
229 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 22:13:12 ] >>228 ありがとうございます。
230 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 00:14:24 ] 猫でもわかる…の他にWin32SDKでダイアログベースアプリケーション の作り方を解説しているところを教えてください。
231 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 00:27:54 ] WisdomSoft
232 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 00:51:17 ] >>231 ありがとうございます。 ハード + たまにファーム屋なので、すぐ壁にぶち当たると思うけど 頑張ります。
233 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 22:40:46 ] C++とは直に関係なくリソースエディタのことなのですが メニューをリソースエディタで作る時に 最初にメニュー項目に割り振られたIDをメニューエディタで変えても resource.hに繁栄されないのですけど そういう仕様なんですか?リンクしてない? リソースシンボルを見ると書き換えたはずの前のIDも使用中になって消すことも できませんし…… 自分でresouce.hを書き換えるものなんでしょうか? グラフィカルなメニューエディタとresouce.hの関係がよくわかりません 環境はVS2005stdです
234 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 00:47:08 ] それあるね。素直に変わる時もあるけど、バグのような気がする。
235 名前:233 mailto:sage [2007/02/13(火) 01:55:09 ] >>234 ということは 本来はメニューエディタで変えたIDはリソースシンボルや resource.hに反映されるものなのですね 勝手にresource.h書き換えるとVSに怒られるし…… 何度か再起動してれば連動することもあるということですね sp1も充ててるんですけどね 明日 試してみます
236 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 17:38:06 ] 自分が作ってるのと関係ない窓(例えばIE)を移動させることって可能でしょうか?
237 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:22:31 ] 可能です。
238 名前:デフォルトの名無しさん mailto:age [2007/02/18(日) 22:31:02 ] VS2005STD-VCの アイコンエディタの色の並びは どういう根拠で決定されたものなのでしょうか? 正直、あの並びをデータとして持っているのが無駄に思えます。
239 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:35:23 ] VGA(640x480,16色)の初期パレットじゃね?
240 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:43:10 ] って、256モードか
241 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:45:29 ] あれはわかんね
242 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 23:20:16 ] WebSafeColorの216色+WindowsSystemColorの32色+αじゃないのかな。 要は、255を5等分した6濃度をRGB3プレーン分展開したのがWebSafeColorの216色で、 ウィンドウ枠なんかに使っているのがWindowsSystemColorの32色。
243 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 20:28:58 ] MFCのOnTimerイベントの処置中は他のボタンなどのイベントを受け付けない (OnTimer内の処理が終了後に他のイベント処理)動作は可能でしょうか?
244 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 20:40:19 ] OnTimer内でメッセージループ回さなきゃ、そういう動作になると思うが。
245 名前:243 mailto:sage [2007/02/19(月) 20:50:43 ] >>244 イマイチOnTimerの処理について把握してないのですが、OnTimer内の 処理が終わるまではボタンイベントの処理等には行かないって事でいいのでしょうか?
246 名前:243 mailto:sage [2007/02/19(月) 20:52:58 ] あ〜すいません。 行かないってか、貯まったメッセージキューの処理とかしなきゃ行けないですね。
247 名前:デフォルトの名無しさん [2007/02/20(火) 11:37:39 ] これからどうやって勉強すればいいですか Cに関する知識0です。
248 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 11:49:53 ] 今まではどうやって勉強して、どこまでいったのだ
249 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 13:12:56 ] 諦めて樹海にでも行けばいいんじゃね?
250 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 23:48:17 ] 関数が多くなって非常に醜いソースファイルがあるのですが、 ほかのファイルにいくつかの関数をもっていき、それをメインのソースファイルから利用したりはできませんか?
251 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 23:50:42 ] つ ヘッダ
252 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 23:52:12 ] >>250 ほかのファイルにいくつかの関数をもっていき、それをメインのソースファイルから利用 すれば出来る。
253 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 10:07:30 ] case 1: if(GetOpenFileName(&ofn)){ GetFileTitle(GotFileName,GotFileShortName,256); strcpy(musictitle,"open "); strcat(musictitle,GotFileShortName);strcat(musictitle," alias oto");mciSendString(musictitle,NULL,0,NULL); } break; case 2: mciSendString("stop oto",NULL,0,NULL); mciSendString("play oto from 0", NULL, 0, NULL ); break; こんな感じでボタン1が押されたらコモンダイアログ出してファイルを選択させ、 ボタン2が押されたら、選んだファイルを再生する、というようにしてるんですけど 動作が変なんです。 例えば、最初に「oo.mp3」を選択した後、ボタン2を押して再生します。 そして、もう一度ボタン1を押して、「xx.mp3」を選択します。 その後、ボタン2を押すと、「oo.mp3」が最初から再生されてしまいます。 本当は、「xx.mp3」を再生したいのですが・・・
254 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 10:41:32 ] >>253 mci使ったことないし、曲再生もやったことないけど、気づいた点を一つ。 closeしないうちに再openできるの? 単純に、oo.mp3がopenされたままだからxx.mp3でopenできてないんじゃない?
255 名前:253 mailto:sage [2007/02/22(木) 14:35:39 ] >>254 すんません、書いてなかったです。 WM_DESTROYの中でcloseはしてあります。
256 名前:254 mailto:sage [2007/02/22(木) 14:51:50 ] んにゃ、closeしないままopenしてないかって話だけど。 2度目のxx.mp3のときのcase 1で、ちゃんとopenできてるかどうか確認してみたら? #つーか、mciSendString()はエラーを返さないのか? 返さないとしたら確認手段くらいないのか? いっそ、試しにこんなロジックでも書いてみたら? mciSendString("open oo.mp3 alias oto", NULL, 0, NULL); mciSendString("stop oto", NULL, 0, NULL); mciSendString("play oto from 0", NULL, 0, NULL); Sleep(10000); mciSendString("close oto", NULL, 0, NULL); mciSendString("open xx.mp3 alias oto", NULL, 0, NULL); mciSendString("stop oto", NULL, 0, NULL); mciSendString("play oto from 0", NULL, 0, NULL); Sleep(10000); mciSendString("close oto", NULL, 0, NULL); んで、巧く行ったらcloseをコメントにしてやってみると。
257 名前:253 mailto:sage [2007/02/22(木) 15:05:31 ] >>256 出来ました、サンクスです。 てっきり、closeは最後にアプリ閉じるときだけすればいいと思ってました。 そっかー、一旦、close 要るんだったのか。 どうもです。
258 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 15:32:52 ] VC++の古いやつ(5.0 Ent)使ってるんだけど SDKで case WM_PAINT: return 0; この2行が入っていると、 何故か(左上のアイコンをクリックして出す)システムメニューの 表示が遅くなったり、配置したコントロールの反応が遅れたりする (例えばチェックボックスをクリックしてもチェックマークが入るのが遅い)。 この2行をコメントにすると直る。 これって、普通なのかな? 今更なんで5.0かって言われそうだけど
259 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 15:42:35 ] WindowsのWM_PAINTで再描画が行われない (正確には更新リージョンが空にならない)と、再びWM_PAINTが投げられる。 だから例えばDefWindowProcの中ではWM_PAINTに対し ただBeginPaintとEndPaintだけを呼んで更新リージョンを空にしていると、 Programming WindowsかAdvanced Windowsのどっちかに書いてあった。
260 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 04:13:55 ] windowsアプリケーションでアイコン作ったものの コンパイルしても表示されないんですが 設定の仕方があるのですか?
261 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 07:18:30 ] 俺様のエスパー能力を駆使した感じでは、 元々リソースを含まなかったプロジェクトに対して、アイコンファイルだけを直接追加した予感。 リソースファイル(*.rc)とresource.hがプロジェクトに含まれているか? 通常は、リソースファイルを追加した後、 そのリソースファイルに対してアイコン等を追加する。
262 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 08:00:40 ] 残念ながら含まれてます ただ今気付いたんですがフォルダの表示をアイコン表示にすると ちゃんと表示されます 一覧表示や詳細表示などでは表示されないんですがこれもしかして仕様ですか?
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 できました!ありがとうございます!