■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

★初心者にVisual C++を教えるスレ★ Part16
1 名前:デフォルトの名無しさん :04/11/21 16:27:31
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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

【前スレ】
★初心者にVisual C++を教えるスレ★ Part15
http://pc5.2ch.net/test/read.cgi/tech/1097880265/

過去スレ、関連スレなどは>>2-5ぐらい。


2 名前:デフォルトの名無しさん :04/11/21 16:28:20
【過去スレ】
Part14 http://pc5.2ch.net/test/read.cgi/tech/1093672937/
Part13 http://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12 http://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 http://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 http://pc5.2ch.net/test/read.cgi/tech/1074933908/
Part09 http://pc5.2ch.net/test/read.cgi/tech/1068983609/
Part08 http://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 http://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 http://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 http://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 http://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 http://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html

※「いや〜、ごめんなさい」により、紛失の可能性。


3 名前:デフォルトの名無しさん :04/11/21 16:29:11
【関連スレ】
■ MFC相談室 MFC12.dll■
http://pc5.2ch.net/test/read.cgi/tech/1096848771/l50

Win32API質問箱 Build24
http://pc5.2ch.net/test/read.cgi/tech/1098967135/

鬱だ氏のう DirectX (Part 15)
http://pc5.2ch.net/test/read.cgi/tech/1096649788/l50

C言語なら俺に聞け! Part 95
http://pc5.2ch.net/test/read.cgi/tech/1100951565/

C++相談室 part37
http://pc5.2ch.net/test/read.cgi/tech/1098543578/

プログラマー軍団がC/C++の宿題を解決します 34代目
http://pc5.2ch.net/test/read.cgi/tech/1100530682/

【初心者歓迎】C/C++室 Ver.11【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1099190154/


4 名前:デフォルトの名無しさん :04/11/21 16:29:47
【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/

MSDN ライブラリ
http://www.microsoft.com/japan/msdn/library/

Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

Google
http://www.google.co.jp/

【このスレの前身 VisualC++相談室 過去スレ】
part 1 http://piza.2ch.net/tech/kako/970/970607517.html
part 2 http://piza.2ch.net/tech/kako/981/981630730.html
part 3 http://piza2.2ch.net/tech/kako/993/993186053.html
part 4 http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 http://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 http://pc5.2ch.net/tech/kako/1036/10368/1036897197.html

5 名前:デフォルトの名無しさん :04/11/21 16:38:21

C や C++ の初心者はここじゃなくて、
C や C++ のスレに行った方が適切な回答がもらえるよ


6 名前:デフォルトの名無しさん :04/11/22 00:05:55
おぉ、ようやく立ったか。
乙!>>1

7 名前:デフォルトの名無しさん :04/11/22 09:39:58


8 名前:デフォルトの名無しさん :04/11/23 08:42:24
ファイルサイズの取得で困っています。
void CbitDlg::OnBnClickedButton3()
{
CString ss; OPENFILENAME ofn; char fn[MAX_PATH];
CFile f; int r; DWORD filesize; UINT *d;
fn[0] = '\0';
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.Flags = 0;
ofn.lpstrFile = fn;
ofn.nMaxFile = sizeof(fn);
ofn.lpstrFilter = "テキストファイル(*.txt)\0" "*.TXT\0" "すべてのファイル(*.*)\0" "*.*\0";
ofn.nFilterIndex = 1;
r = GetOpenFileName(&ofn);
if (r) {
if (ofn.Flags & OFN_READONLY) {
}
else {
if(fn == "") return;
if(!f.Open(fn,CFile::modeRead | CFile::typeBinary)) {
AfxMessageBox("読み込みファイルをオープンできません");
return;
}
filesize = FileSize(fn);
ss.Format("%d",filesize);
Edit1.SetWindowText(ss);
}
}
}

