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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:11 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

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

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

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

558 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:01:52 ]
>>556さん
>>557さん
ありがとうございます。

やはりそうなのですか。
ところで、何で全部のソースに書かないといけないのでしょうか?

自分のイメージでは、プリコンパイルヘッダーって、
ヘッダーファイルをまとめたヘッダーファイルみたいな物と思っています。

別にプリコンパイルヘッダーに登録されているヘッダーファイルが
必要じゃない場合とかも、そのソースに include しないとエラーが出るっていうのが、
いまいち納得できませんでした。

何か自分は考え違いをしているのでしょうか?

559 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:38:47 ]
>>558
プリコンパイルヘッダーを使用する/しないは、全体の設定のほかに
個別のソースごとに設定できる。
必要なけりゃそれで除外すればいい。

560 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:55:22 ]
>>558
プリコンパイルヘッダはコンパイル前にあらかじめヘッダーをコンパイルして結果を保存し、再利用してコンパイルを高速化するためのもの。
だからプリコンパイルヘッダを使用すると指定したモジュールのヘッダー読み込みの順序が同じでなければならない。そのために各ファイルの先頭でstdafx.hを読み込むようにしている。


561 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 20:20:54 ]
イベントのハンドルが引数になってる場合はどうやって渡せばいいんですか?


562 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:23:14 ]
warning C4731: 'Mul' : インライン アセンブラ コードにより変更されたフレーム ポインタ レジスタ 'ebp' です。

この警告をなくす方法を教えてください。もしくは気にしなくても良いのでしょうか?
MSに msdn.microsoft.com/ja-jp/library/ywz8xf2a.aspx 悪い例のサンプルがあるんですけど
対応方法が載ってません。

563 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:59:54 ]
ようするにebp/espを書き換えなければ済む話。
警告無視で書き換えるなら、__asmを入るときの値を出るまでに復元しろということ。

564 名前:デフォルトの名無しさん [2009/01/03(土) 23:47:30 ]
警告0の正しい?コードを書こうかなと思ってコード書き直してるのですが、
ReadProcessMemory(ProcessHandle, reinterpret_cast<LPVOID>(ModuleAddress+data.offset.x), &x, 4, NULL);
こう書くとwarning C4312: 'reinterpret_cast' : 'DWORD' からより大きいサイズの 'LPVOID' へ変換します。
とでるのですが、正しい使い方はどうなるんでしょうか?
ModuleAddressとdata.offset.xはどちらもDWORDです。


565 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:12:20 ]
それは、Win64だとvoid*も64ビットだから気を付けろという警告。
キャスト元をDWORDからULONG_PTRなんかにすればいい。
DWORDはWin64でも32ビットのままだが、ULONG_PTRはポインタと同じく64ビットになるという整数型。

566 名前:デフォルトの名無しさん [2009/01/04(日) 01:17:12 ]
Windows XP SP3 Visual Studio 2003 の話です
ソースAがメインのソースとして
ソースBとCが他にあるとします.
ある構造体の宣言をソースCでし,ソースAとBでその構造体を使いたいものとします.
そのときコンパイルすると
構造体の再定義というエラー
error LNK2005: "その構造体は 既に ****.obj で定義されています。
とでます.
どのように宣言すればよいでしょうか?






567 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:27:40 ]
グローバル変数の実体は一つだけにして、他ソースからはexternで参照する。

568 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:29:39 ]
コンパイルエラーが出るなんて糞質問はコード公開必須だボケが

569 名前:566 mailto:sage [2009/01/04(日) 01:31:04 ]
すみません別ファイルへのリンクに
#include "ソースC.cpp"
とかいう変なことしてました.

570 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 10:03:30 ]
>>564
プロジェクトのオプションに64bit互換のチェックの有無があるからoffにする。


571 名前:562 mailto:sage [2009/01/04(日) 11:48:44 ]
>>563
ありがとう。
pushとpopをしておけば良いのですね。

572 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:50:31 ]
Visual C++本体の扱い方を解説しているサイトはありますか?
コーディングはできるんですが、ソフトの機能を把握しておきたいのです
ちなみに2008です

573 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:13:05 ]
>>572
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ja/dv_vstoc/html/06ddebea-2c83-4a45-bb48-6264c797ed93.htm

574 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 22:13:13 ]
exeのディレクトリにあるファイルは読み込めるのに
exeのディレクトリのフォルダのファイルは読み込もうとするとエラーが出ます。
何故ですか?

ifstream fin;

OK↓
fin.open("test.txt",ios_base::binary);

NG↓
fin.open("data/test.txt",ios_base::binary);

575 名前:574 mailto:sage [2009/01/04(日) 22:21:20 ]
どうやらファイルを見つけていないようです。

576 名前:574 mailto:sage [2009/01/04(日) 22:40:00 ]
単なるスペルミスでした。



577 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:18:38 ]
動的に作成した画像ファイルを読み込むとエラーになるんですが
なんとかなりませんか?

578 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:23:39 ]
エラーの内容から原因を推測して修正してください

579 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:29:38 ]
short int からintへ,int からshort intへの代入で,
特に型変換を記述しないで実行したんだけど,エラーも出ずに普通に動いた.
これ放置してて問題ない?それともちゃんと型変換した方がいい?

580 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:31:05 ]
コンパイラの警告レベルを高くしたらコンパイル時に文句言うんじゃね、と無責任に答える

581 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:31:58 ]
その場合でもshort→intのように無条件に大きくなる方はそのままでも平気。

582 名前:デフォルトの名無しさん [2009/01/06(火) 01:42:53 ]
「const unsigned char *」 型とはどういう扱い方をするものですか?

_ismbslead、_ismbstrail関数を使って、文字列の中の2バイト文字を判別したいのですが・・・


int _ismbslead(
const unsigned char *str,
const unsigned char *current
);

この引数の渡し方の意味がわからないです。


CString型、もしくはこいつをコピーしたchar型の配列の各バイトをチェックするロジックを作りたいのですが、
第一、第二引数どちらについても、char*型で渡そうとすると「const unsigned char*に変換できません」というコンパイルエラーが。

この関数はどうやって使うモノなのか教えてください

583 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:43:13 ]
ありがとう,とりあえずはshort int から int へはそのまま放置しときます.

584 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 10:21:57 ]
>>582
キャスト

585 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 10:52:44 ]
constというのは呼び出す関数の内部で値を書き換えないようにするものなので
この場合無視していい
char * を unsigned char *にキャストする

586 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 17:44:30 ]
FileStreamとBinaryReaderを使って、Byte型の配列を、読み込んだファイルのデータ長に合わせて宣言したいです。

//入力ストリーム作成
FileStream^ fs = gcnew FileStream(fnp, FileMode::Open);

//バイナリリーダー作成
BinaryReader^ br = gcnew BinaryReader(fs);

//データ読み込み
int len = (int)fs->Length; //データ長
System::Byte data[len];

こうやると、C2057とC2466、C2133が出て、ファイルを読み込んでからByteの宣言は出来てないみたいなんですが、
どうすればファイルを読み込んだ後にByteの配列を宣言出来ますか?



587 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:08:36 ]
>>586
array<System::Byte>^ data = gcnew array<System::Byte>(len);
もっとも、File::ReadAllBytesを使えば1発で済むぞ。

588 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:30:25 ]
>>586
ありがとうございます。もうひと頑張りしてきます。

589 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:30:55 ]
>>588
>>587に安価ミスした・・・orz

590 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:13:31 ]
VC++でHashTab Shell Extensionみたいにプロパティをいじるようなソフトを作りたいんですが、何をすればいいかまったくわかりません。。
どなたかヘルプミーお願いします。

591 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:48:34 ]
HashTab Shell Extensionは知らんけど、まさにShell Extensionで調べるのがいいんじゃ?
絞るならCOMもつけるといいかも

592 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 12:30:36 ]
>>591
サンクス!
とりあえずとっかかりができました。これからいろいろ調べてみようと思います。

593 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:34:46 ]
Stringに\nで改行とかって含めることできますか?
それかString以外の別の型使わなきゃだめですか?
テキストボックスに改行付きで変数で一括で突っ込みたいんですが・・・

594 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:55:30 ]
>>593
Stringということは.NETか?
\r\n

595 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:47:07 ]
.NETならEnvironment.NewLine、普通のC++ならエディットボックスはWindowsの\r\nで。

596 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 20:42:21 ]
>>594,595
できました、ありがとうございます。



597 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:59:31 ]
CImageで読み込んだ画像ファイルに直接直線を描画したいのですが、
何か方法はありませんでしょうか?
Visual Studio2008でプログラミングをしています。

598 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:39:42 ]
LineTo( hDC, nEndX, nEndY);

599 名前:597 mailto:sage [2009/01/08(木) 01:12:20 ]
画面上ではなく、Cimageの読み込んだ画像のピクセルを直接書き換えるように
直線を書き込みたいのですが、何か方法はないですか??

600 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 06:41:30 ]
LineTo

601 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 08:08:14 ]
>>597>>599
CImageにはGetDC/ReleaseDCメンバ関数がある。

602 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 19:10:49 ]
2008の表示>ツールボックスの文字色はデフォが黒なんだけど見づらいので
どこをいじれば変えられますか?

603 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 22:33:29 ]
初心者です教えてください

604 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 23:24:16 ]
このソフトは初心者には扱えません。

605 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:13:26 ]
Editにキーボードで入力するとEN_UPDATEが発生するんですけど
SetWindowTextで文字列を挿入するとEN_UPDATEイベントが発生しません。
どうすれば良いでしょうか?


606 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:23:58 ]
オバマじゃだめなのか?



607 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:28:57 ]
#include <iostream>
#include <string>

using namespace std;

void main(){
wcout<<L"test";
wcout<<L"うんこ";
getchar();
}

なぜかL"うんこ"が表示されません。
っていうか日本語が表示されないのですが
なんとかしてください。

608 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:31:09 ]
ロケール

609 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:48:54 ]
うぁありがとぉぉおおう

610 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:36:16 ]
一度壊れたインテリセンス情報って復活できる?
ncbファイル消して開きなおしても、入力支援できない・・・

611 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 10:46:21 ]
プログラムではなくて、機能の質問なんですが、
#endifと最後に打った瞬間、上記文(#endifから上)の文字が全て灰色に変わりました。
(#ifdefなら青くなる筈だが、灰色に…)
色付に戻したいです。どうすれば良いのでしょうか?
よろしくお願いします。

612 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 11:10:49 ]
そりゃコンパイル条件から外れたからだろう

