■ 2ちゃんねるは、ここのサーバを使ってるです。。。
 .jp ドメインお持ちのお客様大歓迎。maido3.jp
 .fm 取得代行します。(US) maido3.fm
 .ca 取得代行します。(US) maido3.ca
 .com .net .org 取得代行します。(US) maido3.com
 .cc .to .tv 取得代行はじめました。NEW
人気サイト
月々1,000円からの BinboServer.com 2ちゃんねるも使っている Big-Server.com
>> 2ちゃんねる、サーバ監視所

■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
□□□VC 初心者質問スレ 2□□□
1 名前: デフォルトの名無しさん 投稿日: 2001/07/03(火) 12:07
□□□VC++初心者質問スレ□□□
http://piza.2ch.net/test/read.cgi?bbs=tech&key=984812029


2 名前: デフォルトの名無しさん 投稿日: 2001/07/04(水) 15:33
http://piza.2ch.net/test/read.cgi?bbs=tech&key=984812029&st=932&to=932&nofirst=true
HIDE にしてBitBlt してSHOW する


3 名前: デフォルトの名無しさん 投稿日: 2001/07/04(水) 15:36
>>http://piza.2ch.net/test/read.cgi?bbs=tech&key=984812029&st=933&to=933&nofirst=true
>VCではActiveXって作れないんですよね。VBで作るしかないの?

あり得へん
VC使いに殺されます。うぃんどうずあぷりでVCで作れんモンはありません


4 名前: デフォルトの名無しさん 投稿日: 2001/07/04(水) 16:54
あげ


5 名前: デフォルトの名無しさん 投稿日: 2001/07/04(水) 20:53
VCって今バージョンいくつですか?


6 名前: デフォルトの名無しさん 投稿日: 2001/07/04(水) 22:12
>>5
6.0のsp5かな。


7 名前: デフォルトの名無しさん 投稿日: 2001/07/05(木) 15:57
まぎらわしいからあげ


8 名前: デフォルトの名無しさん 投稿日: 2001/07/05(木) 18:09
紛らわしい唐揚げ


9 名前: デフォルトの名無しさん 投稿日: 2001/07/05(木) 18:21
ブロック崩しみたいなゲーム作ろうと思うんですけど、
もしかして、DirectX使わないと玉がちらつくことを防ぐのは不可能ですか?


10 名前: 9 投稿日: 2001/07/05(木) 18:26
玉はビットマップで描いてWM_TIMERで40ミリ秒ごとに移動して
再描画してます。


11 名前: デフォルトの名無しさん 投稿日: 2001/07/05(木) 20:46
>>9
画面と同じ大きさの裏バッファ(メモリDC)を用意して、
そこに描画して、裏バッファに画面イメージが出来あがったら、
表(実際に表示されているサーフェス)に転送。


12 名前: SC−14T 投稿日: 2001/07/06(金) 10:37
プログラム初心者です。
初めてカキコします。
たびたび質問すると思いますが、よろしくお願いします。

さっそくの質問ですが、
ウィンドウを最小化したときにツールバーではなく
タスクバーに入れたいんですがどうすればいいですか?
ウィンドウスタイルでWS_MINIMIZEBOXはあるのですが
タスクバーに入れるためのWS_***はありませんよね?
またタスクバーに入れたときのフローティングメニューの内容の
編集と表示方法も教えて下さい。


13 名前: デフォルトの名無しさん 投稿日: 2001/07/06(金) 14:41
>>12
http://www2s.biglobe.ne.jp/~maekawa/dev/vc/tasktray/

話は変わって、ウィンドウズ終了時に送られてくるメッセージって WM_CLOSE?
調べるために再起動すんのもアレなんで、御存知の方は教えておくんなまし


14 名前: SC−14T 投稿日: 2001/07/06(金) 17:04
>>13
ありがとう


15 名前: ののりん 投稿日: 2001/07/06(金) 17:27
<画像ファイルのプロパティの取得について>
 質問させて下さい。
 Windowsのエクスプローラー等で画像ファイル(gif, jpgなど)を右クリックして
「プロパティ」を選ぶと、幅や高さなどが解りますね。
 これをプログラム(C++Builderを使っています)で取得するにはどうすればよろ
しいのでしょうか?
 やりたい事は、例えば幅が2000ドットを超えている画像ファイルが
所定のディレクトリ内にあると、
 「でかすぎるぞ ゴルア!」
 というメッセージを出したいのです。


16 名前: デフォルトの名無しさん 投稿日: 2001/07/06(金) 18:25
>>15
どうすればできると思う?


17 名前: デフォルトの名無しさん 投稿日: 2001/07/06(金) 19:19
>>13

WM_CLOSEは
「終了時と」
言うよりは
「[x]ボタンを押された時」
に来るもんだと考えてください。

WM_CLOSE時にDefWindowProcを渡した場合
デフォルト処理としてWM_DESTROYが送られて終了になります。

よくある
「終了しますか? Yes No」
等はWM_CLOSE時に行うのがよいです。
WM_CLOSEで何もせずに0を返せば終了(というかWM_DESTROY)はしません。


18 名前: fだs 投稿日: 2001/07/06(金) 20:03
VisualC++でBeckyのようなメールソフトを作りたいとおもっています
なにかいいサンプルソースないでしょうか?
よろしくお願いします。


19 名前: ・・・ 投稿日: 2001/07/06(金) 21:11
具体的な質問なんですが、、、
「ふきだし.bmp」というビットマップ(画像)の上に、ふきだしの大きさに合わせて文字列を表示したいんですが、どうやればいいんでしょうか?
よろしくお願いします