9 名前:デフォルトの名無しさん :04/11/23 08:43:30
DWORD CbitDlg::FileSize(LPSTR lpszFileName)
{
DWORDdwFileSize = 0;
HANDLEhFile = CreateFile(
lpszFileName,
GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
if( hFile != INVALID_HANDLE_VALUE )
dwFileSize = GetFileSize( hFile, NULL );
CloseHandle( hFile );

return dwFileSize;
}

10 名前:8-9 :04/11/23 08:47:37
上記を実行するとfilesizeが、自分で実行した限り、必ず0になってしまいます。
void CbitDlg::OnBnClickedButton3()
{
char path[MAX_PATH];
CString fs;
DWORD filesize;

Edit1.GetWindowText(path,MAX_PATH);
filesize = FileSize(path);
fs.Format("%d",filesize);
Edit2.SetWindowText(fs);
return;
}
こういうやり方だと正常に取得できるんですが、もう何がなんだかよくわかりません…

11 名前:デフォルトの名無しさん :04/11/23 10:16:51
HANDLEhFile = CreateFile(

ファイル壊してねえ?

12 名前:8-9 :04/11/23 11:48:23
>>11
あんまり意味を理解しないでやっていたのでよく分からないのですが、
>HANDLEhFile = CreateFile
のところで
GENERIC_READ,
OPEN_EXISTING,
と指定しているので、既存のファイルを読み取りアクセスする、
という風に捉えていたのですが、違うんでしょうか?
こんなことしなくても別のやり方で取得するやり方があるんでしょうか…?

13 名前:デフォルトの名無しさん :04/11/23 15:13:11
とりあえず、
if(fn == "") return; // ほぼ確実にfalse

あと、CFile が ファイルオープンしてるから、(共有フラグを立ててないから)
FileSize() の CreateFileが失敗しているのではないかと思ってみる。

14 名前:デフォルトの名無しさん :04/11/23 19:22:08
コンパイルしたファイルをインクルードされたヘッダファイル
等全て展開されたモノを見ることってできないのでしょうか?
それを見てエラーを特定したいのですが。
その見る行為に当たる専門用語が分からなくて検索しても
見つからないです。(有るのかさえも分からないのですが。。。)
検索語句だけでも教えて頂けませんでしょうか。

15 名前:モウモウ :04/11/23 19:26:49
>>14
コンパイラのオプションで設定する。
VC6 なら /P /EP とかそういうのだったかな。

16 名前:デフォルトの名無しさん :04/11/23 19:38:56
お前が書いたコードが間違ってるに1億ペソ
ライブラリのヘッダまで追いかけてもしょうがないと思う

17 名前:デフォルトの名無しさん :04/11/23 21:43:13
教えてげそ
漏れのVCのデバッグウィンドウにいつも間にか

プロジェクト名: WndProc: hwnd=0x430360, msg = WM_DESTROY (0x0000, 0x00000000)

みたいな出力が出まくって、本来のトレース文が埋もれてしまってデバッグできなくなったの
でつが、これって何が原因なのでつか(´・ω・`)
特に何かした覚えはないのでつが。。。

18 名前:デフォルトの名無しさん :04/11/23 22:56:16
>>15
コンパイラのオプションなんて使った事無かったです。
警告レベルもここで設定できるようで。
他にも興味深そうなことがいろいろある。なんか得した感じです。
下手な説明なのに適切なレスに感謝です。ありがとうございました。

19 名前:デフォルトの名無しさん :04/11/24 19:51:28
引数に文字型って使えますよね…

20 名前:デフォルトの名無しさん :04/11/24 21:09:31
使えますよ…

21 名前:8-9 :04/11/25 07:30:53
>>13
遅レスですがレスありがとうございます!
CFileをオープンする前にCreateFileしてみたら
ちゃんと成功しました。

22 名前:デフォルトの名無しさん :04/11/25 11:29:31
外部で作ったツールバー用のビットマップ(24ビット)をインポートして使おうとしたんですけど
ビットマップのほうにインポートされてしまってツールバーとして認識しないんですが
VCは付属のやつで作ったやつでしかツールバーって作れないんでしょうか?

ちなみにVC++6.0、MFCは使っていません

23 名前:デフォルトの名無しさん :04/11/25 14:36:47
>>22
24ビットはやったことないけど
ビットマップは好きなの使えるよ
デフォルトだとtoolbar.bmpとかいうのがあるから
それを置き換えるとか

24 名前:デフォルトの名無しさん :04/11/25 15:00:30
HDCのサイズを取得しようとしているのですが、
そもそもHDCにはサイズという概念が無いのでしょうか。
無かったら諦めて別の方法にします。

25 名前:デフォルトの名無しさん :04/11/25 15:21:47
HDCはDCのハンドルだからポインタだろう

26 名前:デフォルトの名無しさん :04/11/25 16:32:00
>>24
サイズという概念は無い。
ウィンドウのならGetClientRectとかが代わりになるかも。

>>25
そういう問題じゃないだろう。

27 名前:24 :04/11/25 21:01:57
>>25 >>26
レスどうもありがとうございました。
不可能のようなのでサイズデータを直接持ってきて
取得しました。単純な解決方法ですが...


28 名前:22 :04/11/26 00:18:01
>>23
ありがとうございます
けど、まだうまくいってません・・・

29 名前:デフォルトの名無しさん :04/11/26 13:49:39
VisualC++6.0でDDKに含まれているヘッダファイルをインクルードしたのですが、
インクルードディレクトリの指定は何処でするのでしょうか?
-Ic:\ddk\inc みたいな指定です。

アドバイスお願いします。

30 名前:デフォルトの名無しさん :04/11/26 14:10:47
ハンドルだからポインタ
ハンドルだからポインタ
ハンドルだからポインタ
ハンドルだからポインタ
ハンドルだからポインタ
ハンドルだからポインタ


31 名前:デフォルトの名無しさん :04/11/26 14:12:19
VC++.netについて超初心的な質問です。
OSはXPでWindowフォームアプリケーションってのを使ってるんですが
buttonを押して指定した文字をLabelに表示するプログラム教えてください。
おながいしますorz

32 名前:デフォルトの名無しさん :04/11/26 14:49:57
>>31
めんどくさいからチュートリアル載せてるサイト探すことをお勧め。

33 名前:デフォルトの名無しさん :04/11/26 17:48:45
ツールバーのアイコンを押した後、そのアイコンの背景が凹んで、今アイコンが
選択されてるとわかるようにしたいのですが。
教えてください。

34 名前:デフォルトの名無しさん :04/11/26 18:17:19
UPDATE_COMMAND_UIハンドラに次の2行を追加する。
pCmdUI->Enable( TRUE );
pCmdUI->SetCheck( TRUE );
ハンドラがなければMFCクラスウィザードで作成。

35 名前:デフォルトの名無しさん :04/11/26 18:32:27
>>34
それメニューにチェックつけるんだよね

36 名前:デフォルトの名無しさん :04/11/26 18:37:35
もしツールバーボタンとメニュアイテムが同じ
コマンドID使ってたらチェックつく。

37 名前:デフォルトの名無しさん :04/11/26 19:45:23
はじめまして〜
.net のC++で画面付のDLLの作成をすることになったのですが、
画面呼び出しのexe(MFCアプリ)と画面付DLL(拡張MFCDLL)
を作成したのですが、うまく表示することができません。
どうすればいいか教えてください。

私がしたのは、exeはボタンだけ配置して、DLLの関数の呼び出しを行いました。
呼び出しはこんなかんじ
__declspec(dllexport)void _main_show(void);

DLLの方は画面を作って、
void main_form::main_show(void)
{
main_form::ShowWindow(1);//よくわからないので、とりあえず、1入れてみました
}
この状態で、画面がでてきません。
一応、私がしたことを書きます。
変なことしてると思いますが・・・
DLLの方は、新規作成して、リソースの追加でダイアログを追加して、
エディットボックスを右クリックして、クラスの追加でmain_formを追加しました。
このとき、コンパイルすると、main_form.cppに#include "test1.h"
(プロジェクトの作成時名前がtest1です)
でエラーがでたため、test1.hは新規にMFCアプリをつくってできた
ヘッダーをコピーして貼り付けたら動くようになりました。

basicはちょっとしたことあるけどC++は初めてなのでわからないです。
解決方法をおしえてください。よろしくおねがいします。

38 名前:デフォルトの名無しさん :04/11/26 21:20:25
救いようが無い

39 名前:デフォルトの名無しさん :04/11/26 22:27:57
ものすごく初歩的なことで困ってます・・・
Visual Stdio.netを何故か知らないけど買っちゃったのですが、学校でやる初歩的なプログラム(?)の実行方法がわかりません
こんな感じのプログラムです
#include <stdio.h>
main()

{
   /*変数の宣言*/
   int ten;
   printf("点数を入れてください ");
   scanf("%d", &ten);
   if( ten>=60 )    printf("合格");
   else if(ten>=30) printf("再試験");
   else printf("不合格");
}
どうしたらいいか教えてください


40 名前:デフォルトの名無しさん :04/11/26 22:31:29
マニュアルを読め、F5を押せ、吊ってこい

41 名前:デフォルトの名無しさん :04/11/26 22:35:33
>>39
そんなゴミつくるのにわざわざ金出して買ったのか
そのレベルなら無料のやつでおつりが来るぞ

42 名前:デフォルトの名無しさん :04/11/27 00:21:28
「とりあえず、1入れてみました」っていう発想が面白い...

43 名前:デフォルトの名無しさん :04/11/27 12:23:15
iという変数をファイルに保存したいのですが
int i;
HFILE hfl;
DWORD readsize,writesize;
hfl=CreateFile("D:\\fl",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,
NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
ReadFile(hfl,&i,sizeof(i),&readsize,NULL);
(この間にiの値をいじる)
WriteFile(hfl,&i,sizeof(i),&writesize,NULL);
CloseHandle(hfl);

とやると初めてプログラムを終了したときのiの値は保存されるのですが
2回目以降の終了時の値が保存されない(1回目のまま)のですがどこが間違っているのでしょうか?

44 名前:デフォルトの名無しさん :04/11/27 13:14:39
>>43
全然関係ないがCreateFileはHANDLE型を返すからhflもHANDLE型にしろ。


45 名前:43 :04/11/27 13:21:53
ああ、書き間違えました。ちゃんとHANDLE型にしてます。

46 名前:デフォルトの名無しさん :04/11/27 17:03:15
>>43
> (この間にiの値をいじる)
でiが変わってないと予想

47 名前:デフォルトの名無しさん :04/11/27 21:58:06
#import "C:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL"
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "C:\U\Office10\Office10\EXCEL.EXE" \
  rename("DialogBox", "DialogBoxForExcel") \
  rename("RGB", "RGBForExcel")
のように記述し、VC でExcel 操作のツールを作成しています。

これを会社で使いたい(単に自分用に)と思うのですが、実は環境が
・自宅のPC:OfficeXP
・会社の自分のPC:Office2000
なのです。
このツールは、会社のPC でも動くのでしょうか?
それとも会社のPCでコンパイルし直さないと動かないでしょうか?

現在、会社の自分のPCはまだ来ておらず、試せない状況です。
また、この自作ツールを会社のPCで使うこと自体はOKですが、
コンパイラ(VC)を入れるのはNGといわれました。

48 名前:47 :04/11/27 22:07:42
<補足>
vbs や js などでは、
ExcelApp = new ActiveXObject("Excel.Application");
のように記述すれば、Office のバージョンを問わすにある程度は動くと思います。

VC でもこのような、Office のバージョンを問わすに記述することは
可能でしょうか?
上記の #import に書く方法だと、Office10(XP)限定のような気がして、
Office9(2000)の環境で動くか心配だというのが質問の主旨です。

長くなりすみません。

49 名前:43 :04/11/27 22:51:49
>>46
いや、それだと一回目(の保存)はうまくいく説明がつきません。

50 名前:デフォルトの名無しさん :04/11/27 23:11:38
>>49
2回目以降も書いてるが、値が変わってないので変化が無く
保存されているように見えない、ってことじゃないのか?

51 名前:デフォルトの名無しさん :04/11/28 02:16:27
>>47
ttp://www.attain-sys.com/vc/excel/import/expcom/expcom.html

52 名前:デフォルトの名無しさん :04/11/28 14:16:06
ウィンドウプロシージャってどこ呼ばれているんですか?
CALL BACKって割り込みのことだろうと思うんですが、いつ割り込んで来るんでくるんでしょうか。
猫でも分かるプログラミング見たけど、流れがつかめない僕は猫以下かもしれません。

53 名前:デフォルトの名無しさん :04/11/28 14:29:47
>>52
メッセージ

54 名前:デフォルトの名無しさん :04/11/28 15:05:07
DispatchMessage?

55 名前:デフォルトの名無しさん :04/11/28 17:47:29
>>52
ウィンドウプロシージャはWindowsが呼び出す。だからCALLBACK

56 名前:デフォルトの名無しさん :04/11/28 18:35:47
猫以下も猫以上も無いと思う。人間と動物の比較なんて無意味。
プログラムのことで猫を持ち出すなんて、
話のネタにされた猫族は陰口を叩かれているようなもの。
ネコクン「プログラムやるのは勝手だけど、それをボクら
とくらべるなんてあんまりだよ。」

独り言なんで、気を悪くしないで。。。

57 名前:デフォルトの名無しさん :04/11/28 19:29:21
>>55
けど、DispatchMessageでウィンドウプロシージャに送るって書いてあったよ。

58 名前:デフォルトの名無しさん :04/11/28 21:09:58
>>57
postされたメッセージはそうだけどsendされたメッセージは違う。

59 名前:デフォルトの名無しさん :04/11/29 00:17:56
んー・・・今一つ分からないんですが、メッセージキューってのは、
各ウィンドウに領域が確保されているんものなんですか?

60 名前:デフォルトの名無しさん :04/11/29 00:40:59
>>59
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/aboutmessagesandmessagequeues.asp

61 名前:デフォルトの名無しさん :04/11/29 02:34:36
英語がわかるほどの頭なら、ここまで苦労してません。
誰か和訳お願いします。

62 名前:デフォルトの名無しさん :04/11/29 08:40:35
>>61
アメリカ人ならガキでも読める。つまりあんたはガキ以下か。

63 名前:デフォルトの名無しさん :04/11/29 09:08:38
アメリカ人のガキは読めても理解できないがな。

64 名前:デフォルトの名無しさん :04/11/29 09:22:13
VC++.NET2003です。

MFCアプリケーションを作ろうと思うのですが、
ウィザードからプロジェクトを生成すると必ずウィンドウが
ついてきますよね?(SDI or MDI or ダイアログ)
ウィンドウを無くすのにいい方法はありませんか?

65 名前:デフォルトの名無しさん :04/11/29 09:34:35
>>64
ttp://www31.ocn.ne.jp/~yoshio2/vcmemo6-1.html

66 名前:デフォルトの名無しさん :04/11/29 09:41:30
ここは★初心者にVisual C++を教えるスレ★じゃなかったの?

67 名前:デフォルトの名無しさん :04/11/29 11:09:07
>>66
だから入門書の範囲内で質問しろ
子供電話相談室じゃないんだぞ

68 名前:デフォルトの名無しさん :04/11/29 15:02:17
>>57
DispatchMessageはWindowsが用意している物なんだから、
「DispatchMessageがウィンドウプロシージャを呼ぶ」ってことは「Windowsがウィンドウプロシージャを呼ぶ」と言えるんだよ。
SendMessageも同様。

69 名前:64 :04/11/29 16:54:38
>>65
まじでありがとうございました。
無事ダイアログをスマートに消せました。感謝。

70 名前:デフォルトの名無しさん :04/11/29 18:32:24
>cl : コマンド ライン error D2016 : コマンド ライン オプション '/QI0f' と '/arch:SSE' は同時に指定できません


SSEを有効にするときはPentiumのバグに目をつむれということでしょうか。
よろしくおねがいします。

71 名前:デフォルトの名無しさん :04/11/29 18:40:47
>>70
チラシの裏にでもかいとけ

72 名前:デフォルトの名無しさん :04/11/29 19:17:50
>>70
SSE使えるプロセッサに例のバグはないからいいんじゃないの?

73 名前:デフォルトの名無しさん :04/11/30 14:17:24
すみません、マウスでクライアント領域をクリックして、
クリックされた2箇所のポイントを線で結ぶプログラムを
作っているのですが、
その点と点を結んだ線がクライアント領域内に書かれた
他の閉じた図形の内部を通過しているかどうかを調べるには
どうすればよいでしょうか。PtInRect等で
少しずつ調べるしかないのでしょうか。

74 名前:デフォルトの名無しさん :04/11/30 15:20:02
>>73
その「閉じた図形」がどんなデータ構造してるのかわかんないのでハッキリ云えないけど
「線分が図形を通過してる」っていえば数学的には
二つ以上の交点求まればよさそうじゃない?
多角形相手に内包まで認めたりすると少々うっとうしそうな気がするけどそこは気合いで。
VCと関係ないな。

75 名前:デフォルトの名無しさん :04/11/30 15:28:44
あっ
星型図形のひだりあし内部始点のみぎあし内部終端とかだと通過したことになんないか
交点が2の場合始点が図形の外部であるチェックが必要だ


…なんかそんな話じゃないような気もしてきた

76 名前:デフォルトの名無しさん :04/11/30 15:30:44
>>74
レス有難うございました、VisualC++固有の質問じゃなかったですね。
出直してきます、失礼しました。

77 名前:デフォルトの名無しさん :04/12/01 15:28:53
.NET 2002です。
エディタ上でユーザー定義の型やクラスに色をつける方法を教えていただきたいです。

78 名前:デフォルトの名無しさん :04/12/01 17:04:21
それを知ってるということは、
やりかた忘れたけど調べるのめんどくさいということか?

そこまで知ってたら調べればすぐわかるはず

79 名前:47 :04/12/01 23:13:46
いまさらですが解決したので報告します。
はじめにファイルをreadしたあといったんCloseHandleで閉じて
writeの前にもう一度開きなおすとうまくいきました。
何故これでうまくいくのかはよくわかりませんが(汗

80 名前:デフォルトの名無しさん :04/12/02 14:52:20
1日前の日付、2日前の日付とかを算出するのってどうやるんでしょうか?

日付を数値データとして除算してもできませんよね
例) 2004年12月1日
int a = 20041201;
a - 1 ←これやっても20041130とはなりません。当たり前ですが(汗)

81 名前:デフォルトの名無しさん :04/12/02 15:11:20
>>80
SYSTEMTIME構造体を使えばいいんじゃない?

82 名前:デフォルトの名無しさん :04/12/02 15:29:45
>>80
#include <stdio.h>
#include <time.h>

int main(void)
{
time_t before;
time_t now = time(NULL);/* 現在時刻 */
struct tm tm;
struct tm * tmp;
char buf[12];
tm = * localtime(& now);/* ばらし */
tm.tm_mday -= 5;/* 今日の5日前 */
before = mktime(& tm);/* 組み立て */
tmp = localtime(& before);/* もっかいばらし */
strftime(buf, sizeof(buf), "%Y%m%d", tmp);/* 文字列に変換 */
printf("%s\n", buf);
return 0;
}


83 名前:80 :04/12/02 16:50:59
>>81
>>82
無事できました。
#カレンダーを内部でもって・・・とか
#頭の悪いことを考えていました。

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

84 名前:デフォルトの名無しさん :04/12/02 17:09:48
VC++6.0 proを使っています。

ファイル >> 新規作成 >> プロジェクト
で、プロジェクトの種類(Win32アプリとかコンソールとかMFCアプリだとか)を選択できますよね?
このリスト&生成されるワークスペースのファイルを追加・編集するにはどうしたら良いでしょうか。

インストールディレクトリ全体から、「Win32 Application」等の文字列を探せばひっかかるかなー?
とか思ってたんですけど、無理っぽ。

85 名前:デフォルトの名無しさん :04/12/02 17:20:44
Custom AppWizard

86 名前:84 :04/12/02 17:31:40
>>85
サンクス。
これから色々試してみます。



……と思ったら、けっこうマンドクセ
まあ、やるしかないわけだが。

87 名前:デフォルトの名無しさん :04/12/02 23:10:53
VC++6.0でビルドを行うとwarningはありますが、
エラーは出てない状態で「cl.exeの実行エラー」と
表示されビルドできません。どのような原因が考えられますか?
心あたりのある方、是非教えてください。

88 名前:デフォルトの名無しさん :04/12/03 18:35:07
エラーでてんじゃん(ぼそ
cl.exeってリンカだっけ? externとかそっち系だったりしてね。

ていうかエラーメッセージ全部出してみたら?

89 名前:デフォルトの名無しさん :04/12/03 18:45:30
>>88
アホは黙ってろ

90 名前:デフォルトの名無しさん :04/12/03 20:07:10
>>87
それだけだと答えようがない。
「cl.exeの実行エラー」でググれば原因がいくつか出てくる。

>>88
アホは黙ってろ

91 名前:デフォルトの名無しさん :04/12/04 18:45:17
Visual C++とC#は違う言語ですか?

Visual C++の勉強にはどの本がお勧めですか

92 名前:デフォルトの名無しさん :04/12/04 18:57:24
ソース探せ
検索すればいくらでも出てくる
そこから違うかどうかわかるだろ

あと、そのくらいの違いもわからなけりゃ"VisualC++というソフト"を使い切れないだろう
関連書籍を買ったとしても途中で挫折が目に見えてる

まずはC言語からはじめるべし

93 名前:デフォルトの名無しさん :04/12/04 19:10:42
VisualC++6を使っているのですが、sambaで共有したドライブにソースを置いて
コンパイルしようとすると、コンパイルできないのですが、
どなたか解決方法をご存じないでしょうか。
エラーは次のようなものです。
d:\cpp_qt\qt-2.3.0win\include\qvaluelist.h(415) : fatal error C1001: 内部コンパイラ エラー
(コンパイラ ファイル 'E:\8966\vc98\p2\src\P2\p2symtab.c', 行番号 932)

Qtというライブラリを使ってプログラミングしているのですが、Qtは直接的には関係ありません。
STLライブラリが関係してるような気がしますが、
ローカルドライブだとコンパイルできるので、やはり共有ドライブの問題なのでしょう。

環境は次のようなものです。
Windows機:Windows2000sp4 VisualC++6sp5
Linux機:PlamoLinux3.3 samba2.2.8

94 名前:デフォルトの名無しさん :04/12/04 19:16:27
UNC

95 名前:デフォルトの名無しさん :04/12/04 19:20:39
>>93
頭わるすぎ
こういう馬鹿が作ったプログラムを使う人間がかわいそう

96 名前:93 :04/12/04 19:36:20
初心者なんだから頭が悪いのは仕方ないだろ。
だいたいここは、そういう人間に教えてくれるスレじゃないのか?

97 名前:デフォルトの名無しさん :04/12/04 19:46:59
初心者だって頭のいい香具師はいる。

それはさておき、ディレクトリのパーミッションがないなんて落ちはないよな?

98 名前:デフォルトの名無しさん :04/12/04 19:48:00
質問する前に自分で確認出来ることあるだろ
samba疑ってたりSTL疑ってるならそれらを変えるなりなんなりできるだろうが

そもそもVC6を疑ってないようにも見えるが、
それがそもそもの間違いだと思うが

99 名前:デフォルトの名無しさん :04/12/04 20:44:07
>どなたか解決方法をご存じないでしょうか。
>ローカルドライブだとコンパイルできるので、やはり共有ドライブの
>問題なのでしょう。

自力で問題解決しているのでは?

100 名前:デフォルトの名無しさん :04/12/04 22:28:01
&H64

101 名前:デフォルトの名無しさん :04/12/04 22:40:28
質問です。

VBのShellの様にMFCアプリケーションから別EXEを立ち上げたいのですが、
それは可能ですか?

102 名前:デフォルトの名無しさん :04/12/04 22:41:41
>>101
CreateProcessなりShellExecuteなりなんなり。

103 名前:デフォルトの名無しさん :04/12/04 22:46:11
ありがとうございます。
調べてみます。

また、別EXEを起動してそれのプロセスが停止したかどうかを監視
したいのですがそれも出来るのでしょうか?


104 名前:デフォルトの名無しさん :04/12/04 22:49:48
CreateProcessで起動し、終了したか確かめるだけならWaitForSingleObjectのタイムアウトを0にして呼び出す。

105 名前:デフォルトの名無しさん :04/12/04 22:52:05
ありがとうございます。

タスク常駐プログラムを作成しようと思うのですが、それで行って
みようと思います。

106 名前:デフォルトの名無しさん :04/12/05 22:45:16
>>93
お前まさかイニシャルがT.Kじゃないよな?

107 名前:デフォルトの名無しさん :04/12/06 10:47:08
VC.NETでCのstrlen()を使っているのですが、
なぜか値を返してくれません。
デバッグしてクイックウォッチで見てみると

 "CXX0017: エラーです : シンボル "strlen" が見つかりません"

と表示されます。原因わかるかたいますか?
string.hはインクルードしています。
ビルドしてもエラーや警告はでないです。

108 名前:デフォルトの名無しさん :04/12/06 10:55:47
>>107
ビルドの出力見ている?
少なくとも成功か失敗かは出力されているわけだが。

109 名前:106 :04/12/06 10:59:28
>>108
はい、見ています。
ビルド : 1 正常終了、0 失敗、0 スキップ
と出力されており警告もでていません・・・。

strlen()ってstring.hをインクルードすれば普通使えますよね?;

110 名前:デフォルトの名無しさん :04/12/06 10:59:45
関数と変数を混同してる予感
Cを勉強しなおせ

111 名前:デフォルトの名無しさん :04/12/06 11:11:11
式エバリュエータ エラー CXX0017
シンボルが見つかりません
式中で使用されているシンボルが存在しません。

このエラーは、デバッグ中に変数を監視しようとして
変数の型キャストを試みると発生することがあります。

112 名前:106 :04/12/06 11:16:08
>>111
strlenの戻りがsize_t型でウォッチに失敗していたんですね・・・
ためしにstrlenの結果をint型の変数に代入させたら
ちゃんと取得できていました・・・。
お騒がせしました。ありがとうございました。

113 名前:デフォルトの名無しさん :04/12/06 16:27:49
DDK初心者です。
USBデバイスを取り外すプログラムを、
CM_Request_Device_Eject関数を使用して作成しました。
スタンドアロンでは問題ないのですが、サービスから起動すると、
CM_Request_Device_Eject関数がエラーを返してきます。
エラーメッセージをみると、
"ネットワーク パスが見つかりません。ネットワーク パスが正しく、宛先のコンピュータがビジー状態ではなくオンになっていることを確認してください。それでもネットワーク パスが検出されない場合は、ネットワーク管理者に問い合わせてください。"と表示されています。
どなたか現象がわかる方はいらっしゃいませんか?

114 名前:デフォルトの名無しさん :04/12/06 18:30:23
VC++6.0
ビットマップリソースを読み込んでDIBとして扱うにはどうすればよいのでしょうか?

115 名前:デフォルトの名無しさん :04/12/06 18:30:55
VC++6.0
ビットマップリソースを読み込んでDIBとして扱うにはどうすればよいのでしょうか?

116 名前:デフォルトの名無しさん :04/12/06 18:32:00
VC++6.0
ビットマップリソースを読み込んでDIBとして扱うにはどうすればよいのでしょうか?

117 名前:デフォルトの名無しさん :04/12/06 18:36:17
>>115
それを何行で説明すんの?

118 名前:デフォルトの名無しさん :04/12/06 21:51:54
>>117
結局だれもわからないとか

119 名前:デフォルトの名無しさん :04/12/06 22:14:19
>>118
教えるのに1時間以上かかるとしたら?

120 名前:デフォルトの名無しさん :04/12/06 22:40:50
VC++について1から詳しく教えてください。

121 名前:デフォルトの名無しさん :04/12/06 23:12:53
このスレを「1〜」よく嫁ばいいんじゃないかな?

122 名前:デフォルトの名無しさん :04/12/08 02:38:57
某所でも質問したのですが回答が得られなかったので・・・
VisualC++.netでプログラミングの勉強をしているのですが「変数の追加」で
追加した変数を簡単に削除するにはどうしたらいいのでしょうか?
6.0だと表示メニューのClassWizardから削除できるみたいなのですが.netだと見つからないので・・・

123 名前:デフォルトの名無しさん :04/12/08 05:40:10
.net2003をカスタマイズしているのですが
メニューバーに分類を追加するにはどうすればいいのでしょうか?

124 名前:デフォルトの名無しさん :04/12/08 08:07:18
>>122
普通にエディタで削除したら?

125 名前:デフォルトの名無しさん :04/12/08 15:10:25
VC6.0(SP6)を使っています。

これで普通にビルドするとCPUが2個あっても1個しか使ってくれません。
Linuxのように2個のCPUで倍速でビルドする方法はありませんか?

126 名前:デフォルトの名無しさん :04/12/08 15:16:12
>>125
初心者ならそれで十分

127 名前:デフォルトの名無しさん :04/12/08 15:19:46
>>125
そんなに遅いなら新しいパソコンに買い替えな

128 名前:デフォルトの名無しさん :04/12/08 19:49:04
>>125
M$に要望出せ

129 名前:125 :04/12/08 23:29:38
(´・ω・`)ショボーン

あきらめます。

130 名前:デフォルトの名無しさん :04/12/09 01:08:21
つーか、コンパイル単位がでかいのが問題だったりしない?
毎回毎回フルビルドし直すわけじゃないだろうし、その辺見直したら?

131 名前:デフォルトの名無しさん :04/12/09 01:20:45
ここでのいいのかわかりませんが、質問させてください。

ある文字列をCStringArrayに追加していきます。
でも、同じ文字列は追加したくありません。
そのため、追加する際に
CStringArrayの要素を頭から1個ずつ比較しています。
この時に線形検索しているのですが、
前提条件無しで最も早い検索方法はやはり線形でしょうか?

もし、前提無しで早い検索があれば教えてください。
お願いします。

132 名前:デフォルトの名無しさん :04/12/09 01:31:48
デカいプログラムだったらコンパイル何時間も掛かったりするの?

133 名前:デフォルトの名無しさん :04/12/09 01:43:33
>>131
うん。

>>132
うん。

134 名前:デフォルトの名無しさん :04/12/09 01:48:12
VC++6.0ってもう古いですか?
VC++netに買い換えようか迷ってます。

135 名前:デフォルトの名無しさん :04/12/09 01:49:38
>>134
うん。

136 名前:デフォルトの名無しさん :04/12/09 01:52:22
VC++netに買い換えたら
VC++6.0に戻ろうか迷うよ。

137 名前:134 :04/12/09 02:06:18
数年前、やっとVC++6.0を手に入れたのに
分け蟻で初心者のまま今日まで過ごしてしまったのでどうしようか迷ってましたが。

やっぱpさおdthれ90あhsth

138 名前:デフォルトの名無しさん :04/12/09 02:09:36
>>131
要素数が少ないなら、開き直って全部舐めてしまうのが、かえって速いことも。
要素数が多いなら、とりあえずCMapを使ってみるのはどう?
すでにあるかどうかのチェックだけに使うのでもいいし、ついでに要素を指すポインタを格納すればウマー

>>134
VC6が欲しくて、MSDN付きのVS.NETを買いましたが何か。

139 名前:デフォルトの名無しさん :04/12/09 02:58:18
なんでまたCStringArrayだとかCMapだとか…

140 名前:デフォルトの名無しさん :04/12/09 03:06:47
使いたいから

141 名前:デフォルトの名無しさん :04/12/09 20:45:03
すみません。
VC++.NETってSTLのstringとかvectorを
使えなくなったんでしょうか?
#include <vector>しただけでも結構エラーがでてしまいます。

142 名前:デフォルトの名無しさん :04/12/09 22:18:00
.NETアプリならね

143 名前:138 :04/12/10 00:49:35
>>139
100% pure MFC なんだよ。

テンプレートライブラリって意外と難しい。
使うのは簡単だけど使いこなすのはね・・・。

やたらオブジェクトサイズが大きくてパフォーマンスの悪いプログラムがあって、
調べてみたらテンプレートの使い方が不適切だった、なんてのがあったよ。
無理に背伸びして問題を起こすよりは、古いものを使うのも場合によってはあり。
とくに>>131さんのような質問をするレベルではね。

144 名前:デフォルトの名無しさん :04/12/10 04:19:45
無難な方法を選ぶと成長しにくい罠
まぁ社会人で製品の納期守らなきゃいけないなら冒険できないんだろうけど…

145 名前:デフォルトの名無しさん :04/12/10 09:33:46
>>144
CObArrayに(newした)ポインタ突っ込んだままdeleteしない阿呆の尻拭いする羽目になったときは、
全部vectorに書き換えた。

146 名前:デフォルトの名無しさん :04/12/10 10:25:22
vectorだってnewしたポインタ突っ込んだらdeleteしなきゃいけないじゃん。

147 名前:デフォルトの名無しさん :04/12/10 10:54:25
>>146
関係ないけど、ポインタを格納した場合、ついつい何時もの調子で
こう書いて、不正アクセスしてしまう漏れ…
for(vector<int*>::iterator i = v.begin(); i != v.end(); ++i){
delete *i;
}

for(vector<int*>::iterator i = v.begin(); i != v.end();){
delete *i++;
}

148 名前:デフォルトの名無しさん :04/12/10 10:59:05
>>146
んにゃ、実体突っ込んだから大丈夫。

149 名前:デフォルトの名無しさん :04/12/10 11:12:33
>>145
それはMFCのせいじゃないだろ・・・

150 名前:デフォルトの名無しさん :04/12/10 11:37:23
>>149
CObArrayに実体は突っ込めない。

151 名前:デフォルトの名無しさん :04/12/10 12:15:46
(つД⊂)シクシク

またわけわからいくなったので教えてください

return 0L ;

の0Lってどういう意味ですか・・・?

152 名前:デフォルトの名無しさん :04/12/10 12:20:49
>>151
long(0)に同じ。関数の戻り値の型がlongなのだろう。

153 名前:デフォルトの名無しさん :04/12/10 12:24:48
>>150
だからMFCにも実体を突っ込めるテンプレートはあるわけで、
MFCの代わりにSTLを使ったから解決したという事ではない。
単にMFCのクラス選択を間違ってるだけだ。

154 名前:デフォルトの名無しさん :04/12/10 12:42:09
>>152
*^▽゚)v Thanks!!★彡
わかりました! ありがとー

155 名前:デフォルトの名無しさん :04/12/10 14:15:52
HANDLEってなんですか?

156 名前:デフォルトの名無しさん :04/12/10 14:22:05
>>155
http://yougo.ascii24.com/gh/66/006631.html

157 名前:デフォルトの名無しさん :04/12/10 15:12:22
>>153
誰か、MFCの代わりにSTLを*使ったから*解決したと書いていたのか?
ただ単に>145はSTLを使うようにして解決したと書いているだけだと思うが。

158 名前:デフォルトの名無しさん :04/12/10 15:38:10
">>144"って付けてコメントしてるのはなぜ?普通に考えて>>143-144の文脈に
乗ったコメントだと他の人は読むだろ。単発のコメントでないのだから「ただ単に」
とは言えないはずだが。


159 名前:デフォルトの名無しさん :04/12/10 16:13:25
こっちの方がよさそうなんで同じ質問をコピペします↓

VC6.0で変数が増えてくるとメモリの中の変な所にアドレス割り振っちゃうんだけど
これってバグですか?.NETだと直ってますか?

160 名前:デフォルトの名無しさん :04/12/10 16:14:11
どこに変数割り振ろうがコンパイラの勝手

161 名前:デフォルトの名無しさん :04/12/10 16:29:05
いや,なんつうかそういう意味じゃなくて書き込んではいけない
領域っぽいところに割り振ってるっぽいのよね。
大抵の場合変数のアドレスをメモリエディタで探して手動で書き換えても問題ないんだけど

その書き換えてはいけないっぽい領域の変数の値
弄ろうとするとプログラムごとシャットダウンするのよ。
手動で書き込もうがプログラム通して書き換えようがシャットダウンするってのが
変だなと思って

162 名前:デフォルトの名無しさん :04/12/10 16:49:01
>>161
お前の作ったプログラムのバグ
スタックオーバーフロー



163 名前:145 :04/12/10 20:03:13
>>157>>158
MFC使って蛸なプログラム書くくらいなら最初からSTL使えばいいって話。
CSIZEやCRECT使うなとまでは言わんが、複素数ならcomplex使えよとか。

>>159
よもや最適化されているコードのデバッグしてないよな?

164 名前:デフォルトの名無しさん :04/12/10 20:06:20
つーか、毎回PCがシャットダウンするのか小一時間(以下略

165 名前:デフォルトの名無しさん :04/12/10 20:44:39
ぬるぽ例外のことだろ?


166 名前:デフォルトの名無しさん :04/12/10 22:56:59
>>165
ぬるぽはNullPointerExceptionのことだから
"例外"を付けるのは間違っているよ。

167 名前:デフォルトの名無しさん :04/12/10 23:00:56
>>163
だからあんたのvectorの話はMFCかSTLの問題じゃないんだって。
ダメな奴は最初からSTL使っても蛸なプログラム書くんだっつーの。


168 名前:デフォルトの名無しさん :04/12/10 23:01:00
>>163
タコはどうやってもタコの気がする。

169 名前:デフォルトの名無しさん :04/12/10 23:13:48
>>163
キミは論旨が一貫しないな

170 名前:159 :04/12/11 06:53:29
原因は結局よく分かりませんでしたがSP5当てたら直りました。

>>162
私は独学でプログラム勉強して2年たちます。
そろそろWindowマシンのメモリも小さいなと思えるほど
でっかいプログラム書くようになったのでそういうのも勉強しなきゃいけないと思うんですが、
Window or VC特有のメモリの取り扱い関係でなんかいい本とかサイトとか知りませんか?

171 名前:デフォルトの名無しさん :04/12/11 07:01:23
もしスタックオーバーフローならコンパイラオプションでスタックの容量を増やせばいいだけ。

172 名前:デフォルトの名無しさん :04/12/11 08:20:04
>>170
何かが間違っている

173 名前:デフォルトの名無しさん :04/12/11 08:39:57
>>172
そうですね。ちょっと不気味なんで
とりあえずスタックサイズを変えてみました。

174 名前:デフォルトの名無しさん :04/12/11 11:18:14
そういう問題じゃないと思う

175 名前:デフォルトの名無しさん :04/12/11 11:39:21
>>170>>171>>173
なんかおかしいよ・・・

176 名前:デフォルトの名無しさん :04/12/11 17:33:44
はじめまして。
VCを最近はじめたものです。
(VC6.0 WinXP)

現在、MFC でイメージ(Rawデータ)をダイアログに表示しています。
その際、SetPixelVを画素分、ループでまわしていますが、
上から順に表示されて表示が遅く感じます。
(普通のJPEGを遅い回線で見る感じ?)

あまり信用は出来ませんが、
表示速度は、timeGetTime() で測ったところ、
512 x 512 のイメージで 0.6秒ぐらいです。

この方法だと、この位の速度なのでしょうか?
イメージビューアとかのスピードが理想なのですが、
他にいい方法があったら、教えていただきたいです。

よろしくお願いします。



177 名前:デフォルトの名無しさん :04/12/11 17:56:44
STLの、std::list<std::string>を使うとwarningがたくさん出てしまうのですが、
#pragma warning(disable:4786)は一つのソースファイル内でしか有効でないらしく
ほかのファイルをコンパイルするとwarningが出てしまいます。
すべてのソースで#pragmaを書けばいいんでしょうが、
プロジェクト全体でC4786のwarningを出さないようにするにはどうすればいいのでしょうか。

178 名前:デフォルトの名無しさん :04/12/11 18:59:06
>>177
stdafx.hにでも書いとけ。

179 名前:デフォルトの名無しさん :04/12/11 19:02:06
// >>176
SetRedraw(false);
// 描画処理
SetRedraw();
// これで少しは早くならない?
// あ、InvalidateRect()が必要かも。

180 名前:デフォルトの名無しさん :04/12/11 20:06:59
176
DIBイメージに変換してからBitBltしてやると1秒間に100枚はいけそうな希ガス。

181 名前:デフォルトの名無しさん :04/12/11 21:20:09
>>177
最新のVCを使いなさい。

182 名前:デフォルトの名無しさん :04/12/12 00:06:29
>>176
メモリDCへ一度全て展開してから一気にDCへBitBltすれば
表示そのものは早く見えると思うよ。

183 名前:デフォルトの名無しさん :04/12/12 02:52:53
VisualC++.netでリソースをテキストエディタで編集するにはどうしたらいいのでしょうか?
リソースファイルをテキストエディタで編集してからリソースビューで見ると他のエディタで使用中となってしまいます


184 名前:デフォルトの名無しさん :04/12/12 03:18:32
メモ帳

185 名前:デフォルトの名無しさん :04/12/12 03:52:10
>>183
テキストエディタで編集が終わったのなら、閉じればいいと思うのだが。
非拘束型のエディタならその必要もないし。
テキストエディタで保存した瞬間にダイアログが出て面食らうけどw

186 名前:183 :04/12/12 04:49:58
>>185
テキストエディタでリソースファイルを編集したあとコンパイルしようとすると

リソース コンパイラの致命的なエラー RC1004unexpected end of file found

原因

テキスト ファイルの最終行に、ライン フィード文字およびキャリッジ リターン文字がありません。

っていうエラーが出てしまうんです。ラインフィード文字とキャリッジリターン文字についてヘルプで検索してみたんですが
よけいわからなくて・・・


187 名前:デフォルトの名無しさん :04/12/12 05:00:47
>>186
そのレベルだったらテキストエディタで編集するのは諦めるのが無難だと思う。
つーか、改行コードが見えないエディタを使うなと。
そのメッセージの言うとおり、最終行に改行コードが入ってないのが原因。
#レスの最後には無駄に改行入れてるのにねぇ。

188 名前:デフォルトの名無しさん :04/12/12 22:01:17
初心者です。わかりません。教えてください。
学校ででた問題が分かりません。
よろしくお願いします。

189 名前:デフォルトの名無しさん :04/12/12 22:20:44
最終行にキャレットを持ってって
「ダダダダダッー」っと、Enterキーを叩く。
なおこの際に気合いが重要であることは言うまでもない。

190 名前:デフォルトの名無しさん :04/12/12 22:35:48
char ss[80], str[80];

テキストボックスaから文字列を取得してss[]に格納
strcpy(str, ss);
str[]の文字列をテキストボックスbに出力

上のような感じのことを
C言語とVC++を使ってしたいのですが、
どのようにしたらいいのでしょうか?

MSDNを検索してみて
C スタイルの文字列に関連する CString の操作方法
C スタイルの Null で終わる文字列への変換

ここいらへんを調べてみましたが、
どのようにすればいいのかがわかりませんでした。

MSDNでの検索の仕方を教えていただけないでしょうか?

191 名前:デフォルトの名無しさん :04/12/12 22:43:44
>>190
CWnd::GetWindowTextとCWnd::SetWindowText
わざわざssからstrへコピーする必要はないぞ

192 名前:デフォルトの名無しさん :04/12/12 22:48:39
>>191さんありがとうございます。
ですが、strcpy(str, ss)をしてから
strを色々と処理して
テキストボックスbに出力したかったんです。

変なとこを端折ったりしてすいませんでした。

193 名前:デフォルトの名無しさん :04/12/12 23:18:10
>>192
べつにssに色々処理してもテキストボックスaに影響でないけど
なんか他に使うのかな?

194 名前:デフォルトの名無しさん :04/12/12 23:21:53
190 名前:デフォルトの名無しさん[sage君のセンスを問う] 投稿日:04/12/12 22:35:48

おふざけは良いんだけど、真面目な質問とまぎらわしいのは迷惑だよ。

195 名前:190 :04/12/12 23:49:52
188のメル欄残りです。・・・

最後に
strcmp(ss, str);
をする予定なんです。

196 名前:176 :04/12/13 00:55:48
>>179 さん
レスありがとうございます。
書き方が悪かったのか、うまくいきませんでした。
ツリービューとかに使われる手法なんですね。勉強になりましたm(_ _)m

>>180 さん
レスありがとうございます。
仰るとおり、DIBでの表示で速くなりました。
StretchDIBits() を使いました。

>>182 さん
レスありがとうございます。
これも参考になりました。
なんとなくスワップバッファみたいな感じですか。

みなさん、ありがとうございました。



197 名前:デフォルトの名無しさん :04/12/13 03:31:42
>>190
そのメール欄は、ネタってことでよろしい?

とりあえず、無闇にstrcpyを使うな。

198 名前:デフォルトの名無しさん :04/12/13 06:15:58
コピー元として使う場合は、CStringはNULLで終わる文字列と同じと考えていい。

CWnd::SetWindowText
void SetWindowText( LPCTSTR lpszString );

引数
lpszString
新しいタイトルまたはコントロール テキストとして使う CString オブジェクト
または NULLで終わる文字列を指します。

199 名前:デフォルトの名無しさん :04/12/13 09:28:16
LPCTSTRと型指定があるところにはCStringが入る

LP"C"TSTRのようにCが付くのはconst型の意味であり
実用上は読み込み用のバッファとして使うものであるということ

CStringも読み込み用のバッファとして使うもの

CStringも書き込み用のバッファとして使えるがその場合は特別な操作が必要

200 名前:デフォルトの名無しさん :04/12/13 15:24:20
>>197さん、はいネタです。

>>198さん
SetWindowText(LPCTSTR lpszString);
で検索してみます。
ありがとうございました。

201 名前:デフォルトの名無しさん :04/12/13 17:54:13
VisualC++.netでバイナリファイルを読み込んで一覧を表示させるにはどうすればいいのでしょうか?

202 名前:デフォルトの名無しさん :04/12/13 18:42:10
>>201
違う星の人?

203 名前:デフォルトの名無しさん :04/12/13 18:42:56
>>202
>202

204 名前:デフォルトの名無しさん :04/12/13 18:45:07
>>201
バイナリファイルを読み込んで一覧を表示させる、としか言いようが無い。

205 名前:201 :04/12/13 19:50:49
>>204
どのようなプログラムを組めばよいのでしょう?

206 名前:デフォルトの名無しさん :04/12/13 19:54:55
>>205
>202

207 名前:デフォルトの名無しさん :04/12/13 20:02:08
#include <stdio.h>
int main(int argc, char *argv[])
{
  FILE *fp;
  if (argc <= 1)
    return 1;
  fp = fopen(argv[1], "r");
  if (fp)
  {
    for (;;)
    {
      int ch = getc(fp);
      if (ch == EOF)
        break;
      printf("%2X ", ch);
    }
    fclose(fp);
  }
  return 0;
}

208 名前:デフォルトの名無しさん :04/12/13 20:38:26
VC7ですが、DLLを作るプロジェクトがあって、
デバッガでステップ実行するとソースと違う動きをするんですけど。
たとえば何も無いステートメントでぴょこん!と関数のおしまいに飛んだり。
DLLはビルド後コピーしてるんですけど、PDBと同じ場所にないといけないの?
あるいはオブジェクトファイルとかIDBファイルとか、なんかそういうのも見ていて
それが古いのかな?もちろんリビルドしてるんですが。
一応タイムスタンプ見るとDLLもPDBも同じ時刻に出来てるんです。


209 名前:デフォルトの名無しさん :04/12/13 20:58:51
>>208
よもや最適化されたコードをデバッグしていないだろうな。

210 名前:デフォルトの名無しさん :04/12/13 21:21:44
最適化ですか。そういえばちゃんとチェックして無かったです。
とりあえずそれを見てみます。
ありがとうございました。

211 名前:デフォルトの名無しさん :04/12/13 23:39:23
手書きMFC(?)で例えば5秒ごとに発生するメッセージ・・みたいなやり方があれば教えてください
OnTimer使ってみましたが動きませんでしたorz
誰か教えてください・・・

212 名前:デフォルトの名無しさん :04/12/13 23:42:18
手書きMFC?

213 名前:デフォルトの名無しさん :04/12/14 00:40:07
>>212
いえ
手書きMFC(?)です。

214 名前:デフォルトの名無しさん :04/12/14 00:56:36
>>211
SetTimer()

215 名前:211 :04/12/14 00:56:54
何分初心者でなんて書いていいか分かりませんでした
AppWizardじゃなくてWin32 Applicationという意味です・・すいません

216 名前:211 :04/12/14 00:58:56
>>214
ありがとうございます やってみます

217 名前:デフォルトの名無しさん :04/12/14 03:19:04
for(i=0;i<j;i++)
{
wa+=data[i].ope;
printf("wa %f\n",wa);
}
printf("wa %f\n",wa);
の実行結果が

wa 140015878.223137
wa 140015982.283134
wa 140016086.353134
wa 140016190.423134
wa 140016294.493134
wa 140016398.563133
wa 140016502.623131
wa 140016606.683128
wa 140016710.743126
wa 140016814.803123
wa 32642638.803123 ←for文をぬけると減少してしまいます。なぜでしょうか?

218 名前:217 :04/12/14 04:20:55
for(i=0;i<j;i++)
{
wa+=data[i].ope;
if(wa>33990000)
{
ji=wa;
}
}
printf("wa %f\n",wa);
ブサイクなやり方で自己解決
もっとスマートなやり方ない?


219 名前:デフォルトの名無しさん :04/12/14 04:51:39
あっ、UFOだ!

220 名前:デフォルトの名無しさん :04/12/14 05:07:08
>>217
そこだけ提示されても。少なくともそこで使われている変数の定義も見せてくれ。

221 名前:217 :04/12/14 09:54:15
int i, j = 0;
float data[1280516];
double hasi,ji,wa=0;

for(i=0;i<j;i++)
{
wa=wa+(data[i]);
if(wa>33990000)
{
//printf("wa %f\n",wa);
ji=wa;
}
}
if(wa>33990000)
{
wa=ji;
}
printf("wa %f\n",wa);

です。

222 名前:デフォルトの名無しさん :04/12/14 10:54:11
10個のスレッドが同時に実行されるプログラムを作っています。
それぞれのスレッドは起動すると100秒経過後に特定の処理をします。
100秒後を検出するのに最適な方法はどれだと思いますか?

(1) WinAPIのSetTimer()で100秒後を通知させる
(2) WinAPIのSleep()で100秒後まで処理を停止させる
(3) 他の方法を使う

223 名前:デフォルトの名無しさん :04/12/14 11:06:50
int i, j = 0;
for(i=0;i<j;i++)

uso800

224 名前:デフォルトの名無しさん :04/12/14 11:08:58
>>222
(2)ってスレッド分けする意味あんの?


225 名前:デフォルトの名無しさん :04/12/14 12:05:08
>>224
大あり

226 名前:デフォルトの名無しさん :04/12/14 12:09:03
100秒待ってからスレッド作ったら?

227 名前:222 :04/12/14 12:15:01
>>223
なんでやねんw

>>224
あります。理由は下のとおり。

>>226
各スレッドは起動するとそれぞれ個別の初期化処理をしてから
100秒間後まで待機します。
よって100秒後からスレッドを作るのは無理そうです。

SleepがSetTimerを呼んでそうだから(1)がいいのかな?
Sleepだとウィンドウプロシージャに記述したり
コールバック関数作らなくていいけど・・・

228 名前:デフォルトの名無しさん :04/12/14 12:22:27
100秒に期待する精度はどのくらい?
それぞれのスレッドが再開する時間差があっても大丈夫?

229 名前:デフォルトの名無しさん :04/12/14 12:54:56
100秒後までスレッドが応答不能になってもいいのならSleepが簡単だけど。
必要な条件を提示してくれないとコメントしづらい。

230 名前:デフォルトの名無しさん :04/12/14 13:13:54
そんな悩むほどの問題?
sleep入れるぐらいなら3分もかからんだろ
それでダメなら違う方法

231 名前:デフォルトの名無しさん :04/12/14 13:18:59
【質問:ダイアログを簡単に表示させたい】
VC++ .net2003 でプログラム開発をしています。
アプリケーションでMFCを選択して、ダイアログベースで開発しています。
このときダイアログ関係のファイルは
xxxDlg.cpp xxxDlg.h xxx.rcみたいのがでてきますが、ダイアログの画面を編集する
ときに、リソースビューからxxx.rc->Dialog->IDD_XXXX_DIALOGと選択して出している
のですが、毎回だと面倒なのですが、これを簡単に表示させることはできますか?
少なくともxxxDlg.cppとこのダイアログは関連してるのだから、xxxDlg.cppを表示
させているときにショートカットとか押せばそれに対応するダイアログが出せれば
いいし、またはソリューションを開くで開けば必ず最初にでてくるようなのでもいいの
ですが、そういうことができますでしょうか?ご教示ください。

232 名前:デフォルトの名無しさん :04/12/14 13:21:35
xxx.rc をテキストエディタで直接編集するのが一番速い

233 名前:デフォルトの名無しさん :04/12/14 13:24:21
>>231
マクロでも組めばできるんでない?
つーか、ダイアログエディタを開いたままソリューションを閉じれば
次回開いたときに開いてくれると思うけど?


234 名前:デフォルトの名無しさん :04/12/14 13:38:07
1度開いたやつは閉じないかぎりウインドウの一覧にあるだろ

235 名前:デフォルトの名無しさん :04/12/14 16:56:40
char szWinName とかってウィンドウクラス名
WINAPI の外で大体宣言されているんですけど、
これはなぜですか?

236 名前:デフォルトの名無しさん :04/12/14 17:17:33
スルーですかっっ!?
悲しいです

237 名前:デフォルトの名無しさん :04/12/14 17:30:32
>>235
ひょっとしてint WINAPI WinMain()のこと?
中でしか使わないなら中でもいいよ

238 名前:デフォルトの名無しさん :04/12/14 17:53:36
なんでグローバルにしてるのか?っていう意味か?

239 名前:デフォルトの名無しさん :04/12/14 18:44:46
メニューバーの表示文字"編集(E)"とかを動的に変えたいのですが
いい方法はないでしょうか?
環境はVS.NET + MFCです

240 名前:デフォルトの名無しさん :04/12/14 18:53:15
>>239
MFCならON_UPDATE_COMMAND_UI

241 名前:デフォルトの名無しさん :04/12/14 18:55:50
じゃなかったCMenu

242 名前:211 :04/12/14 20:43:03
色々調べたりやってみたりしたけどSetTimer()の使い方が分かりません・・・
誰か簡単な例で教えてくだせぇぇぇorz

243 名前:デフォルトの名無しさん :04/12/14 20:44:36
>>218
for(i=0;i<j;i++){
wa+=data[i].ope;
printf("wa %f\n",wa);
printf("for文内でのiの値\n");
printf("i=%d\n", i);
}
printf("wa %f\n",wa);
printf("for文外でのiの値\n");
printf("i=%d\n", i);

iの値をチェックしてみろ。

244 名前:243 :04/12/14 20:46:17
意味ないこと書いた
逝ってくる

245 名前:デフォルトの名無しさん :04/12/14 21:42:01
>>242
OnTimer

246 名前:デフォルトの名無しさん :04/12/14 22:14:54
orzTimer

247 名前:デフォルトの名無しさん :04/12/14 23:18:00
>>231
クラスビューで右クリックか?

248 名前:235 :04/12/15 00:11:39
>>238さん、その通りです。グローバルにする意味はあるのでしょうか?
>>237さんのおっしゃるよう、中でもいい気はするんですが。
どんな意図があるのでしょう。

249 名前:デフォルトの名無しさん :04/12/15 02:42:29
中でしか使わないときと
そうじゃないときがあるから
に決まってるじゃ内科医

250 名前:デフォルトの名無しさん :04/12/15 04:29:35
スレッドで100秒停止する話だけど・・・

(1) そのスレッドのための初期化処理を、そのスレッドで行う必要が本当にあるのか。(ある場合もある)
(2) SetTimerして呼ばさせる関数もしくはWM_TIMERは、そのスレッドである必要が本当にあるのか?

自分だったら、ガイシュツだけど、まずSleep。
何か理由があってSleepが不可の場合、その他の方法も慎重に選択しなきゃいけないと思うが・・・

タイマーは有限のリソースなので無闇に使いたくない。
あと、ワーカースレッドにウィンドウ持たせたくない。

なので、同期を使う。
ワーカースレッドが初期化を完了したらWaitForSingleObject等でスレッドの実行を止める。
んで、他のウィンドウを持っていて淀みなくメッセージポンプが回ってるウィンドウでタイマーをセット。
(できれば、いちいちタイマーを起動せず、他のタイマー処理と共有させたい)
100秒経ったら、そのスレッドがWaitForSingleObjectで待っているオブジェクトをシグナル状態にする。


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.