613 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 11:48:59 ]
アウトラインとかは関係ないのでしょうか?

614 名前:611 mailto:sage [2009/01/13(火) 13:51:34 ]
自己解決しました。
一番最初のプリプロセッサ命令のスペルミスしてた。
数時間格闘した結末はやはり呆気ないものだな…。

615 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 14:37:20 ]
コンパイル条件から外れた、で意味わからなかったのかよ・・・

616 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:07:46 ]
すんません。実行時にフォームのタイトルバーに文字を指定する方法を教えてください。。。



617 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:12:55 ]
あ、すんません。visual c++ 2008です・・

618 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:23:06 ]
あ、すんません。普通にText = "aaa";でいけました。ほんとすんません

619 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:27:11 ]
ゆとり死ね
市ねじゃなくて死ね

620 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:39:18 ]
CoInitializeで未解決のトークンとリンクエラーになるのですが何かlibを追加しなくてはダメですか?

621 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:57:13 ]
ole32.lib だと思うが、普通はわざわざ指定しないけどな?

622 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 18:29:48 ]
>>621
普通は指定しないですよね?
でもなぜかしれを追加したらリンク通りました・・・
ありがとうございます。

623 名前:611 mailto:sage [2009/01/13(火) 19:22:32 ]
>>615
フフ、プログラミングでわからない事なんて、しょっちゅうよ…

624 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 01:15:15 ]
・Visual C++2008 express
・開発環境・・WindowsVista

Debugモード、Releaseモード共にコンパイルは通ります。
Debugモードでデバッグ無しで実行は問題なく動作し、正常に終了します。
Releaseモードでデバッグ無しで実行した際には、途中でOSからのエラー、

----.exeは動作を終了しました。
問題が発生したため、プログラムが正しく動作しなくなりました。

というメッセージが出、途中で終了します。また、エラーが出るタイミングも
まちまちです。
これはどういう問題かと思われますか?タイミング問題でしょうか?


625 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 01:24:30 ]
変数の初期化し忘れとかそういう方向で

626 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 08:00:10 ]
Windows XP、Visual C++ 2003 でダイアログアプリを作っています。
アプリを一つだけ起動した状態は問題ないんですが、二つ以上起動すると
タスクバーのボタンがグループ化されたときに「(2) TODO: <ファイルの説明>」というような
表記になってしまいます。
このような文言らしきものがリソースの VS_VERSION_INFO にあったので
適当に編集してみたのですが、表記は変わりませんでした。
どうしたらタスクバーの表記が正しいものになるでしょうか?



627 名前:624 mailto:sage [2009/01/15(木) 09:05:56 ]
>>625
やはり、考えられるのはそれぐらいになりますよね・・・
ありがとうございました

628 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 10:37:15 ]
>>626
以下のレジストリから該当アプリを削除して再度実行する。
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache

629 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 10:56:59 ]
基本クラスをCFormViewで作成したときに
これのウィンドウハンドルはm_hWndでしょうか?

630 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 17:56:35 ]
GetSafeHwnd()使え。

631 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 18:57:02 ]
メイクしたユーザの名前を実行ファイルに
文字列として埋め込むことって可能ですか?

632 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 19:04:25 ]
可能

633 名前:626 mailto:sage [2009/01/15(木) 19:10:04 ]
>>628
おおお 初回起動時の値をずっと保持しているのですね。
消して再実行したらきちんと編集した値に更新されました。
どうもありがとうございました。

634 名前:631 mailto:sage [2009/01/15(木) 19:20:38 ]
>>632
どうすればできますか?

635 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 19:21:23 ]
>>634
#define hoge "うんこタロウ"

636 名前:631 mailto:sage [2009/01/15(木) 19:29:40 ]
>>635
それだと"うんこタロウ"以外がメイクした時にも
"うんこタロウ"と埋め込まれると思うのですが・・・



637 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 19:37:51 ]
メイクする人が変われば名前変更しなさいよ
VCは自動でメイクした人の名前を認識できませんよ

638 名前:631 mailto:sage [2009/01/15(木) 19:43:49 ]
>>637
やはり手動でしかできませんか・・・
ありがとうございます。

639 名前:631 mailto:sage [2009/01/15(木) 19:53:11 ]
今思いついたのですが、
static const char NAME[NAME_LEN] ("HOGEHOGE");
と、ソースに埋め込んで、ビルド後のイベントで
実行ファイルをバイナリレベルで走査し、
指定文字列を発見したらGetUserName()を埋め込む
というのは危険すぎるでしょうか?

640 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 19:57:52 ]
ビルド後のイベントって他環境でも強制できるの?

641 名前:631 mailto:sage [2009/01/15(木) 20:05:23 ]
>>640
恐らく*.projあたりに埋め込まれているのだと思うので、
VCを使用している限り埋め込む実行ファイルと
プロジェクトを一対で持ちまわれば
可能になるのではないかな、と。
ただ、プログラムのコード中に(想定しているバッファ以外に)
走査対象文字列が出てきたらと考えると危険な香りが・・・

642 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 20:42:25 ]
>>641
コンパイルオプションに環境変数 USERNAME を埋め込むのはどうか?
/D "HOGEHOGE_USERNAME=\"$(USERNAME)\""

コードでその文字列を確保
CString sUserName = _T(HOGEHOGE_USERNAME);

643 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 20:52:30 ]
C言語の勉強として、GetWindowRect関数を利用してウィンドウシェードを作っているのですが、
OnGetMinMaxInfoで最小サイズを指定していると思われるウィンドウではどうしてもタイトルバー
だけにすることができません。
どうすればそのようなウィンドウでもタイトルバーだけにすることができるでしょうか。

Microsoft Visual C++ 2008 Express Edition DLLファイル(TTBaseのプラグイン)

644 名前:631 mailto:sage [2009/01/15(木) 20:53:40 ]
>>642
できました。ありがとうございます。

645 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 22:47:03 ]
新規作成で出てくるウィザードにあるプロジェクトの種類 CLR Win32 全般 ってどういう使い分けなんですか?
ロベールのC+;教室ってサイトでは Win32 コンソール アプリケーションを使ってやるみたいなんですけどどれがどう違うのか教えてください。
それと新規作成でファイルを選んだ場合に作成されるのがプロジェクトで作ったのと何が違うのかも・・・
VC++2008EEを使ってます

646 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 07:38:09 ]
>>645
CLRは.NET frameworkを使ったプログラムでC#やVisualBasicで作るのと同じ中間言語にコンパイルされる
C++で使う利点は無いので最初からC#で書いたほうが楽
実行時にランタイムが必要だったり不便な点がある

Win32は普通のプログラムなのでこれで作れ

全般はコンパイラを別のにして開発環境だけ使うとかしてクロスコンパイルが出来る(メイクファイルプロジェクト)




647 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:58:59 ]
すごく初歩的な質問かもしれませんが、1つのプロジェクトにa.cppとb.cppがある場合どのような順番でコンパイルされていくんですか?

648 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 17:26:00 ]
プロジェクトファイルに書いてある順番

649 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 18:53:52 ]
順番なんかどうでもいい

650 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 01:58:13 ]
/MP使えばほぼ同時だな。

651 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:10:24 ]
MFCでファイルオープンダイアログを出す方法を教えてください

652 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:30:17 ]
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK)
{
MessageBox(dlg.GetFileName());
}

653 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 13:31:54 ]
>>652
できましたありがとう

654 名前:デフォルトの名無しさん [2009/01/19(月) 23:39:08 ]
CM_Get_DevNode_Registry_Propertyのかわりに
SetupDiGetDeviceRegistryPropertyほうを使うのが良いらしいんですが、
どういう理由なんでしょうか?

655 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 11:40:37 ]
MSDNにそう書いてあるから、じゃだめ?

656 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:21:50 ]
今使っているのはVisual Studio 2005です。

人に出来上がったexeファイルを配布するときに

このアプリケーションの構成が正しくないため、 アプリケーションを開始できません
でした。

というエラーを起こさないようにプロジェクトのランタイムライブラリの設定を
マルチスレッドDLLからマルチスレッドに変えました。
そうしたら以下のような警告が出て、他にも外部シンボルが未解決ですというエラーが大量に出ました。

warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。

人に配布するときに一番上のエラーが出なく、かつリンクが通るようにするにはどのようにすればいいのですか?



657 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:42:25 ]
>>656
DebugビルドとReleaseビルドが混じってるとか
リビルドしてみるか、言われたとおり /NODEFAULTLIB:LIBCMT.lib を試してみる

658 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:08:20 ]
>>656
元の構成に戻して、構成プロパティの全般ページの「MFCの使用」を
「スタティックライブラリでMFCを使用する」にする。

か、

元の構成に戻して、該当する方を渡す。

Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)
www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=ja

Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)
www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=ja

659 名前:656 mailto:sage [2009/01/21(水) 14:59:38 ]
ゲームを作ろうと思っているのですが、
他の人が作っているゲームや商業用のゲームは
再配布可能パッケージをインストールしなくても動いているのが気になります。
それはなぜなのでしょうか。

660 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:10:46 ]
>>659
スタティックリンクかもしれないし、
MFCを使ってないかもしれないし、
VCじゃないかもしれないし、
付属のセットアップで全部インストールされるかもしれないし、

もういいですか?

661 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:11:21 ]
全然満足できません

662 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:14:29 ]
あぁもう面倒くさいな。
取り敢えず「スタティックライブラリでMFCを使用する」でどうなるかやってみろ。

663 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:17:55 ]
面倒くさいならレスしないで下さいよ。ここは初心者スレなんだから。

664 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:20:03 ]
他の人が作っているゲームや商業用のゲームとかいう認識レベルのやつに説明しても無駄
開発環境や使用ライブラリぐらい調べてから質問しろ

665 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:21:15 ]
無駄ならレスしないで下さいよ。ここは初心者スレなんだから

666 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:27:31 ]
初心者じゃなくて初心者以前だろ



667 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:28:56 ]
知りもしないで文句だけたれてるクズがうざぃ

668 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:39:57 ]
そのゲームと同じにしたかったら同じ環境で同じように作ればいい

669 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:44:28 ]
その程度のレスなんていらないよぉ

670 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 16:11:57 ]
Microsoft Visual C++ 2005 再頒布可能パッケージなんだから
Visual C++ 2005以外で作れば入れる必要ない

671 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:02:41 ]
誰か>>643を…

672 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:16:41 ]
>>671
ちょっと待て