20 名前: トイレから暇つぶし 投稿日: 2001/07/06(金) 22:12
>>19
リージョンでも使えや


21 名前: デフォルトの名無しさん 投稿日: 2001/07/06(金) 22:50
>>17
ウィンドウ終了時じゃなくてウィンドウズ終了時に送られてくるメッセージを知りたいのです


22 名前: デフォルトの名無しさん 投稿日: 2001/07/06(金) 22:53
>>21
なんとかシャットダウンなんとか。

WM_*全部よんでけばそのうちぶつかるよ。

include/*.h あたりで検索すれ


23 名前: デフォルトの名無しさん 投稿日: 2001/07/06(金) 23:46
>21
読んどけ。
http://www14.big.or.jp/~ken1/tech/tech10.html


24 名前: デフォルトの名無しさん 投稿日: 2001/07/07(土) 04:42
>>23
ありがとー


25 名前: デフォルトの名無しさん 投稿日: 2001/07/07(土) 14:26
SetFocusとかCWnd::SetFocusとかWM_SETFOCUSとかって、
対象ウィンドウか、その親をアクティブにしてしまうんですよね?
アクティブにせずにフォーカスを当てる方法ってありますか?


26 名前: ・・・ 投稿日: 2001/07/07(土) 15:07
>20
ありがとうございます!、試してみます


27 名前: 9 投稿日: 2001/07/08(日) 22:33
case WM_KEYDOWN:
switch((char)wParam){
case VK_A:
//{処理}
break;
}
}
↑(たぶん)上のような感じにすると
VK_Aは定義されていない識別子だっていわれてビルドできません。
なぜなんでしょうか?ちなみにwindows.hはインクルードしてます。


28 名前: 9 投稿日: 2001/07/08(日) 22:35
申し送れましたが、>>11さんありがとう。
でも、そうやっても多少のちらつきが出るんですが、
やむをえない所でしょうか。


29 名前: うへへへ 投稿日: 2001/07/08(日) 22:52
VK_Aは0x41


30 名前: 9 投稿日: 2001/07/08(日) 22:58
>>29
VK_Aと書いてたところへ
0x41と書けば良かですか?
やってみます。


31 名前: 9 投稿日: 2001/07/08(日) 23:02
>>29
なるほど、うまく行きました。
でも、なんでVK_Aではうまく行かないのでしょうか?
参考書にはVK_Aってかいてあったのに。


32 名前: デフォルトの名無しさん 投稿日: 2001/07/08(日) 23:02
参考書はなあに?


33 名前: デフォルトの名無しさん 投稿日: 2001/07/08(日) 23:06
29のやり方はあんまり良くないよ(可読性からいって)
アルファベットのVKCodeは例えば'A'みたいに大文字のアスキーコードと同じ
でよかったと思う。


34 名前: 9 投稿日: 2001/07/08(日) 23:18
>>32
翔泳社のですけど・・・
タイトルは「Windows98プログラミング」
もしかして、ダメですか?

>>33
どうもありがとう。こっちの方が良さげですね。
VK_Aって書くよりも楽だし。
でもVK_Aって書くと通らないのはなぜなんでしょう?


35 名前: デフォルトの名無しさん 投稿日: 2001/07/08(日) 23:23
ダメ本じゃないと思うよ。


36 名前: SC−14T 投稿日: 2001/07/09(月) 14:57
>>34
あ、それ持ってます。
結構いいですよ。
私がWINプログラム始めて初めての参考書でした。
今でも時々パラパラめくって使ってます


37 名前: SC−14T 投稿日: 2001/07/09(月) 15:07
ところでトークン結合で聞きたいのですが、

...
#define AandB(A, B) A ## B
#define RES_0 0xeeee
#define RES_1 0xffff
...
{
int x = 0;
int y = 1;
int w, z;

w = AandB(RES_, x)
z = AandB(RES_, y);
}

このプログラムを行うと
w = 0xeeee, z = 0xffff
になると思っていましたが
コンパイルエラーになってしまいます(RES_x, RES_yは定義されてないというエラー)
どうすれば
w = 0xeeee, z = 0xffff
ような結果になるプログラムって可能ですか?

説明下手でスマソ


38 名前: デフォルトの名無しさん 投稿日: 2001/07/09(月) 15:15
#define x 0
#define y 1


39 名前: デフォルトの名無しさん 投稿日: 2001/07/09(月) 16:43
「hoge[0]からhoge[99]まで全て0より大きい」のような条件はどう表すのがいいのでしょうか。
自分は普段、

for(i=0;i<100;i++){
 if(!(hoge[i]>0))
  break;
 if(i==99){
  ...
 }
}

のように記述してるのですが、どうも汚いです。何かいいやり方を教えてください。


40 名前: デフォルトの名無しさん 投稿日: 2001/07/09(月) 17:39
>>39
hogeが自分のスレッドと非同期に動いてるんでなければ、hogeをクラス化して
入出力を監視するのが吉。


41 名前: デフォルトの名無しさん 投稿日: 2001/07/09(月) 21:14
>39
BOOL型を返す関数にして
{
  for(i=0;i<100;i++){
    if(hoge[i] <=0){
      return FALSE;
    }
  }
  return TRUE;
}


42 名前: デフォルトの名無しさん 投稿日: 2001/07/09(月) 21:18
for(i=0;hoge[i]>0;i++){
 if(i==99){
  ...
  break;
 }
}
あんま変わらんか


43 名前: sage 投稿日: 2001/07/09(月) 23:35
hogeをでかい順に並べとくと吉


44 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 00:55
はひぃ。Editに入れた文字をint型の変数に
入れるには、どうすればいいですかぁ。
mfc-dialog base


45 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 00:58
文字コード->int?
文字列->int?

下なら何進数だよ?


46 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 01:00
すみません。文字じゃなくて数字でした。。。


47 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 01:01
EditがIDC_EDIT1で、int型変数が、isujiとすると、
どういう構文を書けばいいのか、
おしえてくらさい。


48 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 01:02
>>46
Class Wizardでintの変数をバインドできない?
ふつーはできるんだけど。


49 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 01:05
バインド?バインド?
ウゥヤバイワカリマセーン

アセアセアセアセアセアセ


50 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 01:07
CString ssuji;
GetDlgItem(IDC_EDIT1)->GetWindowText(ssuji);
int usuji = atoi(ssuji);

でいいけどもよ。

MFCのチュートリアル、わからないなりにしっかり読もうな。
がんばれ


51 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 01:09
おおおおおおおおおおおおおお!!!!!!!!!!!!!!!!!!!
スゴイヤ!コレダ!!コレダーーーーーーーーー!!
ガンバリマッスル!!アリガトウゴザイマス


52 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 09:04
場合によっては、
int usuji=GetDlgItemInt(IDC_EDIT1);
でもいーんじゃないの?10進数Onlyだけど。


53 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 14:49
wsprintf みたいに OS がサポートしてる atoi 関数ってないんかな
SetDlgItemText して GetDlgItemInt すれば実現可能だけど…


54 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 22:33
>>53
それぐらい、その場で書いてる。
たかが数行、時間にしてせいぜい 1 分。


55 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 03:05



56 名前: 中学生 投稿日: 2001/07/11(水) 03:21
関数プロットのやり方を教えて。


57 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 03:56
プロットってなんだYO!!日本語で話せゴルァ!!


58 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 11:07
>>56
gnuplot 調べれ


59 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 00:29
今C言語の本に載っている例のプログラムを見ながら、入力しているのですが、
新しいのプログラムに行く前に、軽く解説があり、その後に問題が
あるのですが、問題を読んでも「こうすればいいかなぁ」と思うんですけど
自分の考えたやり方じゃない答えとしてのっています。自分だったらこうやると
思うやり方は、乗っている答えと比べて複雑だし、自分が完璧と思ったプログラムが
どこも間違っていないのに、エラーがありますが、答えはないし、聞ける人もいないのですが
エラーがあっていいから、自分なりのプログラムを作るべきですか?
それともまず、問題集に載っているプログラムを1から最後まで、
入力だけやって知識を身に付けてから、自分なりのプログラムを作るべきですか?


60 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 01:21
どういう方法をとってもまともなものが作れるようになるには
1年以上かかるよ。好きにやるのが一番だ。
あと、プログラマは何を作れるかじゃなくて、
要求・必要どうりの物をいかに正確に作れるかだろ?
本末転倒にならないようにしろよ


61 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 17:45
>自分が完璧と思ったプログラムが
>どこも間違っていないのに、エラーがありますが

どこも間違ってなかったらエラーは出ません
自分なりのプログラムは他人から見づらいだけです


62 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 19:04
VCでプロジェクトに追加したコンポーネントを
後で削除(コントロールツールバーから消したい)することってできますか?


63 名前: SC−14T 投稿日: 2001/07/12(木) 21:20
すみません質問です。
よろしくお願いします。

MFCプログラム(ダイアログベース)なんですが、
指定したディレクトリの中にあるファイルの名前を取得したいのですが
どうすればいいのですか?
取得するといっても検索とは違います。
つまりファイル名を指定してそのファイルがあるかどうかを調べるのではなく
ディレクトリの中にあるファイルの一覧を
ファイルダイアログを使わずにすべて知りたいのです。


64 名前: SC−14T 投稿日: 2001/07/12(木) 21:22
>>62
Delteキーで削除できると思います


65 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 22:11
>>63
FindFirstFile で * で検索。


66 名前: デフォルトの名無しさん 投稿日: 2001/07/13(金) 00:24
質問です.よろしくお願いします.

ユーザーにファイル名を入力させ,ファイルを作りたいのですが,
その際に不正な文字(“\”,"/"等)があった場合エラーなり警告なり
を出したいのですが,便利な関数をどなたかご存知ないでしょうか?

よろしくお願いします.


67 名前: デフォルトの名無しさん 投稿日: 2001/07/13(金) 01:22
>>63
ダイアログベースなら、リストボックスを一個追加して、不可視にして
コントロールをメンバ変数としてバインドしておく。

んで、CListBox::Dir()で一覧を取得して、あとはCListBox::GetItem()で
順番に取り出すだけ。


68 名前: デフォルトの名無しさん 投稿日: 2001/07/13(金) 03:15
>>66
便利な関数?
memcmp (藁


69 名前: デフォルトの名無しさん 投稿日: 2001/07/13(金) 06:53
>>66
strpbrk


70 名前: デフォルトの名無しさん 投稿日: 2001/07/13(金) 06:57
>>67
VBじゃないんだからダサいやり方やめようよ。
リソースの無駄無駄


71 名前: デフォルトの名無しさん 投稿日: 2001/07/13(金) 10:14
ビットマップを保存するとき、BITMAPFILEHEADERのbiSizeやbfOffBitsに
ビットフィールドのサイズも加えるべきなのでしょうか?
ある本のプログラムではサイズを加えていなかったのですがどうなんでしょうか。


72 名前: 62 投稿日: 2001/07/13(金) 10:20
>>64
deleteですか?できないんですけど・・・


73 名前: 66です 投稿日: 2001/07/13(金) 15:18
試したところうまく行きましたが,こんな感じでいいんでしょうか?

if ( strpbrk( strFileName, "\\/:,;*\?\"<>|" ) != NULL ) {
// エラー処理
}

とりあえず,ありがとうございました.


74 名前: 69 投稿日: 2001/07/13(金) 19:30
>>73
すまん。それだとカタカナの「ソ」とかも×になる気がしてきた。
_tcspbrk とかを使った方がよいっす。


75 名前: SC−14T 投稿日: 2001/07/17(火) 01:19
すみません、質問です。

フローティングメニューを起動できたのですか
メニューが表示されて状態でカーソルの位置をずらして
もう一度右クリックを押したときにカーソル位置で開き直したいのですが
下のコードだと右クリックしても開いてくれません。
それどころか、左クリックしないと閉じられないんです

どうすれば右クリック連続で押してメニューを起動できますか?
もしよければコードをお願いします。

......
case WM_RBUTTONDOWN:
POINT p;
//
p.x = LOWORD(pMsg->lParam);
p.y = HIWORD(pMsg->lParam);
::ClientToScreen(pMsg->hwnd, &p);
//
HMENU fm = ::LoadMenu(::AfxGetInstanceHandle(), MAKEINTRESOURCE(_IDR_default));
HMENU sm = ::GetSubMenu(fm, 0);
::TrackPopupMenuEx(sm, 0, p.x, p.y, pMsg->hwnd, NULL);
::DestroyMenu(sm);
::DestroyMenu(fm);
break;
......


76 名前: SC−14T 投稿日: 2001/07/17(火) 01:24
あ、すみません。
もう一つ質問がありました。

メニュー(フローティングメニューも)の項目の右に
アイコン画像を挿入するにはどうすればいいのですか?
(IEでもお気に入りなどに使われているもの)
MSDNなどで(CMenuなど)検索して調べてみましたがのってませんでした。


77 名前: デフォルトの名無しさん 投稿日: 2001/07/17(火) 10:32
>>75
WM_CONTEXTMENU


78 名前: SC−14T 投稿日: 2001/07/18(水) 00:41
>>77
ありがとうございます。
MSDNで引いたらコードも載ってました。



ところで、メニューに画像くっつけるにはどうしたら(w


79 名前: デフォルトの名無しさん 投稿日: 2001/07/18(水) 00:44
オーナードロー>78


80 名前: SC−14T 投稿日: 2001/07/19(木) 17:57
>>79
うーん・・・???
MSDNで引きましたがよく分かりません
どこかにメニューにイメージを挿入するコードありませんか?
よろしくです。


81 名前: デフォルトの名無しさん 投稿日: 2001/07/19(木) 18:45
>>80
owner draw


82 名前: SC−14T 投稿日: 2001/07/21(土) 00:43
すみません、質問です。
いろいろなアプリでみかける(例えば、標準インストールウィザードやLhasaなど
ディレクトリの一覧を表示し、クリックしてディレクトリ名を取得する
ディレクトリダイアログって標準でないんですか?(ファイルダイアログはあるのですが・・・
MSDNで探しましたが、ありませんでした(VBにはDirListBoxっていうのがあった


83 名前: デフォルトの名無しさん 投稿日: 2001/07/21(土) 00:49
>>80
検索しろボケ
>>82
SHBrowseForFolderとか。


84 名前: デフォルトの名無しさん 投稿日: 2001/08/22(水) 11:59
救済age


85 名前: 名無しさん 投稿日: 2001/08/22(水) 17:38
質問です。

ポインタ変数の配列を動的に宣言したいのですが、
どうしたら良いのでしょうか?

普通の変数の配列の動的確保はmalloc関数を使う
方法はわかるのですが。

VC++では、WindowsAPIなどでmalloc関数などとは
別の方法で、ポインタ変数の配列を動的に宣言する
方法があるのでしょうか?


86 名前: デフォルトの名無しさん 投稿日: 2001/08/22(水) 17:40

void **p;

p = (void**)malloc(ArraySize);


87 名前: デフォルトの名無しさん 投稿日: 2001/08/22(水) 17:47
がいしゅつかもしれませんが、
一般的なツール(WINCRC等)で取得できるCRC16の求め方は
どのようにすれば良いのでしょうか?
C言語アルゴリズム辞典(http://www.vector.co.jp/soft/data/prog/se002453.html)の
中のCRC16.cを使っても、どうも違う数値になってしまいます。
もしかしたら、私の使い方がヘタレなのかもしれませんが、どなたかご教授頂けたらと思います。


88 名前: デフォルトの名無しさん 投稿日: 2001/08/22(水) 17:50
>>87
16でしょ?
ならそれでいいんじゃない?

32は、増やすだけ。


89 名前: 85 投稿日: 2001/08/22(水) 18:18
>86
ありがとうございます。


90 名前: デフォルトの名無しさん 投稿日: 2001/08/22(水) 18:37
>>87
本文読んだ?(書籍のほう)
良い本だから、持っておいたほうがいいよ。
本文のCRCのところに、X-MODEM形式の場合は初期値を0として、
最後のビット反転は行わないと記述がある。

 でも、WINCRCってCRC32みたいだけど?


91 名前: VC無為者 投稿日: 2001/08/22(水) 19:05
はじめましてVC無為者です。
ぼくはMicrosoft Visual C++が欲しいのですがなぜか持っていません。
そこでだれかWeb上にVCをアップロードして私がダウンロードできるようにしてくれませんか?
ご返事待ってます。


92 名前: デフォルトの名無しさん 投稿日: 2001/08/22(水) 19:16
>>91
1.丈夫なひもを用意します(以下略


93 名前: 87 投稿日: 2001/08/22(水) 21:15
>>88
>>90
レスポンスありがとうございます。
書籍のほうは残念ながら所持しておりません。
ソースファイルだけではアルゴリズムの細かいところがわからないので
今度、購入してみようと思います。
とりあえず、90さんが教えてくれたところを見てみて試したいと思います。
また、何か聞く事があるかもしれませんが、そのときはよろしくお願いします。


94 名前: デフォルトの名無しさん 投稿日: 2001/08/22(水) 21:29
>>91
犯罪を教唆したかどで、現在警察が(以下略)


95 名前: (゚д゚)Beからネット繋ぎてー 投稿日: 2001/08/22(水) 22:13
BeOSでhttp://www.bebits.com/app/1009/にあるソースをいじって、
ドライバをビルドせにゃならんらしいのですが、
ソースはいじってもビルドのやり方がさっぱり不明です。
誰か教えてー。
mkae?って何?
できればターミナルからやる方法を・・・。


96 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 00:37
まかえ?


97 名前: VC無為者 投稿日: 2001/08/23(木) 02:44
>>92
レスありがとうございます。
えと、このひもを首に巻きつけるんですよね。
えとそれで高いところにつるして…
このあとどうすればいいんですか?
というか本当にダウンロードできるようになるんでしょうか。


98 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 02:49
>>97
30点。
ストレートすぎます。
もっと面白いネタ考えてから、出直してください。


99 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 03:04
BBSとかのCGIで半角使えるようにするにはどうやったらいいですか?


100 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 03:27
>>99
1.文字コードの判定でがんばる。(ある程度の誤判定はあきらめる)
2.書き込みするときに、文字コードを指定してもらう。
3.特定の文字コード以外のでの書き込みを断る。
  (「シフトJIS以外での書き込みはしないでください」とか)

100%大丈夫な方法は無いけど、実用上は上記のうちのどれかで
問題ないと思う。


101 名前: 99 投稿日: 2001/08/23(木) 03:49
>>100
ありがとうございます。
でもスレの名の通り初心者なもので具体的にどうすればいいのかさっぱりです(藁
CGIのソース書き換えで出来たりはしないのでしょうか。


102 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 03:53
>>101
VCじゃないんなら板違いです。


103 名前: 85 投稿日: 2001/08/23(木) 09:15
昨日の85です。

結局calloc関数を使って

unsigned char **pt;
pt = (unsigned char **)calloc(n, sizeof(unsigned char));

というようにしてポインタ配列を確保して、ここは上手く行きました。

ですが、他にポインタではない変数の配列を動的に確保しようと思って
calloc関数を使うと、どうもポインタ配列の中身がおかしくなってしまう
(突然でたらめな値が入ってしまう)みたいなのですが、
ひょっとしてcalloc関数は1つのプログラムの中で
1かたまりのポインタしか使えないのでしょうか?
(つまり、本来calloc関数は一度で使いたい要素全部を確保するもので、
二度目にcalloc関数を呼び出すときは、一度free関数で
開放しないといけないのでしょうか?)

もしくは、そもそも最初に挙げたcalloc関数の使い方が
間違っているのでしょうか?

なんか、VC++スレじゃなくて普通のC言語スレの質問みたいになって
しまいましたが、一応VC++使っているので・・・。


104 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 10:07
>>103
>pt = (unsigned char **)calloc(n, sizeof(unsigned char));

まさか、ほんとにこの通り記述してたりする?
どうにも危なげだな…。
ポインタのサイズはsizeof(unsigned char)じゃないぞ。
そのせいでバッファをオーバーランして
次に確保した領域を破壊してるんじゃないか?


105 名前: 85=103 投稿日: 2001/08/23(木) 11:36
>104
ご指摘ありがとうございます。
どうも配列の途中からおかしくなってるようだったのですが、
やっぱり変でしたか。

sizeof(unsigned char *)
のように*をつけたら、どの型の変数でも関係無く4バイトの
サイズになるみたいで、今はとりあえずこれで普通に動いてくれて
いますが、これで良いのでしょうか?


106 名前: 通りすがりの茶々入れ 投稿日: 2001/08/23(木) 13:48
>>105 つーかおまえの使ってる配列は大きさ1でいいのか?


107 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 15:59
>sizeof(unsigned char *)
>のように*をつけたら、どの型の変数でも関係無く4バイトの
>サイズになるみたいで、今はとりあえずこれで普通に動いてくれて
>いますが、これで良いのでしょうか?
ポインタ変数のサイズは処理系によって違うっていうこと理解しています?
Windows環境だから4bytesだろうけど。
問題の本質は、106の言う通り、確保したい型のサイズをはっきりせよってこと。


108 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 16:26
>>105
一から入門書を読むことをお勧めします。

p = (xxx**)malloc( sizeof(void*) * ArraySize )


109 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 16:44
つうか先頭のcast
**でいいのか?*[]と完全に同義だっけ?


110 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 17:49
初めてDLL作りました初心者です。
hoge.EXE→hoge2.DLL(LIBの関数をDLL化しただけ)
これはEXEから正常にLIBの関数が呼べました。

しかし
hoge.EXE→hoge1.DLL→hoge2.DLL
を行なったらhoge2.DLLまでは実行されるが
hoge2.DLL内のLIBの関数を呼ぶと戻り値が必ず
0xffffffffになって返ってくるのですが。。。

#DLLの作り方は「猫でも〜」を参考にさせて頂きました。
 DLLの呼び出しは全て明示的(動的?)な呼び出しです。


111 名前: 105 投稿日: 2001/08/23(木) 18:15
>107
ポインタ変数のサイズが処理系によって違うことは分かりますし、
確保したい型のサイズはポインタ型のサイズだと分かっていますが、
ソース中でのポインタ型のサイズの表現方法が分かりませんでした。

>108
ありがとうございます。
ポインタ型のサイズは sizeof(void *) で良いんですね。

質問の解決に携わって下さった方、ありがとうございました。


112 名前: デフォルトの名無しさん 投稿日: 2001/08/23(木) 19:15
>>111
盲信は禁物 規格上すべての型のポインタの大きさが一定だなんて保証はない。
大昔のミニコンでsizeof(char*)=6 sizeof(int*)=4なんてマシンも実在したらしい
きちんと使いたい型に合わせて記述したほうがわかりやすいし


113 名前: デフォルトの名無しさん 投稿日: 2001/08/24(金) 10:10
すみません質問です。
DOSのプリンタポートから印刷をかけて、その内容を
Windowsで取得したいのですが、どのような方法があるでしょうか?
(要はWindowsマシンをプリンタにしたいのです)
よろしくお願いいたします。


114 名前: デフォルトの名無しさん 投稿日: 2001/08/24(金) 17:22
8255の仕様書見てがんばってくれ


115 名前: デフォルトの名無しさん 投稿日: 01/08/27 13:45 ID:HHULI/xc
非常にくだらない質問なんですが、間違って作成してしまった
自前クラスってどうやって削除するのでしょうか?
メンバ関数は削除できますけど、クラス自体ってできませんよね?
いきあたりばったりでクラスを作成した自分が悪いとは言え、
“プロジェクトへ追加”に対応して“プロジェクトから追放”みたいなの
ないんですかね?
やっぱコメントアウトしか手は無いのでしょうか?


116 名前: デフォルトの名無しさん 投稿日: 01/08/27 14:23 ID:.CyrU1AM
>>112
DOSの時代も二種類あったしね


117 名前: デフォルトの名無しさん 投稿日: 01/08/27 14:44 ID:8Xs.NW3U
>>115
…。

FileViewのSource FilesとHeader Filesからそのクラス用のファイルを消しておけ。


118 名前: 115 投稿日: 01/08/27 14:58 ID:HHULI/xc
>>117
ずっとクラスビュウのほうばかり見てました・・・。
エクスプロラから直接削除してビルドしなくなったりとか。汗
ありがとうございます・・・というかほんと申し訳ないです。


119 名前: デフォルトの名無しさん 投稿日: 01/09/13 20:35
CFile f;
f.Open( "test.dat", CFile::modeRead );

↑これだとオープンできるのですが、
フルパス指定で

f.Open( "C:\test.dat", CFile::modeRead );

↑にすると失敗します。MSDNライブラリを検索したら、
ファイル名指定は相対・絶対・UNC
全部できると書いてあったのですが・・・

ちなみにファイルはちゃんとクリエイトしてあります。
本を調べてもここまで基本的なことは書いていなくて・・
どなたか、教えてください!お願いします。


120 名前: デフォルトの名無しさん 投稿日: 01/09/13 20:40
>>119
その本の「文字列リテラル」という項目を探して読め。
載ってなかったらその本はすぐ捨てて、MSDNで検索しろ。


121 名前: デフォルトの名無しさん 投稿日: 01/09/13 20:48
>120
\がエスケープ・シーケンスになってるってことですか!!

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


122 名前: デフォルトの名無しさん 投稿日: 01/10/04 10:39
アヒャヒャ


123 名前: デフォルトの名無しさん 投稿日: 01/10/04 11:23

  〜       ∧_∧____   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ___  (´∀` ,) //| < [問題]
    <──<\⊂ へ ∩)//|||   \__________________
    \.  \,>'(_)i'''i~~,,,,/
──┐  ̄|| ̄(_) ̄~||~ ̄
    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
━━< 問題:                                                 >━━
    \___________________________________/
    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
━━< A:                        × B:                       >━━
     \________________/  \________________/
    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
━━< C:                        × D:                       >━━
    \________________/  \________________/

                                       ___
          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\  ∧ ∧  />──>
          |                   >( ゚Д゚) </   /
          \___________/  (   )   ̄|| ̄
                            ┏━━━━━━━━┓
                            ┃┏━━━━━━┓┃
                            ┃┃  挑戦者   ┃┃
                            ┃┗━━━━━━┛┃


124 名前: フォーエバー厨房 投稿日: 01/10/05 11:28
VC++からDirectX SDK等のヘルプを使えるようにするには
どうすればいいのでしょうか?

directX の Helpファイル(.CHIとコンパイル済みHTMLヘルプファイル) を
どこかにコピーすればいいのですか?
それとも、コンパイル済みのヘルプファイルを直接起動するしか
ないのでしょうか。


125 名前: デフォルトの名無しさん 投稿日: 01/10/05 11:38
[目次] の [サポート技術情報] と [プラットフォーム SDK]-
[Platform SDK]-[Graphics and Multimedia Services]を見るか、
[検索] で "Platform" or "SDK" or "プラットフォーム" を調べ。


126 名前: デフォルトの名無しさん 投稿日: 01/10/05 12:01
>>124-125
[表示]メニューに[サブセットの定義]があるから、それを活用するように。


127 名前: 124 投稿日: 01/10/05 12:16
レスどうもです。調べてみたところ、
hhcolreg.datを書き換えたりしなければいけないようですね。
面倒なのでショートカットつくって直接起動することにします(汗


128 名前: デフォルトの名無しさん 投稿日: 01/10/05 12:27
>>127
微妙に意味がわかってないな。
DirectX SDKヘルプは「MSDNにもともと含まれている」んだが。


129 名前: デフォルトの名無しさん 投稿日: 01/10/05 12:39
>>125
「[検索] で "DirectX" を調べ」の間違い。
>>127
[同期]ボタンを押せば、どのトピックに属するかが分かる。
トピックが分かったら >>125 を試してみろよ。


130 名前: デフォルトの名無しさん 投稿日: 01/10/05 12:41
>>129 また間違い。
正:「トピックが分かったら >>126 を試してみろよ」


131 名前: 124 投稿日: 01/10/05 12:56
言い忘れましたが、DirectXのバージョンは8です。
ダウンロードしてきた8のヘルプを、VC++に追加(?)し、VC++から
起動したいということです。

DLして解凍した後、どこかに移動させなければならないように思えるのですが


132 名前: 124 投稿日: 01/10/05 13:01
http://www.biwa.ne.jp/~banba/alter-msdn/
これでなんとかなりそうです。どうも。


133 名前: デフォルトの名無しさん 投稿日: 01/10/05 13:05
>>131
で、使ってる MSDN Library は VC++ 6.0 付属のものなのね?

もし会社や何かで MSDN サブスクリプションをとっているなら、それに含ま
れる MSDN Library をインストールすれば OK。最新の MSDN Library には
DirectX 8 のドキュメントが最初から含まれています。

MSDN サブスクリプションを購読していない場合や DirectX 7 など以前の
バージョンのドキュメントを統合したい場合には hhcolreg.dat や *.col ファ
イルを手でいじる必要があります。

たとえば、このあたりを参照
http://www.sofarts.com/computer/env-soft/windows/app_programming/vs/vs-dx-msdn2.htm


134 名前: 124 投稿日: 01/10/05 13:32
>>133
そうです。
MSDNはVC++6.0に最初から付属していたものです。
サブスクリプションというのは購読していませんので、リンク先を参考に
ファイルをいじってヘルプを追加したいと思います。
ありがとうございます。

お騒がせしました。


135 名前:   投稿日: 01/10/14 11:09
XPにVS6をインストールしようとすると失敗するのですが、
もしかしてFAQでしょうか?


136 名前: デフォルトの名無しさん 投稿日: 01/10/14 16:51
うちもだめだった


137 名前: デフォルトの名無しさん 投稿日: 01/10/14 19:16
おたずねです。密偵君というソフトみたいにウィンドウから
文字列を抜き出すにはどうしたらよいのでしょうか。


138 名前: デフォルトの名無しさん 投稿日: 01/10/14 19:26
>>137
密偵君はしらないが、
窓のHWND取得してそのハンドルに対してGetWindowText。


139 名前: 137 投稿日: 01/10/15 12:24
>>138
ありがとうございます。


140 名前: デフォルトの名無しさん 投稿日: 01/10/16 09:04
>>139
WindowFromPoint も使えるぜ。


141 名前: デフォルトの名無しさん 投稿日: 01/10/16 13:45
WM_PAINTのところでしか
描画しちゃいけないのはなぜですか?


142 名前: デフォルトの名無しさん 投稿日: 01/10/16 14:42
>>141
BeginPaint()さえ使わなければ、WM_KEYDOWNでもどこでも描画できるしょ。

ただしWM_PAINTは未処理なまま重複するとキューから間引きされるつー
うれしい性質があるので、重い描画処理を無駄に繰り返すときは
ぜんぶWM_PAINTにまかせると、いいことがあるかもしれない。


143 名前: デフォルトの名無しさん 投稿日: 01/10/22 13:54
浮動小数点から固定小数点に変換するにはどのようなコードが
必要ですか。教えてください。
符号1ビット整数16ビット小数15ビットになってます。


144 名前: デフォルトの名無しさん 投稿日: 01/10/22 16:55
FILE *fp1;
fp1=fopen("data.dat","w");

for(i=0;i<10;i++){

〜中略〜

fprintf(fp1, "%f %f\n",t);

}

このような感じのプログラムで、変数iの値によって、
書き出しファイル名を、data1.dat〜data10.datなどに変えて出力
したいのですが、どうすればいいのかわかりません。
教えてください


145 名前: デフォルトの名無しさん 投稿日: 01/10/22 16:55
FILE *fp1;
fp1=fopen("data.dat","w");

for(i=0;i<10;i++){

〜中略〜

fprintf(fp1, "%f %f\n",t,s);

}

このような感じのプログラムで、変数iの値によって、
書き出しファイル名を、data1.dat〜data10.datなどに変えて出力
したいのですが、どうすればいいのかわかりません。
教えてください


146 名前: デフォルトの名無しさん 投稿日: 01/10/22 17:07
>>145
はじめに10個ファイルを開いておいて
ループの中でiの値によって書き出し先を変える。

FILE *fp1; -> FILE *fp[10];
と言った感じで扱うと楽。


147 名前: 145 投稿日: 01/10/22 17:15
>>146
レスありがとうございます
FILE *fp[10];

fp[1]=fopen("data1.dat","w");
fp[2]=fopen("data2.dat","w");
fp[3]=fopen("data3.dat","w");
fp[4]=fopen("data4.dat","w");
fp[5]=fopen("data5.dat","w");
〜略〜

for(i=0;i<10;i++){

〜中略〜

fprintf(fp[i], "%f %f\n",t,s);

}

こんな感じでしょうか。
fp[3]=fopen("data3.dat","w");
↑        ~~
この辺の宣言をiを使って一気に書くことは可能ですか?
やはり一個ずつ書くしかありませんか?
実は、書き出しファイル数は300ぐらいにしたいのですが


148 名前: デフォルトの名無しさん 投稿日: 01/10/22 17:24
> fp[3]=fopen("data3.dat","w");
> ↑        ~~
> この辺の宣言をiを使って一気に書くことは可能ですか?
sprintfなどを使ってファイル名を作ればできます。

> 実は、書き出しファイル数は300ぐらいにしたいのですが
多いね。はじめに全部開くのは無理かも。
ループ処理の中でfopen,fcloseする方法で我慢したほうがいいかな。
ファイル名は前述のようにsprintfでも使えば簡単にできるし。


149 名前: 145 投稿日: 01/10/22 17:36
>>148
sprintfですか。
使ったことないです。
調べてみます。
ありがとうございました


150 名前: デフォルトの名無しさん 投稿日: 01/10/24 01:00

#include "stdafx.h"
#include <stdio.h>

const char file[] ="data";
const char kakuchoushi[] =".dat";
typedef FILE* PFILE;

int main(void){
PFILE fp[10];
char c[10];
for(int i=1;i<10;i++){

sprintf(c,"%s%d%s%",file,i,kakuchoushi);
fp[i]=fopen(c,"w");
}
}


151 名前: デフォルトの名無しさん 投稿日: 01/10/25 16:18
質問です。

以下の、CAクラスのメンバ関数をCBクラスのメンバ関数から
呼び出したとき、CAクラスのメンバ変数を参照しようとすると

ハンドルされていない例外は・・・・・

というエラーが出てしまうのですが、なぜでしょうか?


class CA
{
public:
int a;
int FuncA();



};

int CA::FuncA()
{
a = 1; //ここでエラー
return 0;
}

-----------------------------

class CA;
class CB
{
public:
int FuncB();

protected:
CA* m_pTest;



};

int CB::FuncB();
{
m_pTest->FuncA();
return 0;
}


152 名前: デフォルトの名無しさん 投稿日: 01/10/25 16:21
>>151
m_pTest の初期化がうまく言ってないんじゃ?


153 名前: 151 投稿日: 01/10/25 16:33
>>152さん

さっそくのお返事どうもありがとうございます。
初期化。。。
やってみます。


154 名前: デフォルトの名無しさん 投稿日: 01/10/25 17:46
意味わから〜〜〜〜〜〜ん。
ねえ、DVDを作りたいのー。
誰か、相談乗って★


155 名前: デフォルトの名無しさん 投稿日: 01/10/25 18:15
>>151

ポインタだけで実体がないのでは。
FuncB() 呼ぶ前に CA の実体できてる?


156 名前: 151 投稿日: 01/10/25 19:26
>>155さん
ご指摘どおり実体がありませんでした。
本当にどうもありがとうございました。


157 名前: デフォルトの名無しさん 投稿日: 01/10/25 22:27
#include <stdio.h>
int main(void)
{
for(;;) printf("\t\b\b\b");
return 0;
}
すいません、Windows2000でどうしてもこのプログラムが
動かないんですけど、よくわかりません…誰か助けて…


158 名前: 競れ損 ◆mQ/jMyIo 投稿日: 01/10/25 23:08
>>157
何がしたいのかよくわかりませんが。
ネタ?


159 名前: 157 投稿日: 01/10/26 00:15
>>158
問題のあるコードだけを抜き出して、簡略化したものです。
実際はもっと複雑です。

これでは何も表示されないはずなんですが、私のWindows2000では、
動かないんです、試してみてください。

どうかご助言を。


160 名前: デフォルトの名無しさん 投稿日: 01/10/26 00:54
>>159
動かない、とは具体的にどういった状態を示すのか説明しろ。


161 名前: デフォルトの名無しさん 投稿日: 01/10/26 01:20
>159
いや、試したけどきちんと動作するぞ。ブルーサンダーが(藁


162 名前: デフォルトの名無しさん 投稿日: 01/10/26 12:04
>>157
見たところコンソールアプリのようですが、なにも表示しないコンソールアプリを
Win2000で実行させてプログラムが動いたか動いてないかをどうやって判断しているのですか?

>>157はfor(;;)で無限ループになっているので動きっぱなしで終了しないように見えますが? 


163 名前: ◆yjzZLKY2 投稿日: 01/10/26 12:06
はぁ・・・


164 名前: デフォルトの名無しさん 投稿日: 01/10/26 12:13
>>163
昼飯喰って元気出せ


165 名前: デフォルトの名無しさん 投稿日: 01/10/26 14:15
>>157 のソース
OS ごとオチタ…。症状言ってないトコ見る限りネタだと思われ。
要するに、タブの後にバックスペース 3 個でシステムの使ってる領域壊しに行ってるんだと思う。
実行しちゃダメだよ。


166 名前: デフォルトの名無しさん 投稿日: 01/10/26 14:21
>157のソース
NT系OSのコンソールの問題らしいfj.os.ms-windows.programmingで
話題になってるとのこと(まだ見に行ってない)
\tよりも多い量の\bで打ち消すとOSが飛ぶらしい



2ちゃんねるは、ここのサーバを使ってるです。。。