673 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:51:52 ]
と思われるウィンドウって他の人が出してるウインドウ?

サイズ変更のメッセージでサイズ調整したりするけど
他から勝手に余計なことされたらどうなるんだ?

674 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:55:57 ]
余計な事は考えないで質問にだけ答えてくださいよ。

675 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:59:02 ]
>>673
ウィンドウシェードが目的なので他のプログラムですね。
コマンドプロンプトなどだと中身が一行見えたり、GIMPだとほとんどウィンドウの中身が見えてしまっていて全く使えません。
もちろん手動でタイトルバーだけにしようと思っても(OnGetMinMaxInfoかなんかで)それ以上小さくならないですし。

676 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 18:48:54 ]
ウィンドウシェードなんて聞いたことない
知ってるやつが来るまでおとなしく待ってればいいよ



677 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:37:30 ]
>>676
MacやBlackboxなどにあるウィンドウをタイトルバーだけにする機能のことです。

678 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:44:19 ]
explorer.exeを殺して最小化すればいい。

679 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 20:03:54 ]
>>675
他のシェードツールでは問題なく動作するの?
それなら動かしつつSPYで見てみるとか

680 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 20:26:41 ]
>>678
互換シェル使っていますのでexplorer.exeはファイラー以外使ってません。
でもシェルを切ればタイトルバーだけになりますね。あまりあれは好きではありませんが。

>>679
Stylerでできた気がするのですが諸事情で確認できません。

681 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:40:49 ]
VS2008(VC9?)で、newしたときに、失敗したときに例外じゃなくてNULLを返させたいです。
でもnew(nothrow)みたいに、既存のソースのnewを一個一個置き換えるのはやなので、一発でなんか無いですか?



682 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:55:40 ]
newを自作

683 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:59:59 ]
なんか方法があるのは憶えてるけど、どうやるかは忘れたな。
ググればでてくるんじゃないか?

684 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:03:43 ]
検索したらmsdnにヒットしたけどオフィシャルとは思えない笑える説明

685 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:08:01 ]
笑える部分をコピペしてやりたいけど、それやると検索で見つかってしまうからやめておこう

686 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:09:37 ]
ダウンロードしたMSDNライブラリを、たとえばfirefoxで閲覧するにはどうすればよいでしょうか



687 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:49:00 ]
>>682-685
えー
教えてください


688 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:24:09 ]
もしかしてnothrownew.objをリンクするってやつ?

689 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:29:19 ]
WindowsのAPI関数をさしてF1キーなどでドキュメント付属のリファレンス見れますけど、
英語のものばっかり表示されるんですが、日本語で表示するにはどうすればいいですか?
オプションで全部日本語を設定してるんですが・・・

690 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:55:16 ]
んな難しい英語使われてないやろ

691 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:00:09 ]
なんで2ちゃんねらーって論点をずらすことばかりするの?

692 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:03:55 ]
そりゃあたくさん人がいるからだよ

693 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:06:28 ]
visual studio使ってる段階でクズだし基地外が好んで使うから

694 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:20:01 ]
>>689
キーワードタブのフィルタ条件を「日本語ドキュメント」にする。
その状態は記憶されるので次からは日本語になる。

695 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:50:57 ]
VC++6.0を使用しています。
メニューバーの項目を一つだけ右端に持って行きたいのですが可能でしょうか?
下のような感じで。
________________________________
|ファイル|編集|表示|___________________|ヘルプ|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

696 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:58:18 ]
>>695
不可能



697 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:04:28 ]
>>965
無理

698 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:05:12 ]
>>696 >>697
感謝です。

699 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:07:43 ]
>>695
リソースじゃなくて自分でメニューバーのウィンドー作れば可能

700 名前:695 mailto:sage [2009/01/22(木) 16:15:20 ]
>>699
感謝です。

yokohama.cool.ne.jp/chokuto/urawaza/menu1.html
メニューバーの作り方はここを参考に作れば大丈夫でしょうか?

701 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:59:52 ]
Web制作の経験があるという理由だけで会社でVisual C++の担当になりました。
1から勉強しなければならないのですが、そもそもこのソフトで何ができるようになるのでしょうか?
上司に聞こうにも上手くはぐらかされるだけでストレスになっています。

例えばこういうものが作れるといった具体例があれば教えていただけないでしょうか?

702 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 22:09:40 ]
この世に存在する自動的に制御されているものはほとんど作れます

703 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 22:17:49 ]
これはさすがに釣りだろjk

704 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 22:59:02 ]
>>701
ウインドウズのアプリケーション。
ライブラリ。
DLL。
COM。
ActiveX。
Webアプリケーション。


705 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 04:26:10 ]
工具箱で何が作れるのか聞いてるようなもんだな。

706 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:11:32 ]
>>701
VCはなんでも作れるらから安心しろ。



707 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:30:49 ]
最初、ヴァーチャルストゥディオって読んでました


708 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:38:02 ]
VirtualStdioか
意味は通らなくもない

709 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:33:42 ]
VisualC++2005EEとVisualC++2008EEの違いって何ですか?
教えてください。

710 名前:デフォルトの名無しさん [2009/01/25(日) 16:40:52 ]
VisualC++2008EEのほうが全てに秀でる あと軽い

711 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:49:55 ]
ありがとうございました。
2008インストールしてみます。

712 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:45:42 ]
>>701
会社の業務に関係するシステムを作らされそうなの?
たぶんC#とかVBでやったほうがいいとおもうけど。

713 名前:デフォルトの名無しさん [2009/01/26(月) 23:16:58 ]
ダイアログベースアプリで、ウイザードが生成するコードで、
CXXXDlg::OnPaint()
{
 if(IsIconic())
 {
  処理

って奴あるじゃん。
あのIsIconicのときの処理って走りますか?
何時走るの??
ちなみにモーダルやモードレスの子ダイアログの場合、最小化すると走るらしいけど、
メインウインドの場合は?


714 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:28:03 ]
>>713
MSDNには最小化したら0以外が返るって書いてあるけど、
ダイアログ以外のウインドウだと動作が違うの?

715 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:30:19 ]
そもそも最小化しているときにOnPaintが呼ばれるのか?ということだろ。俺も気になる。

716 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:41:09 ]
てか、最近のVCのウィザードはif(IsIconic())なんてコードを吐くの?




717 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:41:21 ]
int main(void)
{
int a=0, b=99;
Exchange(a,b);
printf("a=%d ,b=%d\n",a,b);
}

int Exchange(int t1, int t2){
int tmp = t2;
t2 = t1;
t1 = tmp;
return t1,t2;
}


上の文では戻り値が返されずa=0,b=90と言う結果が出てしまいます。
どんな時に戻り値が適用され、どんな場合に仮引数、実引数が使われるのかが分かりません。
もしかして2つの値は返されないのでしょうか?
また、これは値渡しと言うものなのでしょうか?
混乱しています。よろしくお願いします。

718 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:42:49 ]
>>715
そうそう、そんな感じ。
ウィザードがわざわざ生成するくらいだから何とかすれば通るような。
でもブレイクポイント設定して何をやってもブレイクしないし。

719 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:45:16 ]
>>717
煽るわけじゃなくて、マジ疑問なんだけど、どういうのを
手本にして勉強してるの?
ネットのサイトとか?

二つの値を返したいときはこうだな。

void Exchange(int* t1, int* t2){
int tmp = *t2;
*t2 = *t1;
*t1 = tmp;
}

int main(void)
{
int a=0, b=99;
Exchange(&a,&b);
printf("a=%d ,b=%d\n",a,b);
}


720 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:46:38 ]
>>718
Win3.1時代の名残りかな?
そのころは、最小化するとタスクバーじゃなくて、アイコン化されてたし。

721 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:49:23 ]
>>720
最小化なのかアイコン化なのかもちょっと気になる。。

このIsIconic()〜のソースってSDIとかなら分かる気がする。

たとえば、親ウインドの中の子ウインドを最小化すると、親画面の左下に小さくなって並ぶじゃん。
あのときに、親ウインドにWM_PAINTが発生すれば、子供にも回ってきて、
子供は自分で自分がアイコンで占有している部分を更新リージョンからくり抜くんでしょ。たぶん。
でもメインウインドのダイアログのOnPaintでIf(IsIconic())って成立するのかな。。


722 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:51:38 ]
__int32と int型ってまったく同一に見られるんですか?
オーバーロードができないんですが。

723 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:54:21 ]
>>721
その場合は、子ウィンドウからしたら、全領域が非クライアント領域のような気がするし、
第一、WS_CLIPCHILDRENを付ければ勝手にやってくれることのような気がする。

724 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:55:14 ]
>>722
そういう仕様。
msdn.microsoft.com/en-us/library/29dh1w7z.aspx
> ..., and __int32 is synonymous with type int.
なお、ここには載っていないけど、__int64もlong longと同じ。

725 名前:722 mailto:sage [2009/01/26(月) 23:56:48 ]
すいません、リサーチ不足でした。
ありがとうございます。

726 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:57:18 ]
>>723
ああ。。確かに。
いったいこのコードなんだろう。誰かご存知のかた、ご回答お待ちしてます。



727 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:58:59 ]
>>719
いや、ポインタを使わずに返すには、こうしたらどうか?
……と、思って書いてみたんですけど…やっぱり無理ですよね。

サンクスです。

728 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:59:43 ]
C++なら参照というものがあってだな……。

729 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:06:10 ]
>>727
構造体を使えばできるけど、Cじゃあんまりやらないな。

struct pair {
int first, second;
};

struct pair swap(int a, int b)
{
struct pair c;
c.first = b;
c.second = a;
return c;
}

730 名前:デフォルトの名無しさん [2009/01/27(火) 00:12:11 ]
VC+++MFCってコントロール少なすぎじゃないですか?
どう見ても、VC#でやったほうが楽なのに、なんでVC++のほうがメジャーなんですか?

731 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:16:13 ]
そりゃ単純にいままでVC++でやってきた連中からしたら
VC#なんか分からん事だらけだからじゃないの?
なんでVC++で簡単にテキストファイル開けたのに
C#でその方法をぐぐらなくっちゃいけないの?
そこまでして移行してご利益がいっぱいあるの?
MSは好都合かもしれないけど。そんなものみんないやなんです。



732 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:16:36 ]
>>730
C#よりも10年近く先に登場した分、資産・ノウハウが貯まっているところが多い。

733 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:22:46 ]
感覚的には、新規の案件はVCよりC#のほうが多いような気がしたけど、
求人サイトで、C++とC#で検索してみたら、まだC++のほうが多かったな。


734 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:24:43 ]
C++と比較したの?それともVC++と比較したの?
C++だけだと、LinuxとかUnixとか組み込みとかあるよ。

735 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:25:27 ]
C#でもWeb系ってたまにないか?

736 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:29:21 ]
>>735
aspで、イントラ作ろうって案件だと、C#かVBだしな。



737 名前:デフォルトの名無しさん [2009/01/27(火) 00:37:49 ]
>>732
その割には使えるコントロールが全くないじゃないですか?
しかも、Viewって一つしかないし・・・

738 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:45:22 ]
>>737
Viewは複数あるじゃん。

739 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:47:41 ]
>>737
コントロールは増えてないってだけでしょ。
MSはVC向けにはわざとそういう便利なライブラリを出さないんだろうね。
おらおらおらおらおらおらおらおらおらおら!!!!!!
さっさとドットネットにいきやがれこんちくしょーーーーーー!!
ってことですね。

おっとつい興奮していつの間にかCapsLockがONになってた

740 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:49:02 ]
>>729
遅スレだけれどmain関数の中を

int main(void)
{
struct pair pair1;

pair1.first = 0;
pair1.second = 90;

swap(pair1.first,pair1.second);


printf("first=%d,second=%d\n",pair1.first,pair1.second);

return 0;
}

と、書いてみた。

駄目だった…。ちょっと思考錯誤してきます。

741 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:51:47 ]
>>739
90年代はActiveXの時代だった。
どっちかというと、VBで使うのが主流だったと思うけど。

742 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:52:33 ]
>>740
pair = swap(1, 2);


743 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:55:12 ]
>>741
ここで言っているコントロールってActiveXのことなん?
もしそうならVCでも使えるんじゃね?

744 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 01:10:28 ]
>>742
サンクスです。構造体に入れるのを忘れるとは…お恥かしい。
面倒な質問だったと思いますが最後まで有難う御座います。

これでひのきのぼうを装備してスライムが倒せそうです。

745 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 02:32:06 ]
>>743
使えるけど、たしか標準ではメニューに入っていないでしょ。

746 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 07:43:04 ]
基本的にはWindows標準のものだけ扱うからね。
でも2008SP1でごっそり増えたじゃない、C#にもまだないようなのが。
まあこれらもWindowsに標準で組み込まれる予定だけど。



747 名前:デフォルトの名無しさん [2009/01/27(火) 18:29:11 ]

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{/*ウインドウクラス構造体の設定*/
HWND hDlgWnd;
//ダイアログボックスを表示します
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);
//戻り値を返す
return 0;
}
このようにモードレスダイアログを表示する関数を宣言しているのですが、一瞬表示されてすぐに消えてしまいます。
どこがおかしいのでしょうか?
ここの記述がおかしいのかはわかりませんが、ご検討をお願いします。


748 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:39:15 ]
>>747
モードレスダイアログは普通のウィンドウのようにメッセージループが必要。

749 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:43:08 ]
UpdateWindow呼んだあとreturnしちゃってるからな。

750 名前:デフォルトの名無しさん [2009/01/27(火) 19:46:16 ]
747です。返信遅れてすみません。
では、WinMainの中に記述してはいけないということでしょうか?
今からいろいろやってみますが、かなりの初心者なので少しヒントを下さい。
お願いします!

751 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:58:16 ]
>>750
メッセージループっていってんだから
メッセージループでググレよウンコ

752 名前:デフォルトの名無しさん [2009/01/27(火) 20:15:28 ]
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{ WNDCLASSEX wcex; //ウィンドウクラス構造体
HWND hDlgWnd;
   MSG msg;
ghInst = hInstance;
/*ウィンドウクラス構造体を設定*/
//ダイアログボックスを表示します
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);
while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
//戻り値を返す
}
という風に書き直したらできました。しかし、このソースおかしいぞと思われたらレスください。
748,749,751さんどうもありがとうございました。



753 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 20:36:45 ]
なんでageてんの?

754 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 22:23:39 ]
VC#みたいな補完機能はないのでしょうか?
毎回Ctrl+Spaceするのはめんどくさいですしセミコロン打っても自動で文字間隔とかを調整してくれませんし不便で仕方ないです
補完でこのスレを抽出するとないと言われていますがそんな馬鹿なことはないですよね?

755 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:12:01 ]
ない

756 名前:デフォルトの名無しさん [2009/01/28(水) 00:07:12 ]
VC++にはWPFがないのはなぜ?

もしかして、見放された?





757 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 00:20:17 ]
お前はC++を何だと思ってるんだ
アーキテクチャ考えれば無いのは当たり前

758 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 00:38:43 ]
>>755
そうですか・・・ありがとうございました

759 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 00:40:33 ]
つまり.NETに移行するって事は標準の言語ではなく
マイクロソフトのツールを使わせる戦略なの。
マイクロソフトにとってオープンソースや標準というものは金儲けの邪魔なのだ。
もちろん自分が好き勝手に決められる標準なら大好きだ。

760 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 01:01:13 ]
>>756
なんかのインタビューでC++はそういう用途のものじゃないから、って言っていた気がするが
見つけらんなかった。すまん。

761 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 02:19:59 ]
>>759
マイクロソフトの戦略というのは確かだが、
何でもかんでも決め付けるはどうかと

762 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 10:09:07 ]
>>739
MFCフューチャーパックなるものがリリースされて、
コントロールが10年ぶりくらいに刷新されたと聞いたけど、
あれ、どうなんだろう?
VS2003使いだから、導入したくても導入できない

763 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:24:19 ]
VC++2005Standard Editionにはmicrosoft platform SDKは同梱されていますか?

764 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:40:56 ]
>>763
されてるよ


765 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:45:18 ]
>>764
ありがとうございます

766 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:23:17 ]
>>763-765
>>763-765


























ttp://www.microsoft.com/japan/msdn/vstudio/express/2005/visualc/usingpsdk/

ttp://www.microsoft.com/japan/msdn/vstudio/express/default.aspx



767 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:29:21 ]
>VC++2005Standard Editionにはmicrosoft platform SDKは同梱されていますか?

768 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:00:05 ]
>>766
ExpressじゃなくてStandardの話をしている


769 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:45:30 ]
>>762
あれはコントロールってレベルじゃない。
www.atmarkit.co.jp/fdotnet/special/vs2008sp1/vs2008sp1_02.html

770 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:23:57 ]
>>766
すごい赤っ恥だな 俺だったら軽く鬱になる

771 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:47:54 ]
>>766みたいにオッチョコチョイの癖にカッコつけて言葉が少ない奴って
しょーもねー勘違いで、一人で変な方向に突っ走ってプロジェクトの火種くすぶらせるんだろーな。


772 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 10:47:04 ]
江戸っ子なんだろうw

773 名前:デフォルトの名無しさん [2009/01/29(木) 11:37:35 ]
アプリケーション開始とともにモードレスダイアログを2つ起動させたいのですが、どのような記述をすればいいのかがわかりません。
インスタンスハンドルが2つ必要なのでしょうか?
さっぱり分からないのでお願いします

774 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 11:39:29 ]
1個はできてるの?
ためしに、単にCreateDialogを2回呼んでみては。

775 名前:デフォルトの名無しさん [2009/01/29(木) 12:07:05 ]
1個は表示されてます。
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
hDlg = hDlgWnd;
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);

while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
ghInst = (HINSTANCE)GetWindowLong( hDlg , GWL_HINSTANCE ) ;
//ghInst = GetModuleHandle(NULL) ;
hDlgWnd2 = CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG2),hDlg,(DLGPROC)DlgWndProc);
hDlg2 = hDlgWnd2;
ShowWindow(hDlgWnd2, SW_SHOW);
UpdateWindow(hDlgWnd2);
while (GetMessage(&msg2, NULL, 0, 0) > 0) {
TranslateMessage(&msg2);
DispatchMessage(&msg2);
}

return (int)msg.wParam;

}

このように記述しています

776 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:11:07 ]
何でメッセージループが複数あるのさ。
同時ならループの前で2回作れ



777 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:16:40 ]
メッセージループの何たるかを知らずにコピペでプログラムを作る人間か…

778 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:18:21 ]
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
hDlg = hDlgWnd;
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);

ghInst = (HINSTANCE)GetWindowLong( hDlg , GWL_HINSTANCE ) ;
hDlgWnd2 = CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG2),hDlg,(DLGPROC)DlgWndProc);
hDlg2 = hDlgWnd2;
ShowWindow(hDlgWnd2, SW_SHOW);
UpdateWindow(hDlgWnd2);
while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return (int)msg.wParam;
//戻り値を返す
//return 0;
}

このように記述したらダイアログ2つともでました!
ですが、2つめのダイアログの表示が1つめのレイアウトとかぶってしまいました。色とか線が2つめのダイアログにも影響を与えています。


779 名前:デフォルトの名無しさん [2009/01/29(木) 15:50:33 ]
Webブラウザコントーロールのバージョンはいくつになるんですか?
自分のマシンにIE7が入っていればIEコンポーネントを埋め込んだアプリを起動したときIE7として起動するんですか?

780 名前:778 mailto:sage [2009/01/29(木) 16:00:51 ]
解決しました。お答えくださったかたがたありがとうございました。

781 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 16:08:31 ]
どうでもいいけど、GetMessageが0以外の値として-2以下を返すときってないの?

782 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 16:19:34 ]
それより

警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。

while (GetMessage(lpMsg, hWnd, 0, 0)) ...

と書いてるくせにVisual C++の自動作成されたやつはしっかりそうなっているという矛盾


783 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:26:06 ]
long long型の数値を入力するときは、
VC++ではfgets→atollができないので、
scanfを使うしかないのでしょうか?

784 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:30:17 ]
long long atoll(char *str){
long long result = 0;
int negative=0;

while (*str == ' ' || *str == '\t')
str++;
if (*str == '+')
str++;
else if (*str == '-') {
negative = 1;
str++;
}

while (*str >= '0' && *str <= '9') {
result = (result*10) - (*str++ - '0');
}

return negative ? result : -result;
}


785 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:30:56 ]
>>784
ありがとうございます。
ぐへへへへ、これであんなことやこんなことができる。

786 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:33:25 ]
_atoi64



787 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:36:17 ]
>>785
何だか分からんが
とりあえず通報しておいた

788 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:56:38 ]
なぜか負になる不思議!

789 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:46:27 ]
すまん、ホリデーってなん曜日だったっけ?

790 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 01:24:22 ]
給料日だよ

791 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 06:55:22 ]
俺は毎日がホリデイ

792 名前:デフォルトの名無しさん [2009/01/31(土) 04:49:26 ]
CreateWindow()でNULLが返るのですが、どうやってデバッグすればよいですか?
(どの変数がおかしいのか、とか、、)

793 名前:デフォルトの名無しさん [2009/01/31(土) 04:54:41 ]
テンパってます。助けてぇ〜

794 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 05:01:11 ]
CreateWindowにブレークポイント設定してそこまでの変数が
期待通りの値になっているか確認したら
うまいやり方は玄人が来るまで待て

795 名前:デフォルトの名無しさん [2009/01/31(土) 05:10:14 ]
794
ありがと。それはやってるけど、何が正常なのかよくわからないです。
理由を

796 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 05:29:15 ]
CreateWindowから前の命令についてMSDN引きながら
どういう値が戻るのか、渡すのが正しいのか確認しなよ
それも出来ないならエスパーが来るまで2時間程寝たら?
今のテンパってる状態では何かやってもうまくいかないさ



797 名前:デフォルトの名無しさん [2009/01/31(土) 05:35:25 ]
<例>cin >> a >> b >> c;
scanfを使って一行で表すにはどうしたらいいですか?

798 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:38:18 ]
まずGetLastError()をだな

799 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:44:20 ]
>>795
GetLastError();

800 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:48:18 ]
じゃ、俺も
GetLastError()


801 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:29:08 ]
プロジェクトをテンプレートから作成するとき
空のプロジェクトとWin32コンソールアプリケーションとでは
どこがどのように異なるのでしょうか。
VC++は2008 Expressです。

802 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:40:57 ]
質問です。
初心者でもひろってくれる会社はないですか?

803 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:43:21 ]
>>801
Win32コンソールアプリケーションだとmain関数入りのソースファイルが初めから追加済み。
空のプロジェクトは本当に空っぽ。

804 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:13:58 ]
自分でプロジェクト作って見ればいいだけだろ
お前のVC++は2008 Expressは飾りか?

805 名前:デフォルトの名無しさん [2009/02/01(日) 13:39:52 ]
すいません、昨日の明け方カキコしたものです。ちょっと前まで寝てました。
なんでCreateWindow()でNULLが返るのか分かりました。WinProc()のWM_CREATEの中で
変なことやってました。早く寝るべきだったス。
ありがとうございました。


806 名前:デフォルトの名無しさん [2009/02/01(日) 13:46:36 ]
>>802
ないです。



807 名前:デフォルトの名無しさん [2009/02/01(日) 13:47:54 ]
>>797
int a, b, c;
scanf("%d%d%d", &a, &b, &c);

808 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 19:23:23 ]
>>802
求人サイトで、未経験者可の会社さがせ。

809 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:02:25 ]
けどそういう会社ってブラックな所多いよね。

810 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:38:39 ]
地元で自宅通勤できるならデジドカでもおkだけど、
県外に出てまでデジドカにはなりたくないな。

ところで情報工学科に受かったが、入学前の間このままVCで遊んでいればおk?

811 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:47:15 ]
何もしなくても問題ないと思うけどね
TOEICとか英語の資格取る勉強とかすれば?って気がする

812 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:19:10 ]
スレチなのに回答Thanks!
確かに、何も知らない人にも最初から教えてくれるはずだからな。

813 名前:デフォルトの名無しさん [2009/02/01(日) 22:44:30 ]
>>810
私立の情報工学科なんて専門学校と同じだろ?


814 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:52:43 ]
国立だとどうなの?

815 名前:デフォルトの名無しさん [2009/02/01(日) 22:55:19 ]
国立でも旧帝以外なら屑

816 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:13:57 ]
ダイアログコントロールのプロパティ[Visible]をfalseって裏では何を設定してるんですか?



817 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:21:52 ]
英語と苦手だったら数学の復習でもしてれば?
後は仕様書きちんと書いてからソフトを作ってみると良い経験になるかな

818 名前:デフォルトの名無しさん [2009/02/04(水) 01:03:58 ]
いままで、動いていたプログラムが
サービスパック入れたとたん120個エラー。
しかも触ったことも無いヘッダファイルから・・・
 
・・・・orz

こういうことって良くあるんでつか?

819 名前:デフォルトの名無しさん [2009/02/04(水) 01:34:26 ]
VC+++MFCって画面の作り方がさっぱりわかりません

ダイアログベースにするとしょぼいコントロールが数個あるだけで・・・
ドキュメントビューにすると、全く画面が作れないし・・・

どうやってつくるのか、いいHPあったら教えてください

820 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 01:59:41 ]
質問させてください。

数値のデータが列挙された Excelデータがあります。内容は、IDと、00 や、 02など
見た目では分かりにくいデータです。

Windows SDKを使用して、Excelの値の意味を画面表示することが目的のプログラムを
作成しようと調査しています。

そこで、Accessのデータベースと、Excelのパラメータを比較して画面出力する処理を
考えていますが、そもそもWindows SDKを使って、mdbと接続できるのでしょうか?

821 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:26:06 ]
Windows SDKとは関係ありません。
バイナリファイルに自分でアクセスする処理を作って下さい。

822 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 03:03:19 ]
生APIの海の世界へようこそ 君が今まで居た場所は池にすぎない

823 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 08:27:33 ]
いや、mdbと接続っていうならバイナリアクセスじゃなくて
com使ってexcelやaccessと接続するんじゃないの

office オートメーション

あたりでのキーワードでググってみたら?

824 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:43:22 ]
自分はADO使うんだと思った。

825 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:29:12 ]
VC++ならDAOでも ADOとDAOは用途似てる上に略式名がふざけすぎていると思うw

826 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 20:33:51 ]
>>819
ダイアログアプリにして
ぺたぺたコントロールを貼り付けていく



827 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:18:03 ]
確かにDialogベースアプリはしょぼい概観。
SDIとかMDIはめんどくさいしほとんど使う価値無し。

最近のアプリ(ウイルスソフトとか)って概観がWebページみたいな感じじゃないですか?
ああいうのってどうやって作るんだろ。
以前DirectXを使ってボタンを描画するライブラリとか見たことあるけど。


828 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:25:07 ]
スキン 貼り絵

829 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:55:11 ]
>>828
そんな感じなの?
ふーん。


830 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 11:13:48 ]
Diableベースアプリに見えた

831 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:10:28 ]
VS2008でMFCアプリ作ってみたら、すごいことになってたな。

832 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:27:41 ]
SP1のスケルトンだなw

833 名前:デフォルトの名無しさん [2009/02/06(金) 00:08:05 ]
>>831
確かに!
.NET不要じゃね?て思っちまった

834 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:55:01 ]
クラスをまたがる処理がゴミゴミしてきたのでグローバル変数にしようと思うんですが、
なるべくコードの量を減らしたいので、今、すべての.cppでincludeしてあるstdafx.hを使ってなんとかしたいです。

まずCMainFrameをグローバル変数にしたいのですが、
// stdafx.h
extern CMainFrame* g_pMainFrame;

// MainFrame.cpp
#include "stdafx.h"
CMainFrame* g_pMainFrame;
CMainFrame()
{
 g_pMainFrame = this;
}

MainFrame.cpp内でグローバル変数を宣言しているのにexternするのは変化もしれませんが、
すべてのファイルで共有するのでこれでエラーが出ないようにしたいんです。
どうすればいいでしょうか?

835 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 09:03:48 ]
プリコンパイルヘッダー使ってるならstdafx.h使うのは無理じゃない?
あまりそれ使うのはお勧めしないが、
MainFrame.cppだけプリコンパイルヘッダーはずしてstdafx.hインクルード前に#define入れて
#ifdefでextern宣言飛ばすようにするとか。

836 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:21:44 ]
>>834
#define CxxxApp::GetMainWnd() g_pMainFrame

CMainFrame* CxxxApp::GetMainWnd()
{
return DYNAMINC_DOWNCAST( CMainFrame, m_pMainWnd);
}



837 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:25:17 ]
DYNAMINC_DOWNCAST → DYNAMIC_DOWNCAST

class CxxxApp
{
public:
CMainFrame* GetMainWnd();
}

838 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:29:10 ]
いかん。

#define CxxxApp::GetMainWnd() g_pMainFrame → #define theApp.GetMainWnd() g_pMainFrame


839 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:36:29 ]
MFC使ってるのに少しぐらいコードの量減らしたってほとんど意味ない

840 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:45:30 ]
>まずCMainFrameをグローバル変数にしたいのですが、

ってあるからそれ以外にもあるのだろうね、大量にw

841 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 14:32:49 ]
そうなんです、大量にあるんです。
コードの量を減らすのは見やすいようにするためなんですが、なるべく同じ関数は2度と呼び出さなくてもいいように
確保しておきたいんです。ループの中とかでも頻繁にクラス間のメンバ参照を使うので馬鹿にできないんです。
全ファイルにインクルードするのが面倒というか、増えていくファイルで自動で追加されるstdafx.hにglobal.hをインクルードしておくだけにしたいんです。

で1行は必ず自分のポインタを格納したグローバル変数をもう一度externするのをさけたいんです。
#defineで既にexternされている場合か、宣言が既にある場合はその行だけ飛ばすにはどうかけばいいんでしょうか?


842 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:22:23 ]
CMainFrameはたとえが悪かったな。AfxGetMainWndとかあるしな。
global.cpp をつくり変数はそこで定義すればいいじゃない。

よくやる手段としては、ヘッダファイルで
#ifdef EXTERN
#define EXTERN extern
#endif
とかやっといて、cpp1つだけインクルードの前に#define EXTERNとかやる。
stdafx.hを使うのであればmそのcppはプリコンパイルヘッダーを使わない設定にしないとならない。

843 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:22:49 ]
>>841
>>836 以降を実行しろ。グローバル変数になんぞする必要もない。

844 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:23:01 ]
#ifdef EXTERN じゃなくて#ifndef EXTERN だった

845 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:30:44 ]
グローバルはCWinApp派生クラスに一任だぜ 
WindApp派生クラスのヘッダファイルにextern theAppがあるだろ?

846 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:55:21 ]
もしかしてexternって、書いたファイルでその宣言を使える用にするんじゃなくて
externが書いてあるファイルをインクルードしておけば、どのファイルからでも使えるようになるんですか?



847 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:03:01 ]
まずインクルードのこと、翻訳単位について勉強だな

848 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:16:01 ]
すまん、本をもう一度読んでからレスを読み返してみるよ
みんなありがとう

849 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:29:21 ]
わかりました。グローバルファイルを別に作る必要すらなかったです。
externの意味を間違えていたのが原因でしたすいません!

// .hのクラスの外(グローバル領域)
extern CMainFrame* g_pMainFrame;

// .hのクラスの中
CMainFrame* g_pMainFrame;

// .cppのCMainFrameのコンストラクタ
g_pMainFrame = this;


850 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:41:10 ]
やばい振り出しに戻った

851 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 18:12:17 ]
そもそもグローバル変数にしなきゃならんような設計が間違い

852 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 19:59:56 ]
中途半端にコードだすから・・・
何度こういうケースを見たことか。

853 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 21:51:31 ]
VC++ 6.0 使ってます。
スレッドを生成するのに、JavaのThreadクラスのようなものは無いのでしょうか?

854 名前:デフォルトの名無しさん [2009/02/06(金) 21:52:58 ]
CThread

855 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:19:20 ]
MFCごときで作るアプリなんざ、グローバル変数使ったって全然もんだいない。
じゃんじゃん使え。CWinAppの派生クラスに押し込めるとか、そんな糞めんどくさいことするな。
あとアクセス関数とか全然必要ないよ。
全部変数はパブリック。楽で良いぞ。

856 名前:853 mailto:sage [2009/02/06(金) 23:19:37 ]
>>854
ありがとうです。
CThreadはCWinThreadを継承して自分で作るってことですか?
調べてみたらこんなのしかなかったんですが、この方法でよいのでしょうか・・・?
www.tri-field.com/progtips/tips04.html
hp.vector.co.jp/authors/VA014436/prg_memo/windows/vctips/039.html
www.edita.jp/h1ro/one/h1ro8125407.html



857 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:41:56 ]
_beginthreadexつかえ。

858 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:52:15 ]
物凄く初歩的かつ大雑把な質問なのですが、
システムの処理上sqrtやcos,sinをかなり使っていて、
これらの処理が重いということは知っていたのですが、
「最近のPCだと、もちろん重いことには重いがそれほど四則計算と変わりない」と聞きました
実際のところはどうなのですか?

859 名前:デフォルトの名無しさん [2009/02/06(金) 23:54:55 ]
最近のマシンで動作する3Dゲームを見れば分かる。
アレだけたくさんのポリゴンを計算し、それらの表面の光沢を表現し
その膨大な演算を一瞬にしてこなしているだろ?
だから早いんだよ



860 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:57:03 ]
確かにそうですね。
最近は2次元の計算作業なんて多少無理しても大丈夫なレベルになってるんですね。
ありがとうございます。

861 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 00:03:24 ]
>>860
自分のための処理であるのなら実際に自分が使用する環境で実測してみることをお勧めする
処理速度や計算機リソースをどの程度消費するかなどは結局のところ実際に計ってみないと議論できない面がある
実際に行いたい処理から規模をスケールダウンして実測してみてそこから外挿してそれが無理な処理か大丈夫なレベルか判断

862 名前:デフォルトの名無しさん [2009/02/07(土) 00:17:32 ]
計算機なんて20年ぶりに聞いたw


863 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 04:53:42 ]
FORTRAN屋みたいな奴がいるなw

864 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:16:09 ]
VC2008で操作ミスってソースウィンドウのタブやスペースが
”→”、”・”と表示されるようになったんですが、
元に戻すにはどうしたらいいんでしょうか?

865 名前:デフォルトの名無しさん [2009/02/08(日) 00:24:55 ]
メニューバー→編集→詳細→スペースの表示


866 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:25:25 ]
ageスマン



867 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:25:49 ]
>865
直りました。
ありがとうございます。

868 名前:デフォルトの名無しさん [2009/02/08(日) 20:03:10 ]
VC++9を使いはじめたものです。
タブを押すと押しただけどんどんタブが追加されていくんですが、
これをタブをインデントをそろえるために使えませんでしょうか?
キーボードをEmacsタイプにするのは、ほかのキーバインドもEmacs風になってしまうので、
やめたいです。
よろしくお願いします


869 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 20:29:42 ]
逆に考えるんだ。
「VSのやり方に合わせよう」と考えるんだ。
みんなそうしているよ。

870 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 20:30:13 ]
そこだけ設定抜きだして入れりゃいいじゃんか

871 名前:デフォルトの名無しさん [2009/02/08(日) 20:36:23 ]
>>870
どうやるんスか?

872 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:37:14 ]
これをタブをインデントを

873 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:51:12 ]
>>871
ユーザー設定のコマンドに全部設定あるだろ。
EMACSでやってる欲しい設定だけ拾ってキーに設定するんだよ

874 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:24:54 ]
タブデント!

875 名前:デフォルトの名無しさん [2009/02/09(月) 00:08:29 ]
初心者です。
VC6.0のFormViewで色々実装しています。

ドキュメントクラスのSerialize関数がメニューの[開く][上書き保存][保存]
からしか呼び出されません。

上記のものを消してしまい、後で追加したいのですが何も考えずに追加すると
Serialize関数が呼び出されません。一見[開く]などとたの項目とでは特に
違いがなさそうなのですがSerialize関数を呼び出すにはどうすればよいのでしょうか。


876 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 09:55:03 ]
追加したコマンドIDは消す前と同じかえ?



877 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 09:58:45 ]
別に新規で作って見てみたら?
それでわからなかったら、Serializeにブレークポイント置いておいて
止まったら呼び出し履歴見てみれば。

878 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 15:54:51 ]
VC++6.0のダイアログベースで作成しているのですが
元のダイアログをAとし、別のダイアログBを作成し、AからBにDoModalを行った後、
Bのダイアログのリストビューのアイテムをダブルクリックした時に、
Aのダイアログにもどり、Aにあるスタティックテキストをそのダブルクリックされたアイテムの
名前に変更したいのですが非常に苦戦しております、、

自分が考えていたのはアイテムがダブルクリックされたときに、
アイテムをグローバル変数に突っ込んで CDialog::OnOK();を実行し
元のダイアログに戻った時にデータを突っ込んでUpdateDataをかけようと思っていたのですが、
CDialog::OnOK();で元のダイアログが閉じられたあとにどこに行っているのかがさっぱりで
処理を突っ込めませんでした。

CDialog::OnOK();の後どこにいくのか、また他になにか良い方法はないか
よろしくおねがいします。

879 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 16:15:37 ]
OnOK後はDoModalから返ってくるだろ。
Bのパブリックメンバーにしておいて、DoModalがOK返してきたら
AからBのそのメンバー見ればいいじゃんかよ。

880 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 16:40:04 ]
>>879
あー、言われて見直して10分悩んで見直したら出来ました。
全然頭が回ってないですね自分。

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

881 名前:デフォルトの名無しさん [2009/02/13(金) 01:53:54 ]
windowsでC++の勉強を始めたのですが、Std::coutに出力してもどこにも
出力が出ません。どうすれば表示されますか?

882 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 02:15:57 ]
コンソールアプリケーションのプロジェクトを選べ

883 名前:デフォルトの名無しさん [2009/02/13(金) 02:42:29 ]
ありがとうございます。
windowsアプリケーションを選ぶときは、どうすればいいですか?

884 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 04:15:21 ]
windowsアプリケーションを選べばいんじゃね?

885 名前:デフォルトの名無しさん [2009/02/13(金) 05:44:00 ]
MessageBox()を使えばいいよ。

886 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 10:33:06 ]
>>878です。
先程のプログラムでAからBにDoModalしたのちに、BのDoDataExchangeの最後に、
thread_param param;
param.instance = this;
param.pParam = 0;
m_Thread = AfxBeginThread(thread_entry,¶m,THREAD_PRIORITY_NORMAL);

と実行してスレッドを作成しようとするとエラーが出てプログラムが強制終了してしまいます。
ボタンにして画面が出た後に実行すると出来るのですが、画面に入った後に自動的に実行したいのですが、
どのようしたらよいでしょうか?



887 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 12:24:08 ]
>>886
スレッドにローカル変数のアドレス渡してるのがマズい。
作成されたスレッド側がparamを参照しようとした時に
スレッドを作成した側が既にスコープを抜けてparamが破棄されてる可能性がある。

888 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 13:33:46 ]
>>887
できました!
的確なご指摘ありがとうございました!

889 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:21:07 ]
vc2008 で Intellisense の自動更新を無効にする方法知りませんか?

890 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 14:55:38 ]
Visual C++ 2008 Express Edition
Windoes XP Pro SP3
C++/CLI使用

親ウィンドウで画像ファイルを指定すると、MDIの子ウィンドウで画像を読み込んで表示し、親ウィンドウのズームイン/ズームアウトボタン(またはメニュー)でアクティブな子ウィンドウの画像をウィンドウごと大きくしたり小さくしたりするプログラムを作りました。
子ウィンドウの作成・イメージ読み込み・ズーム処理などを行うクラスと、そのウィンドウをコレクションで複数保持するクラスを作り、クラスライブラリとして作成し、それを親ウィンドウのFormから呼び出す形でプログラミングしました。

複数の画像読み込み、複数の子ウィンドウ表示、ズームイン/ズームアウトなどの処理は正常に動作しています。

この親ウィンドウのメニューに、表示されている複数の子ウィンドウのリストが表示される(一般的なウィンドウメニュー)を追加しました。
方法は簡単で、menuStrip1のMdiWindowListItemプロパティにウィンドウメニューのオブジェクトを代入するだけです(開発環境のプロパティウィンドウから設定しました)。
これも正常に動作して、コードを追加しなくてもウィンドウメニューに画像ファイルを読み込んだ複数の子ウィンドウのタイトルが、メニューに表示されました。

次に続く・・・

891 名前:890 mailto:sage [2009/02/14(土) 14:56:43 ]
ここからが問題です。
子ウィンドウのウィンドウタイトルには、画像のファイル名とズーム倍率が表示されるように作りました。
例:
1つ目の子ウィンドウ「img1001.jpg / 100%」
2つ目の子ウィンドウ「img1002.jpg / 100%」
親ウィンドウのズームイン/ズームアウトボタンを押すと、画像の大きさが変わると同時に、タイトルの倍率の数値も変わります。
例:
1つ目の子ウィンドウをズームインした場合
「img1001.jpg / 120%」
ところが、この状態で親ウィンドウのウィンドウメニューをドロップダウンさせると、ズームインさせる前の状態で表示されてしまいます。

ウィンドウ(W)
1 img1001.jpg / 100%
2 img1002.jpg / 100%

つまり、子ウィンドウのタイトルを変更させても、ウィンドウメニューには反映されません。
しかし、アクティブウィンドウを変えると(別の子ウィンドウをクリックして全面に出すと)反映されます。

例:2つ目の子ウィンドウをクリックした後
ウィンドウ(W)
1 img1001.jpg / 120%
1 img1002.jpg / 100%

やりたいこと:
ズームイン/ズームアウトボタンを押した直後にウィンドウメニューを表示させても、そのウィンドウのタイトルの変更をすぐに反映させたい。

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

892 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:09:19 ]
開発環境
Microsoft Visual Stdio2008
c++ Windowsフォームアプリケーション
textBox1,textBox2,button1を設置して
button1を押すとBox1のひらがなはローマ字に、ローマ字はひらがなに変換して
Box2に入れるようにしたいのですが、ひらがなからローマ字への変換ができません。
自分なりに考えたプログラムを張るのでアドバイスや、
もっと効率のいい方法がありましたら教えていただけると幸いです。

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
String^str1 = textBox1->Text;
String^str2;
int len,i;
len = textBox1->Text->Length;
for(i=0;len>i;i++){
if(str1[i]=='a'){
str2=str2+"あ";
}
else if(str1[i]=='i'){
str2=str2+"い";
}
else if(str1[i]=='u'){
str2=str2+"う";
////////////////////略/////////////////////
}
textBox2->Text = str2;

}

893 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:05:48 ]
あいうえお以外には使えない

894 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:17:18 ]
>>893
分かりにくくてすいません////略////の部分で上記以外のローマ字からひらがなへの
変換(la li lu kya kyu kyoなど)は終わっています
数字や漢字は変換せずに追加されるようになています

895 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:37:14 ]
子音が重なったら、「っ」変換する処理とかは入ってるのだろうか。

896 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:40:28 ]
そういう処理はIMEにまかせて、結果だけ奪え。



897 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:53:50 ]
>>895
はい、「yotto」→「よっと」などですよね?
「ん」も母音か子音かの前かで「nn」と「n」で使い分けているので大丈夫です。

if(str1[i]=='あ')ではif文の中の処理に入れないのでひらがなからローマ字への変換ができないんです、
どうしたらどんなひらがなかによって判断できるようになりますか?

898 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:16:52 ]
シナ製のIMEは、wを連打するとwwwwwになるはず。
偉大なる祖国のFEPだと、っっっっっっwってなる。

899 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:18:20 ]
>>897
str1[i] == L'あ'でできると思う。

900 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:29:48 ]
>>899
なるほど!!おかげさまで無事できました、ありがとうございます。

901 名前:デフォルトの名無しさん [2009/02/15(日) 09:21:53 ]
Source Filesの下に、Main.cppというソースがあって、そこから
Source Filesの隣にあるResource Filesというフォルダの下のHoge.txtファイルを
オープンしたいのですが、
FileOpenFunc(_T("..\\Resource Files\\Hoge.txt"));
と書いてもファイルが見つかりません。どう書けばよいですか?


902 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 11:52:48 ]
実行時のフォルダからのパスを書かなきゃだめだから

903 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 11:58:07 ]
カレントディレクトリからのパスじゃねぇっけ?
たしかファイルダイアログを呼び出すたびにホイホイかわってすっげーぷっつんくる仕様だった希ガス
アクセスするときには必ずフルパス直してアクセスしないとつながんねーとかアリガチ?

904 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 12:07:19 ]
まあ、そういう作りだったらexeのパスを取得してフルパスにした方が確実だな

905 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 12:31:12 ]
GetModuleFileとかそんな感じの、実行ファイル名をフルパスでゲット出来る関数があったはずだから、
それとShlwApiとかそれっぽい名前の関数群を使えばいいかもしれない気がしないでもない。

906 名前:デフォルトの名無しさん [2009/02/15(日) 19:58:59 ]
RegisterClassってなにをやってるんですか?
CreateWindowとRegisterClassって1個にまとめちゃえばいいような気がする。




907 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 20:04:11 ]
>>906
なんかはじめのメインウィンドウ作るときぐらいしか使わない記憶あるけど
俺のきのせい?

908 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 20:19:56 ]
RegisterClassは、Windowsに、「こういうスタイルを登録するよ。名前はUSERね」ってやってるだけ。
次に、CreateWindowで、「こういうウインドウ作ります。スタイルはUSERです」ってWindowsに通知する。
CreateWindowで、STATIC とか、EDIT って指定するだろ?アレは、そういうスタイルがWindowsが持ってるわけだ。
RegisterClassで指定してるのは、これから使う、ユーザ独自のスタイル。
んなもんWindowsのしったこっちゃないから、あらかじめ登録しちゃうわけ。
CreateWindowで、RegisterClassで登録した名前を指定するのはそういうわけ。登録して、使う。


909 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 21:12:57 ]
ようするに1つのクラスをテンプレートにして、いくつものウィンドウを作れる。
だから別々に分かれている。

910 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 01:53:46 ]
RegisterClassはウィンドウの動作に関する事を指定する
CreateWindowはウィンドウの見た目に関する事を指定する

911 名前:初心者 [2009/02/16(月) 02:23:14 ]
「botton1をクリックしたとき、〜する」っていうような、コードを教えてください。
ほんとに、初心者ですみません。

912 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 02:36:41 ]
ボタンを貼り付ける。
そんで、そのボタンをダブルクリックする。
生成されたコードの中に処理を書く

913 名前:初心者 [2009/02/16(月) 02:50:39 ]
コードをkwskお願いします

914 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 02:56:20 ]
ダイアログベースの場合は上記の通り。
ボタンをはっつけて、それをダブルクリックするだけで勝手にコードが自動生成される。
んで、そこに書き込む。

WinAppの場合は、ウインドプロシージャでやる。
詳しくはここを読め。
homepage2.nifty.com/c_lang/sdk/sdk_28.htm


915 名前:初心者 [2009/02/16(月) 03:07:57 ]
すみません、説明不足でした。
if型で、「botton1をクリックしたときに、〜する」というコードです。
ほんとに、すみません

916 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:10:02 ]
とりあえずボタンをダブルクリックするまでやってみなよ



917 名前:初心者 [2009/02/16(月) 03:14:22 ]
botton1と、botton2があり、それを選んでbotton3を押すと、
それぞれ動き方が違うというプログラムを作りたいです。

918 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:32:01 ]
ん?IF型ってなぁに?
まずダイアログベースアプリなのか、SDIアプリケーションなのか、Win32アプリケーションなのか、
それ以外なのかちゃんと書こうぜ。

919 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:44:40 ]
ボタンを選択するってことはラジオボタン?
もしかしてこんなかんじかな?

IDC_RADIO1、2はラジオボタンで、スタイルがプッシュボタン型。
で、通常のボタン(ボタン3)を押した場合の処理が以下。(名前はOnBnClickedButton1だけどな)

void CzzzDlg::OnBnClickedButton1()
{
  // TODO : ここにコントロール通知ハンドラ コードを追加します。
  if( ((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck() == TRUE )
  {
    MessageBox("Radio1");
  }
  else if( ((CButton *)GetDlgItem(IDC_RADIO2))->GetCheck() == TRUE )
  {
    MessageBox("Radio2");
  }
}


920 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:47:10 ]
あ、間違えた^^;
== TRUEではなくて、== BST_CHECKED だな。


921 名前:初心者 [2009/02/16(月) 06:50:13 ]
説明不足が多く、すみませんでした。
>>919
ありがとうございました!!

922 名前:デフォルトの名無しさん [2009/02/16(月) 10:01:49 ]
textBox1 の「1」の部分に変数を使いたいのですが
方法が分かりません ><

923 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 10:30:44 ]
フォーム?MFC?

924 名前:デフォルトの名無しさん [2009/02/16(月) 10:32:33 ]
フォームです

925 名前:デフォルトの名無しさん [2009/02/16(月) 11:07:02 ]
>>908-910
すげぇ、、、
説明がすぅっと頭に入ってきました。
Win32の達人の方ですね。


926 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 11:07:29 ]
array<System::Windows::Forms::TextBox^>^ textBox;
でメンバー持っておいて、
this->textBox = gcnew array<System::Windows::Forms::TextBox^>(2);
してから
this->textBox[0] = textBox1;
this->textBox[1] = textBox2;
するとか。



927 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 11:17:47 ]
>>926
うーむ。なるほど

ここに、変数を使うのは、あまり一般的ではないですか?

928 名前:デフォルトの名無しさん [2009/02/16(月) 11:25:13 ]
>>926
あ。ありがとうございました!

929 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:37:54 ]
Visual C++ 6.0
Windoes XP Pro SP3
を使用しています。

グローバルに構造体を作って、クラス内でexturnをしようすると、
exturnのところでエラーが出て怒られてしまいます。
グローバルでの定義部分ではエラーは出てないものの、ちゃんと出来ているかも正直怪しいかもしれません。
何か良い方法は無いでしょうか?

930 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:38:16 ]
Visual C++ 6.0
Windoes XP Pro SP3
を使用しています。

グローバルに構造体を作って、クラス内でexturnをしようすると、
exturnのところでエラーが出て怒られてしまいます。
グローバルでの定義部分ではエラーは出てないものの、ちゃんと出来ているかも正直怪しいかもしれません。
何か良い方法は無いでしょうか?

931 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:39:04 ]
すいません、二重書き込みしてしまいました…

932 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:41:01 ]
しかもexternだろw

言いたいことがよくわからん。
どんなコードなんだ?

933 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:10:00 ]
>>932
すいません、externでした。

グローバルに
struct st{
char id[ID_SIZE];
char name[NAME_SIZE];
struct st *next;
};
と定義して、それをクラスAやクラスBで
extern struct st{
char id[ID_SIZE];
char name[NAME_SIZE];
struct st *next;
};
とすると、まず「空白の宣言が見つかりました。」というエラーが出て止まってしまいます。

拙い説明で申し訳ないです。

934 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:23:03 ]
まだわかんねー。
何がやりたいんだ。
構造体の定義と、変数の宣言とその変数のextern宣言が必要だが、そもそも変数(実体)がない。

935 名前:デフォルトの名無しさん [2009/02/16(月) 18:29:52 ]
#include "st.h"
でいいんじゃないの?何がしたいのかまったくもってわからない。

936 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:30:27 ]
ageスマソ



937 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:10:08 ]
externでぐぐるぐらいしてから来たらいかがですかね
定義、宣言、参照について全く理解していない気がします。

938 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:10:14 ]
グローバルに構造体の型を宣言しています。
さらに、実体もグローバルに定義しています。

実体に値が入っていて、
その値をスレッド内でグローバルで定義した実体を通して
参照したいです。

グローバル変数を使う知識として、
externを付けることは知っているのですが、
そもそも、スレッド内からグローバルに定義した
構造体にアクセスできるかどうかわかりません。

何か方法がありましたら、教えてください。

>>935
やってみたのですが、そのようなヘッダはありませんと怒られてしまいました。

939 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:14:55 ]
あと、拙い説明にもかかわらず
ご返事いただきありがとうございます。

>>937
結構ぐぐったのですが私の理解力が足らず申し訳ございません・・・

940 名前:935 mailto:sage [2009/02/16(月) 19:15:48 ]
// FILE : st.h
struct st { ... };
extern st g_st;

// FILE : st.cpp
#incluede "st.h"
st g_st;

// FILE : a.h
#include "st.h"
class A { ... };

ってことね。とりあえず何を参考に勉強してるのかしりたい。

941 名前:デフォルトの名無しさん [2009/02/16(月) 20:08:02 ]
すいません、聞きたいのですが。。。
Windowsファームアプリケーションを作成したのですが、ほかのPCで動作しません。
「このアプリケーションの構成が正しく・・・」と表示されます。
リリースコンパイルもしましたが動きません。
「プロパティ」の「C++」の「コード生成」の「ランタイムライブラリ」を「マルチスレッド」にすると、コンパイルすることができません。
いったいどうすれば動くのでしょうか?
ほかのPCに、ランタイムを入れない方法を探しています。
お願いします。

942 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 20:34:19 ]
>>941
×ファーム
○フォーム

純粋なWin32アプリや標準ライブラリだけを使うコンソールアプリなら
ライブラリを静的にリンクすればよいと思うけど、
Windowsフォームアプリケーションでランライムに依存しないのは無理じゃないの?

943 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:04:01 ]
> Windowsファームアプリケーション

C++/CLIだったりして・・・。そのPC、.netframework入れてないとかw

944 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 07:42:27 ]
>>941
>ランタイムを入れない方法を探しています。
無理
フォームアプリはランタイム(.NET Framwork)必須


945 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 11:57:12 ]
いろいろ試した結果、パスに日本語が入ってると読み込めないようです
どうすれば読み込めるようになりますか?
char fname[] = "C:\\テスト\\test.txt";
ifstream fin;
fin.open(fname);
char c;
while (fin.get(c)) {
printf("%c", c);
}
fin.close();
if (getch()) return 0;

946 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 12:42:13 ]
locale設定した?



947 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 13:04:17 ]
setlocale(LC_ALL, "japanese");
ifstream fin;
こうすれば読み込めるようになりました、ありがとうございます

948 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 18:05:29 ]
先物の夕場は証券自己とかの約定させる気のない発注・取り消しに個人が振り回されて
値がついてる感じだな

949 名前:デフォルトの名無しさん [2009/02/18(水) 00:28:05 ]
VC++とVB&C#の違いは大まかに言うと
オブジェクト->プロパティ
オブジェクト.プロパティ
という理解でいいんでしょうか?

950 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:29:58 ]
出直して来い

951 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:32:44 ]
すごい理解

952 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 15:46:47 ]
>>949
親読んでこい
説教してやる

953 名前:デフォルトの名無しさん [2009/02/18(水) 17:59:43 ]
VC++ 2005ExpressEditionでWin32アプリ作ってます。

int WINAPI WinMain( HINSTANCE hi, HINSTANCE hip, LPSTR sc, int ic )
{
   MSG    Msg;
   char    *str;
   memset( &Msg, 0, sizeof( MSG ) );


   return ( int )Msg.wParam;
}

strが0xcccccccc<不適切なPtr>となるのはなぜですか。
C++ならstring使えっていう事なんですか?

954 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:01:33 ]
何が疑問なのかわからん。
そのstrは単に初期化してないポインタだからそのままじゃ使えないだろう。

955 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:02:27 ]
strが初期化されていないから不定値。
デバッグ時に0xccで埋められてるだけ。
実際にアプリケーションを動かすと、不定値。

char *str = NULL;
とかで初期化する。

956 名前:デフォルトの名無しさん [2009/02/18(水) 18:10:20 ]
なるほど。
newしてあげれば不適切Ptrではなくなるんですね。
ありがとうございます。


あのぉ。。。もひとつ疑問がでちゃったんですが、いいですか?

newして例外出てんのに期待通りの動作してるのはなぜですか
これが解決できたら1年ぐらいROMしときます。




957 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:26:16 ]
例外の内容によるでしょう。
具体的にコード出してこういう例外が出たと書いてくれないとわからんよ。

958 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:35:51 ]
>>956
>newしてあげれば不適切Ptrではなくなるんですね。
なんもわかってねぇじゃん
まず、入門書と紙と鉛筆用意して全文書き取りからはじめたほうがいいぞ

959 名前:デフォルトの名無しさん [2009/02/18(水) 19:22:49 ]
すいません。3日かかってどうしても直らないエラーがあるので教えて下さい。

ビルドすると、
fatal error C1083: include ファイルを開けません。'afxwin.h': No such file or directory e:\visual studio 2005\projects\キャプチャ\irsystem\stdafx.h 43
というエラーが出ます。
環境は
Visual Studio 2005 Professional Edition sp1
OS:Vistaです。
Visual Stadio Professionalかつフルインストールしているので、
MFCが入っているはずなのですがどうしても動きません。
どなたかわかる方いらっしゃいますでしょうか。
わかる方がいましたら教えて下さい。


960 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:42:35 ]
>>959
うーん、なんかVC2008eeででるんと同じようなエラー内容だなぁ・・・
なんか設定する必要あんのかな?

961 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:43:35 ]
そのinclude文のとこ右クリックして開いてみ
それで見つからないならインクルードパスの設定すればいい

962 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:52:04 ]
ツール - オプション - プロジェクト - VC++ ディレクトリ で
「インクルード ファイル」の設定内容をチェック

バージョンの違いでちょっと文言が違う鴨試練

963 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:03:24 ]
support.microsoft.com/kb/320479/ja

これかなぁ・・・なんか違う?

964 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:25:58 ]
ライブラリのパスの直下のlibファイルはリンクできるのですが、
サブディレクトリのlibファイルは、下記のようにはリンクできないのですか?
OK #pragma comment(lib, "mylib.lib")
NG #pragma comment(lib, "lib/mylib2.lib")

965 名前:デフォルトの名無しさん [2009/02/18(水) 21:48:11 ]
hhj


966 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:07:10 ]
#pragma comment(lib, "lib\\mylib2.lib")



967 名前:964 mailto:sage [2009/02/18(水) 23:03:19 ]
966
もちろんディレクトリ区切りを\\にしてもだめでした。
それにフルパスで記述したときに/で通るので、多分原因はそこではないと思います。
#pragma commentでライブラリファイルを指定するときに、サブディレクトリ内もちゃんと見るんですよね。
とりあえずそこの確認がほしいのです。

968 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:24:34 ]
自分のプログラムとしてはなんかlibに関してはプロジェクトに追加してるかどうかだなぁw
ヘッダ読んでpraguma云々の記述はlibファイルなんかねーとこ指してるけど動いてるw
って状況やってみそ
ヘッダとlibファイルのプロジェクトへの追加な

969 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:40:56 ]
./hoge/lib.lib

とかでもダメぽ?

970 名前:964 mailto:sage [2009/02/19(木) 00:17:33 ]
ファイルの階層はこんな感じです。
C:\MyLibrary  ←VC++ディレクトリ-ライブラリとインクルードの一番上で指定。
  mylib.lib
  lib
    mylib.h (#include <lib/mylib.h>は失敗しない)
    mylib.lib (上では区別のためにmylib2.libと書いたけど、コピーしたもの)
プロジェクト-リンカ-追加の依存ファイルで指定しても

1>LINK : fatal error LNK1104: ファイル 'lib/mylib.lib' を開くことができません。

と出ます。
./lib/mylib.libも同様にpragma でも依存ファイルの指定でも失敗しますorz

971 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 01:19:58 ]
まさか、lib\\mylib.h のなかに #pragma comment(lib, "lib/mylib.lib") って書いている
わけじゃないだろーな

972 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 01:23:57 ]
コンパイルしようとしてるソースファイルはどこなんだよ

973 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 02:03:28 ]
// main.cpp
// マイドキュメント-VS2008-Projects/Test/Test
// = プロジェクトディレクトリ
#include <lib/mylib.h> // OK
#pragma comment(lib, "lib/mylib.lib") // NG
//#pragma comment(lib, "C:/MyLib/lib/mylib.lib") // OK
//#pragma comment(lib, "mylib.lib") // OKだけど違うファイル
int main()
{
const int ret = test_func(2);
return 0;
}

// mylib.h
#pragma once
int test_func(int val);

//mylib.cpp
#include "mylib.h"
int test_func(int val) { return val * 100; }

改行を削るとこのような感じになります。
コンパイルすると970のエラーメッセージが出ます。。。
もう遅いし、解決できそうにないのであきらめてフルパスで書くことにします。
ありがとうございました。

974 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 02:41:48 ]
同名の違うファイルにパスが通ってるのも問題じゃないか

975 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 03:16:25 ]
つーか、自前のlibなら、#pragma comment(lib, "ほにゃらら")は ヘッダに書けよ。
したら、cpp にゃ、ヘッダをインクルードするだけで済むだろーが。

じゃないと、他のプロジェクトで mylib.h を使いまわす時に、lib をリンクし忘れるのがオチだ。

976 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 05:36:29 ]
>>970
あるよ。
以上。
↓次の方どうぞ



977 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:22:48 ]
>>926
このコードの真ん中って、「this->」いらなくない?

978 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:24:50 ]
>>977
TextBoxと紛らわしかったので、説明上念のためつけただけ。

979 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:28:08 ]
>>978
いや、エラーになるでしょ

980 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:36:27 ]
>>978

array<System::Windows::Forms::TextBox^>^ textBox;


ひょっとして、これだけ、違うところに記述するんですか?

981 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:39:54 ]
同じメソッド内に書いたらそこでしか使えないじゃない。
まあそれで済むならそれでいいけど。

982 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:50:06 ]
>>981
すみません。いけました。
ありがとうございます

983 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 20:52:20 ]







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

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

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