VisualC++相談室 2

このエントリーをはてなブックマークに追加
1いさましいチビの女
VisualC++関連の話題を扱うスレです。
前スレが900を超えたので2を作りました。

↓前スレ
http://piza.2ch.net/test/read.cgi?bbs=tech&key=970607517&ls=100
2デフォルトの名無しさん:2001/02/08(木) 21:16
http://www.fujitsu.co.jp/hypertext/softinfo/product/use/JBK/gui/ListView/ExampleGuide.html
ここの画面のようなことをしたいのです(リストで選択したら
その内容がエディットボックスに書き込まれる)
が、リストから値を取り出す方法をだれか教えて下さい
どこか、参考になるページでもいいです。おねがいします。
3名無しさん@お腹いっぱい。:2001/02/08(木) 23:15
891 名前:名無しさん@お腹いっぱい。投稿日:2001/02/08(木) 03:43
プログラムしかできない理系最下層軍団早く氏んでくれ。


892 名前:名無しさん@お腹いっぱい。投稿日:2001/02/08(木) 03:45
プログラムしかできない理系最下層軍団早く氏んでくれ。893 名前:名無しさん@お腹いっぱい。投稿日:2001/02/08(木) 03:45
プログラムしかできない理系最下層軍団早く氏んでくれ。

894 名前:名無しさん@お腹いっぱい。投稿日:2001/02/08(木) 03:47
まあ馬鹿だろうからプログラムもろくにできないだろうけどね

>>2
GetItemTextで取得できるよ。
ただ、IMCHANGEDやITEMCHANGINGイベントないでやったら今選択した奴じゃなくて
一つ前のが取れたと記憶してるけど。 そこら編チョコっと注意かも。

5デフォルトの名無しさん:2001/02/09(金) 11:44
ダイアログベースのOnInitDialogからOnEndを呼び出して、
OnEnd中でAfxGetMainWnd()->PostMessage(WM_COMMAND, ID_APP_EXIT);
を呼んでもすぐには終ってくれません。
何で終らすのが良いのでしょうか?
但し、この終了処理はOnInitDialog以外からも使います。
>>5
EndDialog(0);
でいいんじゃないの?

7デフォルトの名無しさん:2001/02/09(金) 12:08
>>6
ダメでした。
AfxGetMainWnd()->PostMessage(WM_COMMAND, ID_APP_EXIT);
が働かずに(つーか待ち状態?)でプログラム終らずに、OnEnd()から
戻ってきちゃう・・・・
>>7
何をしたいかがいまいちわかんないです。
自アプリを終了したいの?
ダイアログのアプリなんだよね。
で、ID_APP_EXIT は自分で定義したの?

とりあえず自分を終わらせるなら、
EndDialog(0);
実行するだけで良いと思うんだけど。
::PostMessage(this->m_hWnd,WM_QUIT,0,0);
とかね。


9デフォルトの名無しさん:2001/02/09(金) 13:23
ダイアログのハンドル値失ってない?
つか、
EndDialog(hDlg,(LOWORD)0);
がふつうでない?
10デフォルトの名無しさん:2001/02/09(金) 15:44
クラス属性ってどうやって実装するんですか?
static int XX;
のようにクラス宣言の中にかくだけじゃ駄目ですか?
早急にレスきぼーん。
11SAGE:2001/02/09(金) 18:16
>9
MFCの話だろ、たぶん、おそらく。

>10
更に、どっかしらのソースに
int CHoge::XX;
って書く。
12デフォルトの名無しさん:2001/02/10(土) 05:54
初心者です。こーゆーのはダメなんですか?

pDC->Ellipse(a - pDoc->m_Array[i], b - pDoc->m_Array[i],
a + pDoc->m_Array[i], b + pDoc->m_Array[i]);

pDC->Ellipse(c-10,j*10-10,c+10,j*10+10);

上はうまく描画されるのに、下はうまく描画されません。
どうしてかわかりません。教えてください。

a〜dの値は固定なのですが、iとjは条件によって変わります。
ちなみにjは、その直前でのループを回った回数です。
よろしくおねがいします。

13デフォルトの名無しさん:2001/02/10(土) 07:32
a,b,c,dの値,i,jを決定するルーチン(ループっぽいが)も示すべし。
14デフォルトの名無しさん:2001/02/10(土) 08:30
VC++6.0のリファレンスライブラリやプログラマーズガイドは
買ったほうがいいのでしょうか?
(VC++を手に入れたばかりです)
1512:2001/02/10(土) 10:26
>>13
SetTimerを使った実験してます。
x=300の軸上に描いた円を、ファイルから読みこんだデータをもとに動かそうとしてます。
タイマーで画面をInvalidateRectして、以下の関数をOnDrawで呼んでます。
タイマーが来るごとに、i++してます。

void CTimerView::DrawVelocity(CDC* pDC, CTimerDoc* pDoc)
{
//変数のコマごとの初期化
int kk = 0;
tempVol = 0;
realVol=realVol+pDoc->m_Q[i-1];
//どこに描画するかの判定
for(int k=nPoint*(i-1); tempVol<=realVol; k++){
if(k==nPoint*(i-1)){
tempVol = pDoc->m_A[k] * realDx / 2;
}
else if(k==nPoint*i){
tempVol = tempVol + pDoc->m_A[k] * realDx / 2;
}
else if(k>nPoint*i){
break;
}
else{
tempVol = tempVol + pDoc->m_A[k] * realDx;
}
kk++;
}
     //円を描画
     if(tempVol>=realVol){//原点(300,0)からループ分kkに移動した位置に描け。
pDC->Ellipse(300-5, kk*7-5,300+5, kk*7+5);//(注)
}
else{//軸の長さを超えた場合は、原点に描け。
pDC->Ellipse(300-5,-5,300+5,5);
realVol=0;
}
return;
}
こんな感じです。
実行してみると、(注)のところにkk=0の状態でいきます。
ずっとkk=0の時の位置に円が描かれるだけで動きません。
同じアルゴリズムをmfcAppwizardではなく、Win32ConsoleApplicationで検証したところ、
kkの値はちゃんと変化していました。(timerの変わりに、外側にもう一つforループをつけた。
初心者なものでWin32ConsoleとmfcAppwizardでのコードの書き方の違いがわかってないからだと思いますが、
どこが間違えてるのかわかりません。
よろしくお願いします。
16デフォルトの名無しさん:2001/02/10(土) 12:39
インデントシヨウヨ…
17SAGE:2001/02/10(土) 13:17
>>15
タイマーが呼ばれてないだけでは?
DrawVelocity に入るときの i の値はちゃんと変化してるのか?
18デフォルトの名無しさん:2001/02/10(土) 13:35
面罵名がiってのもなんだかなあ
19デフォルトの名無しさん:2001/02/10(土) 17:24
CPUの MODEL name の求め方ってご存知のかたいませんか.
たぶん、Family Model Steppin あたりの数値から、求めているのか音も思いますが.
(apiではPentium2/proまでしかわからず、CeleronとかPentium3とかわかんないので.)
HDDBENCHIとかどうやってるんだろう・・・・
20まんこ:2001/02/11(日) 00:13
SDKとMFCではSDKからやったほうがいいのでしょうか?
皆さんはなにからやりましたか。?
21デフォルトの名無しさん:2001/02/11(日) 03:30
しつもん。
MSDNヘルプ(標準でついてるやつ)にWindowsAPIのリファレンスって
載ってないんでしょうか?
22デフォルトの名無しさん:2001/02/11(日) 04:00
載ってるよ。ヘルプの使い方を覚えなさい。>21
23デフォルトの名無しさん:2001/02/11(日) 04:40
>>21
プラットフォームSDKのところ
24名無しさんi486:2001/02/11(日) 05:55
25名無しさん@お腹いっぱい。:2001/02/11(日) 05:59
VBのSendKeysみたいなことをして、他のAPを操作したいのですが、どうすればいいでしょう。
26名無しさんi486:2001/02/11(日) 06:01
>>25
SendKeysってなに?どんな動作するの?
27名無し~3.VOB:2001/02/11(日) 06:15
通信関係のプログラム書くときって、
MFC使った方が無難でしょうか。
実行時にランタイムが必要ってのがヤなんですけど・・・
28名無しさん:2001/02/11(日) 06:53
なんだか、時々
関数消すと
ClassView消えるんですけど
29名無し~3.VOB:2001/02/11(日) 07:12
たまにあるよね、それ・・・・。なんでだろ
30デフォルトの名無しさん:2001/02/11(日) 07:17
>>28
一旦VCを終了させ、
clwファイルを削除してからそのプロジェクトを再度開き、
ClassWizardを起動して内部情報を再構築。
あとコピペで同じソース使いまわしてると、
//AFX〜のマクロに旧関数のソレが含まれていたりして
ClassWizardが動作不正起こす。

31名無しさん@お腹いっぱい。:2001/02/11(日) 07:26
VC5のプロジェクトを開くと、VC6が落ちるのって俺だけ?
32デフォルトの名無しさん:2001/02/11(日) 13:47
>31
そうみたいだね。
33デフォルトの名無しさん:2001/02/13(火) 00:28
 VC6でMFCを使ってるのですが、window上にエリア選択のための矩形を書きたいのですが、何を使うのが良いのでしょうか。
 それとも、単にマウスドラッグの始点と終点を計算して、自分で点線を長方形になるように描かなければいけないのでしょうか。このためだけのクラスってあるんですか?
34デフォルトの名無しさん:2001/02/13(火) 01:03
>>33
DrawFocusRectっつーAPIも一応用意されとるよ。
35デフォルトの名無しさん:2001/02/13(火) 01:50
すいません初心者です。
VC++でリソースを作って各コントロールの文字列の
フォントサイズを変えたいんですけどどうやればいいんでしょうか?
36デフォルトの名無しさん:2001/02/13(火) 01:51
間違えてさげちゃった(--;
37デフォルトの名無しさん:2001/02/13(火) 02:58
C#とC++はどっちが速いんですか?

38デフォルトの名無しさん:2001/02/13(火) 04:11
>>33
おお。
34さんが答えてるとこアレだが、ちょうど
俺もそこなので。

ビュークラスの中でラスターオペレーション
使って線を描く。自前。
んで、OnSetCursor内でトラッキング。
もっと素敵な方法あったら、誰か教えて。
39デフォルトの名無しさん:2001/02/13(火) 10:25
うーん、マウスのトラッキングはGetCaptureでマウスメッセージ全部取らないと、
マウスカーソルがウインドウの外に出たとき拾えないくなるんだけどなぁ。
40デフォルトの名無しさん:2001/02/13(火) 11:35
>>14

MSDNとほとんど同じ内容だった気がします。

>>25

SetKeyboardStateかkeybd_eventとかじゃ駄目ですか。あまり知らないんですが。
4119:2001/02/13(火) 11:37
>>24
thanks ここからどうやってCPUを判別したらいいか悩んでるんですけど。
ある程度はレジストリから取得できるんですけど、その先が・・・
2次キャッシュのサイズとかの取得に方法とかですね・・・
4238:2001/02/13(火) 13:49
>>39
某AutoCadモドキ選択を作ってるんです。
カーソルがはみ出た時の処理がなかなか深い(手抜きとも言う)
まともなドラッグなら39さんの処理は要るね。

さっき「ラスター…」でヘルプ引いたら無かったので、
SetROP2/GetROP2で引いてください。
43デフォルトの名無しさん:2001/02/13(火) 17:59
 33です。自作自演ってわけじゃないんだけど、いいのを見つけたんで素直に報告。
 MFCにCRectTrackerというクラスがあって、単にOnLButtonDown内でTrackRubberBandメソッドを呼んでやるだけで簡単にできました。
 一件落着。(^_^)
44デフォルトの名無しさん:2001/02/13(火) 20:17
LANケーブルでパソコン(1)−パソコン(2)を接続して
パソコン(1)でデータを転送し、パソコン(2)でデータを読み取って
パソコン(2)からCOMポートで接続された他の機器へデータを流す
には、パソコン(2)での処理は、どのように作り込めばいいですか?
(パソコン(1)からは5秒毎に1回、1日中命令を出します。)
45七誌:2001/02/13(火) 22:04
MDBからデータを取得するために、次のようなコードで
レコードセットに対してSQLを渡そうとしているのですが、
1つめのような短いSQLは、実行できても、2つめのような
長いSQLは実行できません。なぜでしょうか。
長い方のSQLには途中で変数をつないであったりするのですが、
出来上がったSQLをACCESSで直接実行しても、問題はありませんでした。
コンパイル,リンクは大丈夫なのですが、実行時にASSERT?がでます。

#include <afxdao.h>
CDaoDatabase MyDB;
CDaoRecordset MyRs(&MyDB);

void CSearchDlg::OnButton1()
{
CString DdPath;
CString SQL;

DbPath = "c:\\database.mdb";
MyDB.Open(DbPath);

/* こんな短いのはOK
SQL = "SELECT * FROM TABLE_ABC;";
MyRs.Open(dbOpenDynaset,SQL,dbReadOnly);
*/

/* 上の変わりにこれはNG
SQL = " SELECT"
" TABLE_ABC.field01"
",TABLE_ABC.field02"
",TABLE_ABC.field03"
   /*ここに長いSQLを記述
MyRs.Open(dbOpenDynaset,SQL,dbReadOnly);
*/
}
46デフォルトの名無しさん:2001/02/14(水) 03:03
C#ってC++のコーディングスタイルもサポートしてるんだっけ?
47デフォルトの名無しさん:2001/02/14(水) 06:55
>>44
(2)の方はソケット開いて待機(サーバー)
(1)の方が(2)に繋ぐ(クライアント)
(2)がデータ受け取ったらCOMポートに送信。
必要なら(2)にキャッシュ機能を付けデータがある程度たまったらCOMポートに送る。
(2)にGUIを付けたいならマルチスレッドにし通信機能を別スレッドにやらす。
48デフォルトの名無しさん:2001/02/14(水) 07:22
SDIで,ビューの基底クラスをCViewのまま
スクロールバーを追加したいんですが,どうしたらいいでしょうか?
49名無しさん@お腹いっぱい。:2001/02/14(水) 07:44
>>48
スタイルを変える。
50デフォルトの名無しさん:2001/02/14(水) 10:11
>>47
44です。ありがとうございました。
で、またまた質問なのですが、
初心者だと思って聞いて下さい。
(2)がデータを受け取ったらと有りますが
「データを受け取ったら処理をする」という
作り方が分かりません。
教えて下さい。
>>50
やり方なんてコーディングしだだろうけど、
socketからの読み出しなら recvfrom 使うだろうから、
そこで、受信パケット識別後必要なものなら COMポートに送信。
とか。
52ひつじさん:2001/02/14(水) 11:24
すごい困ってるんですけど、VC++6.0でプロジェクト名を変更
したいときって、どうするの?手作業??
一度つけたら変更不可なの?
53名無しさん:2001/02/14(水) 11:46
>>52
俺は余計なファイル(*.ncbとか)を消した後、全テキストファイルで
文字列置換やってる。
今のところ不具合はないよ。
54ひつじさん:2001/02/14(水) 11:49
>>53
やっぱそんなベタな方法しかないのか・・・・?
クサレMSめ。
55七誌:2001/02/14(水) 12:48
>>45
自己レス
SQLを格納しているCString型の先頭にブランクが入っているのが
原因のようです。現在、調査続行中。
解決かも・・・
"SELECT"と" SELECT"の違い!?
これぐらい解読して欲しいと思うのですが、C++としてみた場合、
相当意味が違っているのでしょうか
56デフォルトの名無しさん:2001/02/14(水) 20:26
入力したアカウントが
アドミニ権限を持っているかどうか
知りたいのですが
どのように作り込めばいいですか?
教えて下さい。
57デフォルトの名無しさん:2001/02/15(木) 00:46
インスタンスハンドらってなんだか教えれ
>>56
NetGroupGetUsers とか NetGroupGetInfo などを見てみてください。
59デフォルトの名無しさん:2001/02/15(木) 13:52
>>58
LPBYTE bufptr;
NetGroupGetInfo (
NULL,
"Administrator",
0,
bufptr
);
というふうにしたのですが
error C2065: 'NetGroupGetInfo' : 定義されていない識別子です。
とエラーが出てしまいます。
どのようにすれば解消されるのでしょうか?
60あげ:2001/02/15(木) 14:39
あげ
61デフォルトの名無しさん:2001/02/15(木) 16:50
イベントログに出力するさいのメッセージファイルの作り方(mc.exe)は
分かったんですが、どう組み込んだら良いんでしょうか?
>>59
ちなみに、NT系専用です。
で、Lm.h をインクルードして。
Netapi32.lib のリンクも必要かも。
ふぁいとっ。

6359:2001/02/15(木) 17:54
>>62
ありがとうございます。
で、
2番目の引数なんですけど
グローバル グループ アカウントの名前を含む、
Unicode文字列を指すポインタです。
となっているんですけど、
LPWSTRってなに?
どういうふうに設定すればいいの?
Administratorを設定したいよ〜!
6459:2001/02/15(木) 18:26
分かりました。
もういいです。
ありがとうございました。
65デフォルトの名無しさん:2001/02/16(金) 01:10
MessageBox() に表示するメッセージのフォントを変えるにはどうするの?
66デフォルトの名無しさん:2001/02/16(金) 12:18
char *abcde;
CString xyz;

xyz = "あいうえお";
abcde = (char *)calloc(10,sizeof(101));
//これで、動的に10個の配列が確保できたと信じています

この時xyzの内容を*(abcde+5)にセットするには、どうすればよいのでしょうか
67デフォルトの名無しさん:2001/02/16(金) 12:43
66補足
abcdeの配列の5番目の間違いです
*(abcde+5)だと、へんですよね
ん?なんか、配列の宣言も怪しくなってきた

101の長さのabcdeを10個、確保するというのもあってますか?
68>65:2001/02/16(金) 12:52
出来ない(と考えたほうがいい)です。一から自作自演してください。
69げへへっ:2001/02/16(金) 13:19
>>65
システムフォント変えればできるんじゃないの?
70デフォルトの名無しさん:2001/02/16(金) 14:21
66です
2次元配列の取り方が根本的に間違えているんですね
newと、deleteで、動的に配列を作るコードを組んで出直します
71クロネコ:2001/02/16(金) 22:44
>> 66
いい加減に作ってみた。MFCはしらんので適当にあしらえぃ。

char * string="abc";
char ** array = malloc(10 * sizeof(char *));
for ( i = 0; i < 10; i++ ){
  array[i] = calloc(100 + 1, sizeof(char));
}
strncpy(array[5], string, 100);


つーかC版にいきなされ。
72デフォルトの名無しさん:2001/02/16(金) 23:28
1は根鎌です。
73デフォルトの名無しさん:2001/02/16(金) 23:42
age
74デフォルトの名無しさん:2001/02/16(金) 23:43
>>72
衝撃の事実!神よ!
75>65:2001/02/17(土) 02:05
Windows2000で実験。結論から言うと、
基本はダイアログなので変更可能。
他のWindowsではStaticコントロールのIDに違いがあるかもないかも。
Spy++とGetDlgCtrlID APIをうまくつかう。

こんな馬鹿馬鹿しいことやる理屈はないけど、たぶん背景色
もフォントも変えられるし。文字列の表示されているところに
動画を貼ったりもできる。

#include "stdafx.h"
#include <windows.h>
#include <tchar.h>

BOOL CALLBACK EChildProc(HWND hWnd,LPARAM lParam)
{
TCHAR str[255];
GetWindowText(hWnd,str,255);

if(lstrcmpi(str,_T("caption"))==0)
{
HWND bbb=GetDlgItem(hWnd,0x0000ffff);

HFONT ccc = CreateFont(15,0,0,0,FW_BOLD,FALSE,FALSE,
FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,DEFAULT_PITCH,_T("MS ゴシック"));

SendMessage(bbb,WM_SETFONT,(WPARAM)ccc,TRUE);

SetWindowText(bbb,_T("変更"));
}

return TRUE;
}

DWORD WINAPI Thread(LPVOID lpVoid)
{
Sleep(50);
EnumChildWindows(NULL,EChildProc,0);

return 1;
}

int main(int argc, char* argv[])
{
CreateThread(NULL,0,Thread,0,0,NULL);
MessageBox(NULL,_T("text"),_T("caption"),MB_OK);

return 0;
}
76>66:2001/02/17(土) 02:12
2バイト文字を扱うのにchar*を使うと計算が面倒なので
やめたほうがいい。
CStringの使える環境でcallocなんて使うのもよしたほうがよい。
文字列操作はメンバ関数を使えばおおよそのことはできる。
それでもだめならSTLの<wstring>+<algorithm>に移行する。
77デフォルトの名無しさん:2001/02/17(土) 07:57
ActiveXってのを使いたいのだが使い方が良く分からない。
COMだかOLEだか良く分からんがそれの知識も必要らしい。
どこか勉強にお薦めのサイトとかないですか?
ドキュソ学生に亜依の手を!
78デフォルトの名無しさん:2001/02/17(土) 10:07
>>77
その前に漢字を勉強しろ!!

79デフォルトの名無しさん:2001/02/17(土) 15:49
VC++6.0使ってます。
円周率はどうすれば扱えるのでしょうか。
多分、円周率の近似値が定数として用意されてるような
気がするですが、変数名が分かりません。
よろしくお願いします。


80名前ついてますか?:2001/02/17(土) 17:16
Cだと #include <math.h> で M_PIなんだけどねえ...
81デフォルトの名無しさん:2001/02/17(土) 17:31
math.h M_PI
82SAGE:2001/02/17(土) 19:07
>>79
探すの面倒なら自分で定義してしまえい。
83>77:2001/02/17(土) 19:49
おもに、自己登録型のCOMのことをActiveX
というらしいので、まずはCOMの勉強をしよう
本屋にいけば、COMの本はざくざくある。
無駄なお金をかけたくないなら、
MSDN-Onlineで、Dr.GUIの記事を読もう。

MSDNのCDが手に入るなら、97年暮れくらい
の記事に集中して特集されいる。

ただ、COMはWindows 1.0全体より複雑だと
いわれるくらいのものなので、それなりに習得に
根気も時間もいることを覚悟にしないといけない。
84>80:2001/02/17(土) 19:57
c++だと、
<cmath>だね。
85デフォルトの名無しさん:2001/02/17(土) 20:20
テキストを改行するにはどうすればいいんですか?
\nを使っても変な点が出るだけなのですが。
86偽名無しさん:2001/02/17(土) 20:23
\r\n
87デフォルトの名無しさん:2001/02/17(土) 20:26
_variant_t とか _bstr_t の型キャストの方法がよく分かりません。
そもそもこれらがどんな作りになってるのかとか、メンバ関数の
解説とかが詳しく載ってる本が殆ど見あたらない...
何か良い情報源はないでしょうか。
88偽名無しさん:2001/02/17(土) 20:31
MSDN
89デフォルトの名無しさん :2001/02/18(日) 01:26
超初心者質問でスイマセン。
ドット絵風の絵を描くペイントツール作ってます。
ある矩形領域内にマウスポインタがある場合にその矩形領域を塗りつぶす
というようにしてるんですけど、これだとマウスを速く動かしたときに
線ではなくて点になってしまうんですが、どうしたら線にできるのでしょうか。
一般のペイントツールみたく、MoveTo、LineToのような方法はないでしょうか。
90デフォルトの名無しさん:2001/02/19(月) 19:35
 MDIでアプリを作ると、子フレームはすべて親フレームに納まるように作られて、子フレームが親フレームから出るようなことはありませんよね。そこを、子フレームが自由に親フレームの外に出るようにスタイルを変えたいのですが、いったいどこを変えるとそういう効果を出せるのでしょうか。
 よろしくお願いします。
91デフォルトの名無しさん:2001/02/19(月) 21:02
MultiByteToWideCharって使ったことある方いらっしゃいますか?
このAPI使ってS-JIS→UNICODE→EUCって変換は可能なのでしょうか?
MFC or SDKでs-jisからeuc変換したいのですが・・・。
92デフォルトの名無しさん:2001/02/19(月) 21:06
>>77
ActiveXなら吉田弘一郎「ActiveX教養講座」が面白い。
誤字脱字が多いのがこりゃまたうける。
ActiveXがどんなもんか楽しく覚えるにはいいと思う。。。
93デフォルトの名無しさん:2001/02/19(月) 21:41
>91自分で試せ
94デフォルトの名無しさん:2001/02/19(月) 23:19
便乗・・・ってわけではないのですが「ウムラウト」を表示する
方法を教えていただけませんでしょうか?あのaとかoの上に
..がついてるヤツのことです

今はそこだけ画像に置き換えているのですが、これだとフォント
サイズ変更したときとか不便で不便で・・・
95デフォルトの名無しさん:2001/02/19(月) 23:20
文字コード表でも見ろ。>94
9694:2001/02/19(月) 23:54
>>95
えっと、それがないんですよ、ウムラウトは
ギリシャ文字はあるのに・・・
97SAGE:2001/02/20(火) 08:08
>91
無理

>94
Unicode対応のフォントで 00e4 とか 00f6 を書くべし〜
9891:2001/02/20(火) 09:40
>>93
はい。試しました。
結局このAPIはワイド文字列に変換するためのもので、
変換をおこなうときUTF-8変換とかを指定できるだけのものでした。
それにしても変な関数名だなこれ。。。
どっちがUNICODEか分かりにくいよ>M$

>>97
はっきりした回答どもです^^


99デフォルトの名無しさん:2001/02/20(火) 14:18
MFCを使用しています。
ClassWizardを使用しCDialogから派生させてCSubDialogというクラスを
作ったのですが、そのCSubDialogからまたClassWizardを使用して
派生させクラスを追加するということはできないのでしょうか?
基本クラスが自分で追加したクラスの場合は自分でソースに追加しなければ
いけないのでしょうか?
100[Q]:2001/02/20(火) 15:07
[Q]
CEditView をログウィンドウ(ex. Iria の下ウィンドウ)
のように使いたいのですが、
単純に SetWindowText しても一行が書き換わるだけでうまくいきません。
行を Append していくにはどうしたらよいのでしょうか?
101デフォルトの名無しさん:2001/02/20(火) 19:53
 ひとつ教えていただきたいのですが、
 MFCを使っていますが、ID_FILE_NEWなどのcommandを、ボタンやメニューによってではなく、プログラム内のメソッドなどで発生させるようにするにはどうしたらよいのでしょうか。
 よろしくおねがいします。
102デフォルトの名無しさん:2001/02/20(火) 20:27
SendMessage
103SAGE:2001/02/20(火) 21:26
WM_COMMAND
104( ´∀`)さん:2001/02/20(火) 21:45
C++のおすすめ入門誌などを教えてください。
105デフォルトの名無しさん:2001/02/20(火) 22:52
 CWinAppクラスにWriteProfileStringという便利なメソッドがありますが、WinNT上ではレジストリに情報が記録されるので、あまり大容量のデータ…例えば全部で数メガとか…を保存するのはマズかったりするでしょうか。それとも、気にせずにがんがんレジストリを使ってしまっていいのでしょうか。記録内容はアプリの設定などですが、その設定のバリエーションが膨大なのです。
 よろしくおねがいします。
10694:2001/02/20(火) 23:48
>>97
キーワードありがとうございますっ!
一行でこんなに助かったのは初めてです。感謝だなぁ。
107>100:2001/02/21(水) 01:24
SetWindowTextしたら、すべての文字列が当然
置き換わるはずなのに。

追加したい場合は文字列に改行をいれてみましょう。
もしくはエディットビューなど使わず、リストボックスや
リストビューを使うべきです。
108>105:2001/02/21(水) 01:30
ことレジストリとなると敏感な人が多いですが、
どうせ、COMが勝手にばんばん使って、
われわれの故知らぬところで、肥大していきます。

100Kや200Kのレジストリは設定の保持に使って
もぜんぜん問題ありません。
有名なところでは秀丸エディタがこの類です。

安全なINIファイル程度に考えてください。

まあ、いじるといろいろ面倒なことがあるので、独自の
設定ファイルのルーチンを組むのも手ですが。
(わたしのアプリの設定ファイルはみんなXMLになってます)

どうしても、レジストリが、
肥大するのが厭なら、HKEY_LOCAL_MACHINEなどの単一な
ハイブに書き込むのがいいです。(書き込めない場合もありますが)
109>99:2001/02/21(水) 01:40
クラスウィザードに頼ってる人が
そんな奇妙なことは、やらない方がいいです。
110デフォルトの名無しさん:2001/02/21(水) 01:52
>105
普通レジストリにはでかいファイルは書かない。
INIファイル(普通のファイルでも良い)に書いて
レジストリにはそのファイル名を書いとく。
設定の読み書きするときはレジストリからファイル名を読み込んで
そのファイルを読み込む。
111デフォルトの名無しさん:2001/02/21(水) 01:56
>>108
うーん、確かにCOMは破壊的だね。
いくら自分で気を付けて無駄にレジストリを使用しないようにしてもばんばん重くしていく。

でもやっぱり100kや200kもレジストリ使われたくないです。
たとえ1kでも、どうしてもレジストリを使わざるを得ないようなデータ(ファイルの関連づけとか)以外は極力INIファイルにデータを保存して欲しいなあ。
112>110:2001/02/21(水) 02:06
たしかに数メガはやばいかな、、。

INIファイルの代替という旨、
MSが言ってるので、
10K程度なら気にせずに書き込んでるけど。
113108>111:2001/02/21(水) 02:15
INIファイルのサイズは32Kの壁がありますので。
ワタクシ的には使いたくありません。

というわけで、
コンスタントに存在するモジュールの場合は、
わたしの場合は、アプリと同じフォルダのXML
ファイルか、レジストリに保存しています。
本来ならシェルを使って設定ディレクトリにぶちこむ
べきですが。

設定ディレクトリへのパスはIE4.0が入っていないと、
わかりません。

アンインストーラーの用意ができてるのなら、レジストリ
のHKCRあたりに設定をぶちこむのはお手軽な手段です。
114デフォルトの名無しさん:2001/02/21(水) 10:49
>107
なるほど。
CEditView だと SerializeRaw メソッドがあるので、
CEditView に文字列を保持しているかと思っていたのですがそうじゃないんですね。
じゃあおとなしく CString str += nextLine; とでもしてみます。

ありがとうございました。
115デフォルトの名無しさん:2001/02/21(水) 18:32
OLEコントロール(ActiveXか・・・)を貼り付けて
F5を押すと、InitInstanceをコールしてくださいというようなメッセージが出て
ダイアログも出ずに終了するのですが、どこに何を記述したらいいのでしょうか
教えて下さい!
116デフォルトの名無しさん:2001/02/21(水) 18:48
OnDraw関数の中でpDC->SetBkColorを使っても背景色が変わらないんですが、
どうすれば背景色を変えられるんですか?
Rectangleで塗りつぶすしかないんですか?
117デフォルトの名無しさん:2001/02/21(水) 21:30
数値(int型やdouble型の)を文字列に変換して
STLのstringにぶちこむのにC++的に一番いい方法は
どんなのでしょうか?ついでにその逆も。
118デフォルトの名無しさん:2001/02/21(水) 23:43
>INIファイルのサイズは32Kの壁がありますので。
これほんと?
119デフォルトの名無しさん:2001/02/22(木) 00:21
>>117
良いかどうかは別としてストリーム使うのが標準(というか他に無い)
文字列ストリームね。
120115:2001/02/22(木) 09:49
こんなメッセージです・・・
>>> If this dialog has OLE controls:
>>> AfxEnableControlContainer has not been called yet.
>>> You should call it in your app's InitInstance function.
どこに、何を書けばよいのやら・・・
121デフォルトの名無しさん:2001/02/22(木) 10:12
>INIファイルのサイズは32Kの壁がありますので。
ぷ。馬鹿正直に専用のAPIで記録してるやつ発見。
122115:2001/02/22(木) 10:24
自己解決
StdAfx.hに
#include <afxdisp.h>

InitInstanceに
AfxEnableControlContainer();

を追加で、解決したような気がします
123デフォルトの名無しさん:2001/02/22(木) 10:25
>>121
自分で書いてるのか?
仕事遅そうだな。
124>116:2001/02/22(木) 11:50
コントロールの背景なら
WM_CTLCOLORか、WM_CTLCOLORXXX、ウィンドウメッセージ
を使用してください。

詳細はWIN32SDKを。
125>117:2001/02/22(木) 12:00
(数値->文字)

c++だけで済ませるなら、ストリングストリームでしょうが、
これは将来的に、obsoleteされる危険があります。
となんかの本に書いてありました。
<cstdio>や<cstring>もc++の一部ですので(これはおそらく不変です)
素直にstd::itoa(),std::sprintf()などして利用するのがいいかと。

(文字->数字)
std::atoi()

もしかしたら、便利なアルゴリズムが標準で用意されているかも、
しれませんが、寡聞にして聞きません。

もし余裕があるのであれば、basic_stringテンプレートから
独自拡張したクラスを構築されてはいかがですか?
仕事で使うのなら、テンプレートベンダーから購入するのも
よろしいかと。
126デフォルトの名無しさん:2001/02/22(木) 15:42
いくらstringやstreamを使ってスマートに書いても、
ダイアログアイテムとかとやりとりするときに結局
文字列使わなきゃいけないからメンドくさい。
どうすればいいのね。
127デフォルトの名無しさん:2001/02/22(木) 15:55
メニューの項目(新規作成や開くなど)が表示されている時に
これをソース上で消すようにするにはどうすれば良いのでしょうか?
128デフォルトの名無しさん:2001/02/23(金) 17:19
コネクト済みのソケットがあり、別スレッドから
send、receiveを行いたいのですが、ソケットハンドルを
引数渡しして、attachすれば良いと本で読んだのですが、
具体的なやり方がわかりません。
どなたか分かります?

別スレッド呼び出し関数は以下です。
AfxBeginThread(ThreadProc,GetSafeHwnd(),THREAD_PRIORITY_NORMAL);
129デフォルトの名無しさん:2001/02/24(土) 18:16
CFormViewを使ったアプリケーションを開発してるのですが、マウスホイールを使うと
コントロールのフォーカスが勝手に移動するので困ってます。
これを制御する方法はないですか?
Spy++などでメッセージの流れも見てみたのですが、上手い方法が思い付かなくて‥‥‥
130c++:2001/02/25(日) 03:39
コンソールへ出力するときで、 cout を使うとき、
UNICODE が定義されているなら wcout に自動でするような
マクロは定義されていないのでしょうか?
tchar.h にはなかったのですが……。

同じような問題に陥った方・わかる方で、
どう解決されたかをご教示ください。
131名無しさん:2001/02/25(日) 07:01
非常に初心者的な質問で申し訳ないんですが、
サービスパックはバージョンが4のやつを
当てればすべてOKなんでしょうか?
ちなみにnafxcw.libがなくて困ってます。
132SAGE:2001/02/25(日) 09:19
>>131
それって Learning Edition には入ってないヤツじゃなかったっけか。
133名無しさん:2001/02/25(日) 23:29
>>132
え?本当ですか?私のはVC++6.0StandardEditionってやつですが
Learning Editionってこれのことですか?
ということはprofessional版以上じゃないとnafxcw.libが必要な
ソースはビルド出来ないってことですか?がーん!!
134デフォルトの名無しさん:2001/02/26(月) 00:12
ちょっと曖昧な質問なのですが、オブジェクト指向っぽい感じで
メッセージ処理をスマートに行う方法があれば教えてください

今はプロシージャを持ってるクラスに、メッセージと直接関係する
クラスの参照をいちいち全て持たして、呼び出しているのですが・・・

できればメッセージと関係するクラスに直接メッセージを送りたい
のですが、ウィンドウをサブクラス化したりするとかえって
分かりづらい気もして・・・何かよい方法があったらお願いします
135デフォルトの名無しさん:2001/02/26(月) 00:18
>>134
質問の意味がかなりわかりづらいから適当な答えになるけど、
MFCの様に継承されたオブジェクトごとに
メッセージフローを持たせればいいのではないんでしょうか?
136デフォルトの名無しさん:2001/02/26(月) 00:21
std::mapでメッセージをディスパッチする
なんか、この方法、前から使ってたんだが最近○ねう○おとかが
使い出したんで別の方法を模索中
137134:2001/02/26(月) 00:45
>>135
わかりづらい質問ですいません。
更に申し訳ないことにMFCはよく知らないんです。うーん、
なんとなく今やってることと同じような気も・・・違うのかなぁ。
今度ちょっとMFC、読んでみます。
>>136
なるほどー、これは良さそうですね。試させて頂きます。
ついでにやねさんのところ行って見てきてみます。
ブックマーク残ってれば(w

お二人とも貴重なレス、ありがとうございました。
138デフォルトの名無しさん:2001/02/26(月) 01:06
>>136
hashでやれば?
おれは昔っからそうやってるよ。
真似っ子は嫌いそうだが。
139132:2001/02/26(月) 07:44
>>133
あーBorland系とごっちゃになってた。そう、Pro版だけ。
「MFCをスタティックリンク」みたいな設定をやめて
ダイナミックリンクするようにすれば nafxcw.lib 不要になるはず。
140デフォルトの名無しさん:2001/02/26(月) 09:58
MFCもハンドルのマップでDispatchしてるよ。
141デフォルトの名無しさん:2001/02/26(月) 12:02
ATLのメッセージマップを参考にしてみよう。
メッセージマップのチェイン化でメンバオブジェクト(EDITクラスウインドウとか)へ
メッセージを分配することができる。
142でふぉると名無しサン:2001/02/26(月) 14:52
winnt.hの中をのぞいていたら、不明な記述があったんで聞くっす。

#define __TEXT(quote) L##quote

なにこれ???
シャープはなにを意味するんですか?
はじめてみた....
143名無しさん:2001/02/26(月) 15:01
>>142
連結演算子です。
144142:2001/02/26(月) 15:23
>>143
おおう、即レス助かります。
連結演算子っすね。
調べちゃったよ。
つーかしらんかった、こんな怪しげな演算子があったとは。
145デフォルトの名無しさん:2001/02/26(月) 16:33
>>138
どうも。
正確にはhashmap使ってたんだが、まー、似たようなもんだから。
今読み返してみてどうにも負け惜しみにしか見えないな。俺の書きこみ

結局記事にしたもん勝ちだな(藁
146デフォルトの名無しさん:2001/02/26(月) 16:49
て言うかさ、勝ち負けなんかねぇよ、そんなもんくれぇで。
147134:2001/02/27(火) 00:49
>>140>>141
ありがとうございます、何を見ればいいみたいな助言は本当に助かります
自分のソースがどんどん分かりやすくなっていって、一人ほくそ笑んでます
148133:2001/02/27(火) 04:36
>>139
なるほど、静的リンクしたいとき必要なライブラリってわけですか。
実はあきらめてVC++アンインストールしてしまったので
もういちどインストールして頑張ってみます。
ありがとうございました。
149デフォルトの名無しさん:2001/02/27(火) 12:05
ダイアログにデータをUpdateData(FALSE)で返すときに、
CStringの項目に改行コード(\n)を入れると、
ダイアログでは改行されずに・に化けちゃうんですけど
どうしたら良いんでしょうか?
150SAGE:2001/02/27(火) 12:10
>>149
改行コードは \r\n 。
151デフォルトの名無しさん:2001/02/27(火) 12:46
\nで・になるぞなんでだゴルァって質問なんか週に1回は無いか!?
152名無しさん@お腹いっぱい。:2001/02/27(火) 12:55
ActiveXコントロール/コントロールコンテナから
WordやExcelのドキュメントの書き込み禁止/許可を
させるにはどうしたよいのでしょうか?
153149:2001/02/27(火) 13:07
>>150
ありがとうございました。
>>151
そうなんですか、次回からは過去ログ読みます・・・・
154デフォルトの名無しさん:2001/02/27(火) 16:31
ソケット通信で1460バイトで切れるのは何でですか?
155デフォルトの名無しさん:2001/02/27(火) 16:45
・たいがいLANではMTUがヘッダ除けると1460バイトだから。
・recv一発で全部読み込めると思っている。
このあたりか。
156デフォルトの名無しさん:2001/02/27(火) 16:47
>>155
どうやったら全部読めるんですか?
157デフォルトの名無しさん:2001/02/27(火) 17:23
二歩目を踏み出さずに立ち止まる、何と愚かしいことよ。>156
158デフォルトの名無しさん:2001/02/27(火) 19:39
>>156
TCPはストリーム指向なのでパケットの区切りに特別な意味はないよ。
読みたいところまでrecvしよう。
159ななし:2001/02/27(火) 22:03
下のこれね、
class mycom : public myif {
protected:
ULONG refcnt;
public:
mycom(): refcnt(0) {};
~mycom() {};
HRESULT myfunction(char *buff);
#if 0
// 多重継承を解決しつつインターフェースを返す
HRESULT QueryInterface(REFIID riid, void **obj);
// リファレンスカウントの操作と自己消滅
ULONG AddRef();
ULONG Release();
#else
// IUnknownメソッド
STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID*) PURE;
STDMETHOD_(ULONG, AddRef) (THIS) PURE;
STDMETHOD_(ULONG, Release) (THIS) PURE;
#endif
};
C2555(メソッドの返り値が違う)ってエラーで
#elseの方でないとコンパイルとおらないけど、
VisualStudio6ってそういうもんですか?
Cマガの解説間違ってない?
160デフォルトの名無しさん:2001/02/27(火) 22:27
WIN95でマウスホイールの動作を制御するためにOnRegisteredMouseWheelを
オーバーライドしたいのですが、オーバーライドのやり方がわかりません。
一体、何をどうすればOnRegisterdMouseWheelをオーバーライドできたことに
なるんでしょうか?
161デフォルトの名無しさん:2001/02/28(水) 01:55
>>159
__stdcallが足らない。
Cマガの解説は知らない。
162デフォルトの名無しさん:2001/02/28(水) 04:48
jpegsrc.v6b.tar.gz っていうのを使ってJPEGファイルを扱ってるんですけど。
JPEGのコメント?(制作したソフトの名前とか著作権とか)を読み込むには何て関数使うんですか?
逆に保存時にコメント入れるにはどの関数使えばいいですか?
ソースがデカ過ぎて良く分からん。
誰か教えてお願い。
163SAGE:2001/02/28(水) 08:38
wrjpgcom.c とか rdjpgcom.c は違います? >>162
164156:2001/02/28(水) 11:33
>>157_158
ありがとん♪できました
165デフォルトの名無しさん:2001/02/28(水) 16:25
AfxBeginThreadでユーザーインタフェーススレッド起こして、
そん中でsleep(5000)させる(テスト的にね)と
メインダイアログも固まってしまいます。
これじゃ、マルチスレッドの意味がないんですがどうすればよいの?
166デフォルトの名無しさん:2001/02/28(水) 23:24
>163
ありがとう。
これから調べてみる。
167>165:2001/03/01(木) 00:14
自分の書いたプログラムをよーく見直す。
168デフォルトの名無しさん:2001/03/01(木) 00:57
>>165
SetTimerやKillTimer使ってみたら?
169デフォルトの名無しさん:2001/03/01(木) 01:54
>>168
>>165 がやりたいのは、そういうことじゃないと思うんだけどなぁ・・・

作ってるWindowに親子関係が有るとSleep(5000)してる間のメッセージが
止まっちゃうから、当然そうなるな。
I/O待ちで時間が掛かる処理は、非表示ウインドウにして裏にで回したほうが、
多分期待するような、マルチスレッドになるだろうけど。
そもそも、ユーザーインターフェーススレッドが、それだけ黙って止まるんなら、
メインダイアログも一緒にそのまま止まってて良いんじゃないの?
なんか、作りをもう少し考えたら?VC+MFCだからと言って、
スレッドで必ずしもウインドウ持たなきゃいけない訳でもないと思うんだけど。
170名無しさん:2001/03/01(木) 03:31
>>28の者ですが、
直りません。
171デフォルトの名無しさん:2001/03/01(木) 05:05
>>165
とりあえず複数の掲示板で同じ質問するのは良くないかも
172デフォルトの名無しさん:2001/03/01(木) 09:22
>>171
あ、ばれた・・・・でも急ぎだったんで・・・・
173デフォルトの名無しさん:2001/03/01(木) 11:03
sleep(5000)するなんて、ユーザインター
フェイススレッドじゃないよ。
174デフォルトの名無しさん:2001/03/01(木) 13:12
>>173
しょうがないよ。
165は自分のことしか考えないドキュソだから・・・。
175デフォルトの名無しさん:2001/03/01(木) 17:25
#include <stdio.h>

void main()
{
  printf( "好きなことを書きましょう" );
}

これすらコンパイルできません。どうやってもエラー1出てしまいます。
拡張子は.cppなんですが、間違ってますか?
新規作成のときに、どれを選べばいいんでしょうか
176175:2001/03/01(木) 17:27
それとも、保存するディレクトリが間違っているんでしょうか?
177デフォルトの名無しさん:2001/03/01(木) 17:27
>>175
半角スペースと全角スペースってわかる?
まずそれからチェックだな。
178デフォルトの名無しさん:2001/03/01(木) 17:29
 VC6での質問ですけど、新しくアプリを作るのに新規プロジェクトを作成したのですが、いくつかのユーザーインターフェースをはじめとするリソースを他のプロジェクトから流用したいのですが(現プロジェクトから他プロジェクトを参照するという形で)、現プロジェクト側の考え付く限りの#include文を修正しても、どうしても他プロジェクトのリソースを参照してくれません。なにか良い方法はあるのでしょうか。
 また、そこで思ったんですが、共有リソースはリソースとインターフェースクラスでDLLにしてしまうしか手がないのでしょうか。
179175:2001/03/01(木) 17:30
あ、ちなみにVC++6.0です。
180デフォルトの名無しさん:2001/03/01(木) 17:32
>>175
エラーメッセージを書いといたほうが答えてくれる人が増えるよ(多分)。
181175:2001/03/01(木) 17:34
Cpp1.obj - エラー 1、警告 0
という感じです。
エラー、警告ウィンドウは出なかったです。
182デフォルトの名無しさん:2001/03/01(木) 17:56
wara
183デフォルトの名無しさん:2001/03/01(木) 18:11
 165さんの質問に便乗なのですが、今スキャナからデータを取り込むアプリを作っていて、VC6+View/Doc(MDI)アーキテクチャでアプリの骨組みができたところなのですが…
 スキャナに紙を挿入してスキャンを完了した時点で、実際にデバイスを操作しているスレッドからコールバックし、そのコールバック先の関数内でtheApp.OnFileNewを呼んでDocがデータを装填、Viewも作成される…という段取りだったのですが、View作成時にどうしてもエラーが起きてしまいます。(Docは問題なく作成されてました。) そのエラーはWinMDI.cpp内のASSERT_KINDOF(CMDIFrameWnd, pMainWnd);に引っかかるというのものです。これが、デバイス操作のスレッド(AfxBeginThreadで呼んでて、CWinThreadではないやつ)を、AfxBeginThreadを抜いて、ただの関数として呼ぶと、なんのエラーもなく完璧にViewも作成されます。僕の頭では、スレッドのコールバックを契機としてOnFileNewを起動するとASSERT_KINDOF(CMDIFrameWnd, pMainWnd)に引っかかるというのが不思議でしょうがないのですが、なにか良いご指導をいただけないでしょうか。よろしくおねがいします。
184デフォルトの名無しさん:2001/03/01(木) 20:41
複数のDoc-Viewをもつアプリを作っているのですが、新規作成とやった
ときにMFCが標準で出すどのDocumentを作りますか?みたいな確認
ダイアログが出てしまいますが、あれを出さずに、メインフレームの
メニューから選択するようにしたいです。
どうやって対応させればよいでしょうか?
185デフォルトの名無しさん:2001/03/01(木) 22:13
MFCに関してなんですが、CWndでWindowを作るときに、Createメソッドの6番目のパラメータで、子WindowのIDを指定しなければいけないらしいですが、いったいどこからこのIDをとってくればいいのでしょうか。
186デフォルトの名無しさん:2001/03/01(木) 22:26
てめーで定義しろ>185
187デフォルトの名無しさん:2001/03/01(木) 22:58
185ですけど、なにを定義してもいいということですか?
188デフォルトの名無しさん:2001/03/01(木) 23:34
>185
他のコントロールと被らなければOK。
189デフォルトの名無しさん:2001/03/02(金) 00:31
188に補足
「他の」ってのはもちろん同一の親ウィンドウを持つ…ってことだろう。
それと…ちったあてめーで考えるか、やるかしてみろ。>185
190175:2001/03/02(金) 01:02
たびたび、初心者質問ですみません。
エラーメッセージ「ファイル'***.h'の拡張子に関連したコンパイルツールが無いためにコンパイルできません。」
とでます。
これは、インクルードファイルをコンパイルしようとしたとき、何時でも出てきます。
VC++6.0には、付いてますよねぇ・・・?コンパイルツール・・・。
191デフォルトの名無しさん:2001/03/02(金) 01:21
.hをコンパイルしようとなんてするな。>190
192175:2001/03/02(金) 01:28
>>175の原因がわかりました。
mspdb60.dllが無くて、cl.exeが起動できないみたいです。
これってどこかではDLできないんでしょうか。vectorにも無いみたいですし・・。
193デフォルトの名無しさん:2001/03/02(金) 02:05
>>175,192
パス間違ってるだけじゃねーの?
cl.exeローカルドライブ全検索して味噌
194193:2001/03/02(金) 02:11
で、見つかったパスを
ツール-オプション-ディレクトリ-実行可能ファイル
に通せばいいと思ふ。
195175:2001/03/02(金) 03:44
あ、出来ました。193さんどうもありがとうございました。
自分の場合、「D:\Microsoft...」のフォルダの名前を
「VC++」と変更していたので出来なかったみたいです。(これが全ての元凶の様でした)
193さんのレスがヒントになりました。
あ、あと、>>192のMSPDB60.dllは、間違ったディレクトリにあったので、
Windows\system内に移動させたらcl.exeは動くようになりました。
どうもありがとうございました。
196165:2001/03/02(金) 10:19
出来ました。
処理をコンストラクタに書いてました。
Run()を作ってそっちに移行するとうまく動きました。
すいませんでした。皆さんありがとうございました。
ときに、コンストラクタとInitInstance()の
違いって何なんすか?
197HelpMe:2001/03/02(金) 11:05
Windows Sockets通信ですでに開いてるポートを開こうとすると
Bindで失敗してしまいます。
で、そのポートをどのアプリケーションが開いているか調べる方法って
ないでしょうか?
198初心者:2001/03/02(金) 12:31
ダイアログボックス内にあるコントロールボックスの
エディタが現在選択されているIDを返す関数ありませんか?
とにかく現在選択状態になっているIDの取得のしかた教えて
ください。
SDKでお願いします。NOT”MFC"
199デフォルトの名無しさん:2001/03/02(金) 13:47
VC++6.0から、ビルドしたプログラムを実行しようとすると、
リモートの実行可能ファイルのパスとファイル名を聞かれます。
ここには何を入れるのがベストでしょうか。
200デフォルトの名無しさん:2001/03/02(金) 14:37
>>199
lib?
201デフォルトの名無しさん:2001/03/02(金) 15:09
>VC++6.0から、ビルドしたプログラムを実行しようとすると、
>リモートの実行可能ファイルのパスとファイル名を聞かれます。
>ここには何を入れるのがベストでしょうか。

普通はそんなこと聞かれないはずですが、どういうプログラムを
ビルドしたんですか?
202デフォルトの名無しさん:2001/03/02(金) 15:31
>>198
HWND GetFocus(VOID)
とか。
203デフォルトの名無しさん:2001/03/02(金) 15:35
>>196
コンストラクタはnewされると呼び出されるものですが、InitInstance()
は、WinMainが呼び出すものです。
204デフォルトの名無しさん:2001/03/02(金) 17:20
>>97

貧乏大作戦のダメジジイが途中で挫折して捨てぜりふを残して
さっていくさまににてるな。もう戻ってこなくていいよ。
205デフォルトの名無しさん:2001/03/02(金) 17:21
MFC使う前にC++を少しは勉強しろと言いたい。
206デフォルトの名無しさん:2001/03/02(金) 17:21
↑スレ間違った。スマソ
207デフォルトの名無しさん:2001/03/02(金) 17:23
204が間違いね。
208デフォルトの名無しさん:2001/03/03(土) 15:50
wsprintfで、書式制御文字列でdouble型を使う方法はないんでしょうか。
sprintfでは%eや%fで使えるのに。
209デフォルトの名無しさん:2001/03/03(土) 18:04
>>208
sprintf使えばいいじゃん。
210デフォルトの名無しさん:2001/03/03(土) 19:39
MFC使っています。
ビュークラスで左ボタンダウンを拾っていますが、
これって取りこぼしとかあるんでしょうか。

OnDrawの中身が糞コード(自作のね)というのはあると
思うんですが、ノートと据え置きで挙動が微妙に違う。
211デフォルトの名無しさん:2001/03/05(月) 02:00
ド初心者でもわかるVC++6.0の教本紹介してください。
どれ買っていいかわからなくて。
ちなみにPC暦は3年なので、こっちについてはド初心者でもないです。
212デフォルトの名無しさん:2001/03/05(月) 03:35
>210
画面更新速度の違いでしょ?
ノートは遅いからなんじゃない?
213麻衣:2001/03/05(月) 05:22
214デフォルトの名無しさん:2001/03/05(月) 06:29
麻衣たぁん、、、、ハァハァ(;´д`)
215デフォルトの名無しさん:2001/03/06(火) 14:26
ActiveXのWebBrowserオブジェクトを使って、ローカルにあるHTMLファイルを
表示させるアプリを作っています。表示させるHTMLファイルにもしエラーが
あった場合でも(スクリプトエラーとかプラグインエラー)
アラートのダイアログは絶対に出してはいけないという仕様です。
ちなみにSilentプロパティはTRUEにしたら、スクリプトエラーに関しては
対応できましたが、プラグインエラーに関してはいまだに出てしまいます。
どなたかこの辺の技術に詳しい方、ご教授願います。
216215:2001/03/06(火) 15:38
もしくは出てきたダイアログに対して自動でOKボタンを押すような
処理でもいいです。
217デフォルトの名無しさん:2001/03/06(火) 19:27
ウィザードを使ってクラスを作るとコンストラクタがプロテクテッドになるものがありますよね?
っていうかなっちゃったんですけど...
で、newしたりとか宣言部分でエラーになっちゃうわけです。

なにゆえプロテクテッドになるんでしょう?
218デフォルトの名無しさん:2001/03/06(火) 20:20
>>217
そのクラスを勝手にnewしたりするなって意味では?
そのクラスを別途生成するメソッドがどっかに定義されているか
フレームワーク内部で使うクラスのどっちか。
(前者の場合そのクラスのスタティックメソッドの可能性が大)
219デフォルトの名無しさん:2001/03/06(火) 21:14
VCって言うよりはC++の質問なんですけど

ウインドウプロシージャやダイアログプロシージャを
クラスのメンバ関数に出来ないもんでしょうか?
例えばclass CMyDlgって感じにダイアログ用のクラスを作った場合
そのクラスのメンバ関数にプロシージャがあればすっきりするなぁ
と思うんですが・・・

ようはAPIのRegisterClassとかCreateDialogでC++のメンバ関数の関数ポインタを
渡すようなのりの動作をさせたいんですが、C++のメンバ関数って
動的に使われる(?)からそのままじゃ渡せないですよね?
staticメンバ関数にすればいけそうな感じもするんですが
(まだ完全に試していないというかstaticメンバ関数にした事無かったからよくわからない)
staticメンバ関数って、クラスの静的データメンバにしか
アクセスできないような。
それだと「メンバ関数をプロシージャにしたい」意味がなくなってしまうので・・・

なんかいい方法ありますか?
できれば詳しく「何故可能なのか?」「何故不可能なのか?」まで教えていただきたい
んですが・・・(多くは望みません、ヒントだけでも)

220麻衣:2001/03/06(火) 22:06
C Studioってホームページに答えがあるよ♪
URLは・・・わすれちゃったの、エヘヘ
221画像系:2001/03/06(火) 22:26
の質問です.かなりの素人質問なんですが,表示形式を変えるにはどう
したらよろしいでしょうか?
つまり,理論単位を0.01ミリメートルや1ピクセルに変換する方法が分
からないで困っています.よろよろ.
222:2001/03/06(火) 22:34
>>219
そゆときは static なメンバ関数を渡すのが普通だね。で、大抵、
関数ポインタを渡すと同時にパラメータ渡せるようになってると
思うから、パラメータとしてクラスの適当なオブジェクトを渡すように
しといて、staticな関数の中でそのメンバを呼び出すっていう
2段構えにするとOK☆

「何故直接non-staticなメンバ関数を渡すのは不可能か?」だけど、
えーと、なんというか、staticじゃないメンバ関数を呼び出すには
関数のアドレスだけじゃなくてthisポインタもちゃんとなんとかしなくちゃ
ならないわけ。だから関数ポインタ渡すだけじゃ×…。
223名無しさん@LV2001:2001/03/06(火) 23:42
今C++を勉強してるのですが、簡単なプログラムをビルドして実行させると、文字がすべて出たら自動的に閉じちゃいますよね?
これだときちんと表示されてるか確認が取れないんです。
これを避ける方法ってありますか?

あと、VC++6.0のMFCで製作したツールなどを起動させるには、どのDLLが必要ですか?
224デフォルトの名無しさん:2001/03/06(火) 23:52
>>223

DOS wo yameru
225デフォルトの名無しさん:2001/03/06(火) 23:54
>>223

動体視力を鍛える
226210:2001/03/06(火) 23:57
ちょい聞き方アレでしたか。
MFC的に、貯めて貯めてたまったイベントは
いつか吐き出してくれる作りなんでしょうか。
それとも、捨てられるんですか。
227デフォルトの名無しさん:2001/03/06(火) 23:57
getch() wo saigo ni...
228デフォルトの名無しさん:2001/03/07(水) 00:05
どうしてMSDNはあんなにわかりにくいんですか?
初心者は氏ねというMSからのメッセージですか?
229名無しさん@LV2001:2001/03/07(水) 00:16
>>227

このコードだとしたらどこにつければいいですか?

#include <iostream>
using namespace std;

int main()
{
cout << 06 << '\n' << 016 << '\n' << 0 ;

return 0;
}
230デフォルトの名無しさん:2001/03/07(水) 00:16
>>228
お前はもう死んでいる!!
231デフォルトの名無しさん:2001/03/07(水) 00:18
#include <iostream>
using namespace std;

int main()
{
cout << 06 << '\n' << 016 << '\n' << 0 ;

getch();

return 0;
}

キーボードで何か入力するまで終わらないはず。(多分
232デフォルトの名無しさん:2001/03/07(水) 00:28
定義されていない識別子です。

とのエラーが・・・。
233デフォルトの名無しさん:2001/03/07(水) 00:28
こんなことしなくてもctrl+f5でよし
234デフォルトの名無しさん:2001/03/07(水) 00:32
_getch();

MSDNで調べろ。
わしゃ Windows プログラマじゃ。
235デフォルトの名無しさん:2001/03/07(水) 00:49
>>233
普通に「実行」させようとすると、
リモートなんたらのパスとファイル名聞かれるんですよね・・・。
そこに何を入れていいかわからなくて。。。。
236デフォルトの名無しさん:2001/03/07(水) 01:01
>>235
ん??ライブラリ作ってるのか?
プロジェクト作り直してみれ。
237デフォルトの名無しさん:2001/03/07(水) 01:51
>>236
いや、普通にプロジェクトで作ってますけど、
親フォルダの名前変えたからいかんのかな・・・
238麻衣:2001/03/07(水) 02:40
リモート何タラって、リモートデバッグしようとしてるんじゃない?
239デフォルトの名無しさん:2001/03/07(水) 03:42
リモートデバッグまたはリモートターゲットの更新には、リモート実行可能ファイル名が必要です。
リモートの実行可能ファイルのパスとファイル名
[エディットボックス]

ってなかんじです。
240麻衣:2001/03/07(水) 05:03
>>239
http://www.kt.rim.or.jp/~miz/osaru/rdebug/rdebug.htm

このページの通りにすればリモートデバッグできると思うよ♪
わかんなかったら・・・わかんないやり方はやめて普通にすればいいと思う。

それにしても、そこまで出てるんだったらとりあえずgooとか、googleで検索してみればいいと思うんだけどなぁ?
人に効いてばかりだとお馬鹿さんになっちゃうよ?
241デフォルトの名無しさん:2001/03/07(水) 05:52
>>240
  XΛ_ΛX  / ̄ ̄ ̄ ̄ ̄
  ( ^∀^)< 効いて
  (    )  \____
  | Y |
  (__)_)
242麻衣:2001/03/07(水) 08:00
>>242
わーんっ!!!

最近ATOK11を14にしたばっかりだから辞書がお馬鹿さんなんだよぉ・・・。
ATOK8のほうが良くなかったかなぁ?>ALL
243デフォルトの名無しさん:2001/03/07(水) 20:22
漏れはIME推奨しません。
なぜかというと辞書が使い物にならんからです。
はっきりいってヤダです。
もうヤダです。
辞書をがむばって登録したのに、いきなり使えなくなるなんてヤダです。
IMEは別にうんこ以下とまでは言わないけれど、うんこ以上肛門未満ですよ。
でもやっぱりIMEと付き合っていくしかないんですよ。
運命なんですよ。
ATOK入れたいけど、それもヤダです。
だから僕はプログラミングはじめたのですよ。
最高の日本語変換システムを作るためですね。
もう60%はできてますよ。
当然売るんですよ。
これで大もうけするんですよ。
同意してくれた人には抽選で売上の10%あげるんですよ。
244デフォルトの名無しさん:2001/03/07(水) 20:54
とりあえずMSの製品は起動時CPU食いすぎ
245デフォルトの名無しさん:2001/03/08(木) 00:11
ATOKもIMEですけど?>243
アホが多いな・・・
246マルチメディア:2001/03/08(木) 02:09
某猫でもわかってしまうというプログラミングの解説ホームページで
ウィンドウズのSDKの所を読んでいたんですが、
VC++6のリソースエディタを使ってリソーススクリプトを作って、
ウィンドウクラスの登録で
WNDCLASS myProg;



myProg.lpszMenuName="IDR_MENU1";



RegisterClass(&myProg)
と言う風にやってもビルドした後メニューが表示されないんですが
どうしてなんでしょうか…?
resource.hの中の
#define IDR_MENU1 401
を消せば表示されるんですが仕組みがよくわかりません……。
誰か教えて教えて教えて教えて教えて下さい下さい苦堕鎖慰
247マルチメディア:2001/03/08(木) 02:36
ウルトラ初心者の方に書けばよかった……
248デフォルトの名無しさん:2001/03/08(木) 10:00
なんで麻衣がこっちのスレに出張ってきてるんだ。
「お兄ちゃんに教えてあげる」スレに帰れっ!

帰れっ!

帰れよう!
249デフォルトの名無しさん:2001/03/08(木) 11:05
\e
250デフォルトの名無しさん:2001/03/08(木) 13:11
リソースエディタ使わずにプログラム的にメニューの文字列とかを
変えたいのですが、どうすればいいでしょう?
*.rcにあるリソーススクリプトはあまりいじりたくないのですが。
251デフォルトの名無しさん:2001/03/08(木) 14:20
>250

わがままいってんじゃねーよ
InsertMenuItemとかでぢみちに入れてみ
252デフォルトの名無しさん:2001/03/08(木) 16:44
>>246
myProg.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);
ってやってみれば、上手にいくかもね

253デフォルトの名無しさん:2001/03/08(木) 17:15
仕事で、VC++でXMLDOMDocument Object使うことになったのですが
insertBeforeメソッドが使えなくて困っています。
コンパイルすると2番目の引数の型が違うと怒られます。
IXMLDOMNodePtrを_variant_tにすれば良い様なのですが
VCは初心者なのでやり方が分かりません。
どなたか教えて下さい。
お願いします。
254いつでもどこでも名無しさん:2001/03/08(木) 20:03
>>223
[Ctrl]+[F5]
255マルチメディア:2001/03/08(木) 21:37
>>252
メニュー表示されました!有り難うございます!!
256みずき:2001/03/09(金) 00:38
実行ファイル本体とは別に、設定用のダイアログをDLLで持ちたいと思っています。

ところが、実行ファイル本体の持つリソースIDと、設定ダイアログのDLLの
リソースIDが衝突してしまうという問題が発生してしまいました。

とりあえずIDを手動で変えることで回避はできると思うのですが、
これから先リソースが増えてきたら、それでは対応できない気がするのです。

なにか、良い方法はありませんでしょうか?
どなたか、よろしくお願いします。
257デフォルトの名無しさん:2001/03/09(金) 03:18
>256
リソースファイルのヘッダファイルの

_APS_NEXT_RESOURCE_VALUE

とかを変更しておけば毎回変えなくていいじゃない?
258トリッキーの1:2001/03/09(金) 04:30
ちょっと質問させてください。
Visual C++で簡単なグラフィックを扱うアプリを作ろうとしたとき、
(例えば……オセロをさくっと作ろうとしたときの事を考えてください)
皆さんどういった環境で作成しますか?

WizardでMFCだと、document/viewのサポートが鬱陶しいし
生MFCを書くのもどうも面倒で気が引けます。
ましてやC+APIってのは時代に反しているし(お気に入りだけど)。

こういう状況で、皆さんのchoiceを聞かせてください。
259デフォルトの名無しさん:2001/03/09(金) 06:25
>ましてやC+APIってのは時代に反しているし(お気に入りだけど)。
ゲームならAPIだろ?
MFCはウィンドウズっぽいソフト向き!
260デフォルトの名無しさん:2001/03/09(金) 06:46
ダイアログベースで、入力はすべてコモンコントロールとか
真面目な話、小さめのアプリなら私もC+++API(w
ウィンドウズっぽい機能使わないならかえって煩わしいですよね、MFC

ましてやトリッキーの1さんレベルなら!(cool!cool!cool!)
261いさましいチビの女:2001/03/09(金) 06:58
>>258
WizardのMFCでも、DOC/VIEWを強制されるってわけじゃないけどね。
特に6からは、手作業なしでチェックボックスひとつでDOC/VIEWを
はずすことができるし。
262みずき:2001/03/09(金) 09:28
>>257
ありがとうございます。
でも、最初から、_APS_NEXT_RESOURCE_VALUE の
値は、メイン側とDLL側で違っていたみたいなんです;
どうしたら良いんでしょうか?

↓DLL側のresource.hの一部

#define IDD_WINDOW1 102
#define IDD_WINDOW2 103

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 2000
263デフォルトの名無しさん:2001/03/09(金) 10:38
すごい簡単な事かもしれませんが、困ってます。教えて下さい。
NTサーバに自動でフォルダを作るプログラムを作ろうと思ってるんです
けど、アクセス権の設定が必要なんです。で、以下のどちらかができ
れば、良いのですけど..。
1.フォルダを作成した後、任意のユーザにフルコントロールのアク
セス権を与える。
2.任意のユーザでフォルダを作成する。
よろしくお願いします。
264トリッキーの1:2001/03/09(金) 11:29
やはり、他の選択肢は無いのかな?
OWLとか出てくるかと期待していたけれど(笑)

>>260
過大評価サンクス(笑)
ダイアログベースだと、例えばグラフの出力なんかがちょっとトリッキーになってしまうので、
あまり好きではないんですよ。
MFCのWizardで、CFrameWndを使わないものがあれば最高なんですけれどね。

>>261
そうなんですが、その場合Wizardが狂ったコードを出力するので
(関連づけられていないViewが作成されて、ASSERTで飛ぶ模様)
その程度ならばDummy Documentを介しても手間はほとんど変わらないし。
Wizardを使うなら、素直にDocument/Viewを使っておくのが無難そうです。
265デフォルトの名無しさん:2001/03/10(土) 00:40
マルチメディアタイマーのコールバック関数とスレッドを
ミューテクスで同期させることは可能ですか?
266デフォルトの名無しさん:2001/03/10(土) 01:04
多分可能だけど>265
でもカーネルオブジェクトって(他のプロセス固有な手段と比べて)遅い様だけどタイマーの精度は大丈夫?
CriticalSectionに変更できるなら、そうした方が良いんじゃないかと。
267デフォルトの名無しさん:2001/03/10(土) 01:27
ありがと266
くりてぃかるでいってみるよ
タイマーの精度・・・いまいちのような気が
268デフォルトの名無しさん:2001/03/10(土) 23:16
フラットツールバーをつくったんですが、
単純にSetWindowLongでTBSTYLE_FLATを追加しただけだと、
上下に余白ができるんで、これを回避したいんです。

例としてはHTMLヘルプとかiriaのツールバーみたいな感じです。
ボタンの縦サイズ=ツールバーの縦サイズ
みたいなスタイルにしたいのですが。
269デフォルトの名無しさん:2001/03/11(日) 06:52

IMEの制御の方法教えて。
自分のプログラムのウィンドウ上の指定した座標に文字入力ウィンドウ出して
入力された文字を漢字変換して変換した後の文字を受け取るみたいなの
「ペイント」で文字入力するときの処理と同じやつ
IME全然知らないドキュソでも分かるようなものきぼ〜ん
できれば解説してるサイトやサンプルコード付きよい。
可及的速やかにお願いモーニング!
270デフォルトの名無しさん:2001/03/11(日) 16:53
>>269
そんな虫のいい話はないぞ。
とりあえず、これはどう?
http://www.ainet.or.jp/~inoue/im/win32.html
271トリッキーの1:2001/03/11(日) 22:25
MFCならCEditViewを派生すれば簡単に出来るでしょう。
APIならEDITをスーパークラス化して使うのが一般的です。
IMEはあまり関係ありません。ふりがなを上に打つならば話は別だけれど。
272269:2001/03/11(日) 23:15
3級!
273269:2001/03/13(火) 07:27
IMEわかった。
意外と簡単だった。
てっきり初期化とかもっと複雑化だと思ってた。
ところで追加質問なんですけど入力中の文字の長さってどうやって取得するんですかね?
「ペイント」や「メモ帳」では入力済みの文字列の途中に新規にIMEで文字を追加する場合
IMEで入力中はすでにある文字列の上に描画され確定後に文字列の間に挿入し再描画してますが
「ワードパット」などではIME入力中にリアルタイムに挿入後の文字列を計算し再描画してます。
入力中の文字列は取得できるので自分で文字列の長さを計算すればいいですけど
複数行に折り返された場合どこで折り返されるか分からないため(一応計算で求められると思うけど)
自分で計算するのはダルそうです。
IMEから直接入力中文字の長さ(ピクセル単位)を取得する方法ないですか?

こういう質問は2chじゃなく本格的なMLで聞いた方がいいですかね?
274デフォルトの名無しさん:2001/03/13(火) 09:49
>>269
2chをなめるなよ〜 といっても俺はわかりません。
力になれなくてごめんな。
275トリッキーの1:2001/03/13(火) 10:16
>>273
IMEから現在入力中の文字を取ることが出来るので、
それを用いてGetTextExtentを使うと出来ないこともないです。
折り返されたらお手上げです。それを一般的に取得する方法は無いはずです。

しかし"一般に"、IME入力中にずるずると後ろにずれるタイプのプログラムは、
IME入力中の文字も自分で描画する必要があります(その方がスマートです)。
なぜかと言えば、IMEによって予期しない文字が足されることが多々あります。
(たとえばATOKは、表示は「入力文字+_」なので、文字数に1を足す必要があります)
だから、まともなプログラムならだるくても必ず自分で描画する必要があります。
自分で描画するんだから、計算もヘチマもありません。

#実際一番だるいのは、変換場所に応じて色分けすることなんですが。
#MSDNなどにも資料が全然ないので、Try&Errorで内部情報をさぐっていくしかありません。
276デフォルトの名無しさん:2001/03/13(火) 10:50
すみません、
C/C++はDOSや組込み系でばりばり書いてるんだけど
Windowsプログラムは一ミリも書いたことが無いし
右も左もぜんぜんわからんという私に適当な
Windowsプログラミングの入門書を教えてください。
277デフォルトの名無しさん:2001/03/13(火) 11:11
VC4Standard買って以来VCを買ってないんですけど
まあいろいろつかってWindowsアプリを作ってます
もうVC4はアンインストールしてしまったんですが
たまにVC4付属のMSDNみたいなやつが読みたい時があります
VCBKS40.MVBというファイルを読むツールは存在しませんか?
278デフォルトの名無しさん:2001/03/13(火) 13:56
メニューに関して質問なんですけど、
IEのお気に入りのメニューみたいに、
ドラッグ&ドロップでメニューの位置を
変更するようにするにはどうしたらいいのでしょうか?
いろいろ調べてみたのですけど、わかりませんでした。
知ってる方います?
279デフォルトの名無しさん:2001/03/13(火) 19:44
>>276
「プログラミングWindows」
通称ペゾルド本。定番だが、これに勝る入門書は今の所無い。ただしWin32APIオンリー。

MFCなら「MFCによるWindowsプログラミング」が良い。ただ順番として
API→MFCと進むのがベターか。
280デフォルトの名無しさん:2001/03/13(火) 21:57
つまり
プログラミングWindows→MFCによるWindowsプログラミング
の順番がよろしい訳ですね?
281デフォルトの名無しさん:2001/03/13(火) 23:00
VC6.0をオンライン登録したいんですが、どうやったらできますか?
もしかしてOfficeみたいにオンライン登録はインストール時のみ可能ってやつですか?

あと、MSDNだけ見たいときにいちいちVC起動するのが面倒なので直接MSDNを開きたいんですが、
ファイルが多すぎてどれが本体なんだか分かりません。
282トリッキーの1:2001/03/13(火) 23:11
>>280
Cをばりばり扱ってきた人であれば、APIから入門した方がわかりやすいでしょう。
そして「MFCによるWindowsプログラミング」は、実に良い本です。
私は以上の道筋を経てWindowsプログラマになりました。

#もっとも私の場合、必ず最初は他人のコードの改造からはいります。
#そのポリシーはN88BASICだろうがAPIだろうがMFCだろうが変わらないですけどね。
#他人のコードを読むのは、本当に勉強になりますよ(参考図書:プログラミングの心理学)
283デフォルトの名無しさん:2001/03/14(水) 02:48
「MFCによるWindowsプログラミング」
Jeff Prosise著、マイクロソフトプレス
"Programming Windows with MFC Second Edition"

これのことですか?
284デフォルトの名無しさん:2001/03/14(水) 09:33
>>283
その通り。First Editionは「MFCによるWindows95プログラミング」だった。

これを読破して、AppWizardやClassWizardに頼らずに組めるようになれば一人前。
Wizardを使って良いのは上級者,熟練者だけ。そこのところを間違えないこと。
285トリッキーの1:2001/03/14(水) 11:43
>>284
激しく同意
286269:2001/03/14(水) 13:41
>トリッキーの1 >>273

>#実際一番だるいのは、変換場所に応じて色分けすることなんですが。

CandidateWindow が出ている状態での変換場所の取得はできましたが
出てない状態で選択位置が変更されたときの位置が取得できません。
開始位置は ImmGetCompositionString でカーソル位置を取得すればいいんですが
終わりの位置(範囲)の取得方法がわかりません。
変換場所の取得または変換中の文字の取得ってどうするんですか?

コンポジションウィンドウを消すのに
ImmSetCompositionWindow で CFS_RECT を指定して文字が表示できないくらい
小さな矩形を設定すれば消えますがもっとスマートな方法はありますか?


お願い教えて!
287269:2001/03/14(水) 15:12

自己レスです。

>CandidateWindow が出ている状態での変換場所の取得はできましたが
>出てない状態で選択位置が変更されたときの位置が取得できません。
>開始位置は ImmGetCompositionString でカーソル位置を取得すればいいんですが
>終わりの位置(範囲)の取得方法がわかりません。
>変換場所の取得または変換中の文字の取得ってどうするんですか?

ImmGetCompositionString で出来ました。
使い方間違ってました。

>コンポジションウィンドウを消すのに
>ImmSetCompositionWindow で CFS_RECT を指定して文字が表示できないくらい
>小さな矩形を設定すれば消えますがもっとスマートな方法はありますか?

ImmSetCompositionWindow の矩形で横幅がマイナスの値で良いような気がしますが違います?
サイズ0だと何故か表示されるがマイナスだと消える。


それとコンポジションウィンドウが表示されない状態だと
CandidateWindow の表示位置を設定できるんですが
コンポジションウィンドウが表示される状態だと
CandidateWindow の位置を設定しても勝手にデフォルトの位置(変換文字の真下)に
移動されてしまいます。(一瞬設定した場所に表示されてすぐに移動される)
これって位置設定のタイミングが間違ってる?
設定する時ってIMEから何かメッセージ送られてくるんですかね?

まぁ表示されていない状態ならうまく動くのであまり関係ないですけど。


自分はMS-IMEなんですけどATOKとかだとIMEから送られてくる
メッセージって多少違ったりするんですかね?
MS-IMEでは動いてATOKじゃ動かないとか・・・


誰か教えて♪
288デフォルトの名無しさん:2001/03/14(水) 16:39
すいません。A.cppの関数からB.cppの関数を呼べるようにするにはどうしたらよいのでしょうか。
289デフォルトの名無しさん:2001/03/14(水) 17:10
B.cppの関数をプロトタイプ宣言したヘッダをA.cppにインクルードする
290デフォルトの名無しさん:2001/03/14(水) 17:33
インクルード ファイルがオープンできません。'hed.h': No such file or directory
こういうメッセージが出てインクルードできないのですが、何故でしょう?
hed.hファイルはプロジェクトのHeader Filesの中にあるのですが・・・
291デフォルトの名無しさん:2001/03/14(水) 17:53
Includeパスが通ってないとか?
292デフォルトの名無しさん:2001/03/14(水) 17:58
>291
どうすればいいのでしょう?
293デフォルトの名無しさん:2001/03/14(水) 18:31
#include <hed.h>

としていませんか?

#include "hed.h"

としてみてください。
294デフォルトの名無しさん:2001/03/14(水) 18:42
駄目でした・・・壊れたんでしょうか。
295デフォルトの名無しさん:2001/03/14(水) 19:31
原因が判明しました。A.cppがプロジェクトのフォルダと違う場所に置いてあったからでした。
ご迷惑おかけしました。289,291,293の皆さん、どうもありがとうございました。
296デフォルトの名無しさん:2001/03/14(水) 19:53
予想通り?
297デフォルトの名無しさん:2001/03/14(水) 20:26
VBAってVisualC++から使えます?
298デフォルトの名無しさん:2001/03/14(水) 20:45
Unicodeの使い方が分かりません。
#define _UNICODEしたんですが、上手くいきません。
どうすればいいんでしょうか。

299デフォルトの名無しさん:2001/03/14(水) 22:32
>VBAってVisualC++から使えます?

意味がわかりません。
300デフォルトの名無しさん:2001/03/14(水) 23:31
>VBAってVisualC++から使えます?
システムモニタってメモ帳から使えます?
と同じような発言だよ。

結論を言うと使えません。
301デフォルトの名無しさん:2001/03/15(木) 00:28
>VBAってVisualC++から使えます?
肛門から小便だせます?
と同じような発言だよ。

結論を言うと使えません。

302デフォルトの名無しさん:2001/03/15(木) 00:50
VC++5.0で、ダイアログAPPを作ってました。
どこをいじったのか今となっては定かでないのですが、
ダイアログリソースの編集をしようと、リソースエディタにフォーカスする度に、
「ソースファイル(foo.h, foo.cp)のクラス"foo"は重複する挿入ブロックが存在します」
と警告ダイアログが出るようになってしまいました。
この警告ダイアログは何なのでしょう。そもそも挿入ブロックとは何なのでしょう?
303297:2001/03/15(木) 11:06
やっぱり言ってることが変でしたか・・・
WinプログラムからVBAのマクロを呼び出せますか?
(これもおかしいこと聞いてますか?)
304デフォルトの名無しさん:2001/03/15(木) 11:51
>>303
ShellExecute使ったらどうよ?
305デフォルトの名無しさん:2001/03/15(木) 12:43
>>303
OLEオートメーション使えば出来るかな。
ちょっとメンドウだけど
306名無しさん:2001/03/15(木) 12:57
初心者です。よろしくおねがいします。
VCでダイアログを表示したり、クラス型の宣言を行ったりしたときなのですが、
pDocTemplate = new CMultiDocTemplate( とか
CAboutDlg aboutDlg;
aboutDlg.DoModal();とか
この場合、pDocTemplateやaboutDlgのメモリを開放するようなコードは
無い、もしくは必要ないのでしょうか。

逆に、必要な場合というのは、どういう時で、どのような命令を実行すれば
いいのでしょうか。
307デフォルトの名無しさん:2001/03/15(木) 14:08
上記の2つに関してはdeleteする必要なし。
308SAGE:2001/03/15(木) 14:10
>>306
普通 new で作ったモノは delete で解放する必要がある。
が、pDocTemplate の場合、MFC側のどこかに既に解放用のコードが
入っているはずなので、わざわざ自分で書く必要はない。

後者の場合は普通に int a; とか書いたときと同じで特に何もする
必要はない。変数のスコープが終わったところでデストラクタも自動で呼ばれるし。
309デフォルトの名無しさん:2001/03/15(木) 15:36
>>306 補足

deleteに関してよく問題になるのがCWnd。
MFCのソースから、CFrameWnd::PostNcDestroyやCView::PostNcDestroyを探して読んでみるべし。
310302:2001/03/15(木) 16:07
>>304
>>305
ありがとうございます
OLEオートメーションはお手上げなんでShellExecuteを
使う方法はどうやるんですか?
ヘルプで調べても指定したファイルをオープンした後に
どうするか見当もつきません。
すいません厨房ですがお願いします。
311306:2001/03/15(木) 17:05
>>306です
>>307-309
ありがとうございます。
確かにint a;は、消さなくては・・・という気にはなっていませんでした。
(それも問題かもしれないけれども)ちょっと、リキ入れすぎで変に
なっているようです。

落ち着いてCFrameWnd::PostNcDestroyやCView::PostNcDestroyを読んで
みます。
312302:2001/03/15(木) 20:18
度々すいません、詳細に書きますと
VisualC++のコード上からVBAの
ActiveDocument.Shapes.AddPictureを呼び出したいのですが
それのやり方があれば教えていただけないでしょうか?
よろしくお願い致します。
313デフォルトの名無しさん:2001/03/15(木) 20:22
ずっと独学でやってきたのですが、一つのプロジェクト
の中でどのくらいファイルを分割するものでしょうか?
オリジナルのライブラリ以外全部一つのファイルなので
数千行になったりするものもあるのですが、人に見せた
ら「はぁ?」みたいな顔をされました。
314デフォルトの名無しさん:2001/03/15(木) 20:41
>>313
その関数のジャンルごとにとりあえず分けなさい
ファイルの名前もそれに付随した名前にする
例えばファイル関連ならfile.cとか(これはあくまで例)そんな感じで
315デフォルトの名無しさん:2001/03/16(金) 12:37
>VisualC++のコード上からVBAの
>ActiveDocument.Shapes.AddPictureを呼び出したいのですが

Wordのタイプライブラリを探して、

#import "タイプライブラリ名"

タイプライブラリを探すのは、VBの参照設定画面を使うのがお手軽。
316デフォルトの名無しさん:2001/03/17(土) 01:24
初歩的な質問でスマソ。
2枚の画像を重ねて表示するとき、
たとえば黒の部分だけは透明ということにして
下の画像を残すような処理はどうすればいいですか?
317デフォルトの名無しさん:2001/03/17(土) 02:09
1どっとずつ0か否かを判定して残すか否かを決める(w。
318デフォルトの名無しさん:2001/03/17(土) 03:06
>>310

Auto_Openマクロを書くのが一番簡単

>>316

TransparentBlt()で。
319デフォルトの名無しさん:2001/03/17(土) 15:09
VC++でEditなどのコントロールを追加する方法はありますか?
(例えばメインダイアログで3と設定したら、
サブダイアログにEDITが3つ作成されているっていう事をしたい!)
320デフォルトの名無しさん:2001/03/18(日) 01:19
LVS_OWNERDATAスタイルをもったリストビューを作ったのですが、
アプリケーション側から特定項目のデータの表示を更新する方法がわかりません。
なにか、良い方法内でしょうか?
321デフォルトの名無しさん:2001/03/18(日) 04:51
ウインドウプロシージャをstaticなメンバ関数にすることに成功したのですが、
SetTimerが使えなくなってしまいました。
なんとか使う方法はないでしょうか。
322デフォルトの名無しさん:2001/03/19(月) 17:49
超初心者です。
VCを色々と触ってみているのですが、メニューバーの「編集」の
「コピー」「切り取り」「貼り付け」は自分でコードを書きなさい・・・と
いうようなことが、ヘルプに書かれてあるのですが、さっぱりわかりません。
文字列の切り取り,コピー,貼り付けをクリップボード経由で行うには
どんなコードが必要なのでしょうか。
C++がわかっていれば、おそらく恐ろしく簡単なものなのではないかと、
推測しているのですが、私にはさっぱりわかりません。
どなたか、教えて下さい。
323322:2001/03/19(月) 21:00
うーむ・・・やっぱりわからない。
複数行入力可能なエディットボックスをフォームに置いているので、
CTRL+X,C,Z,Vを可能にしたいのです。
フォームビューを表示してるだけなんだけど、この方法に問題があるのだろうか。
324322:2001/03/19(月) 21:32
自作自演になりつつありますが・・・
COleClientItemってのを使わないとダメみたいですね。
(その使い方が判らない状態だけど)
325デフォルトの名無しさん:2001/03/20(火) 00:20
>>322
俺も詳しくないんだけど、エディットボックスにたいして
CEdit::Cut()、CEdit::Copy(), CEdit::Paste()を使えば
CTRL+X,C,Vはできるかも。
CTRL+Zのアンドゥは自分でガシガシ書くしかないみたい。
326名無しさん:2001/03/20(火) 06:29
>>325の方法だと
エディットボックスが多い場合に問題かな
なんていってる俺も今までにそういうのやったことないけど
327ひよこちゃん:2001/03/20(火) 14:10
VC++を使うに置いての質問です。
VC++6でコツコツと簡単なゲームプログラムを作成していました。
ソースの行数も4000行近くなってきたのですが、行数が増えるにつれ
やたらと処理が重くなるのです。実行したプログラムの処理ではなく、VC++
自体の処理がです。一つのソースファイルにまとめて書くと言うこと自体が
初心者かもしれませんが、分割する以外に対処などはありますでしょうか?
328 :2001/03/20(火) 14:54
分割以外つったら早いマシンに買い換える
素直に分割しなさいよ 分割の仕方を学びなさい
329:2001/03/20(火) 15:25
>>322
フォームのクラス内にメインフレームのメニューに関する
ハンドラを置いて、そのハンドラの中で、
フォームのエディットボックスのポインタで
Copy()
とかを呼び出してやれば良いんじゃないですか
330デフォルトの名無しさん:2001/03/20(火) 16:47
駄目駄目
331初心者:2001/03/20(火) 21:37
>>327
インクリメンタルコンパイルがうまく行っていないのでは?
もしくはソースの依存性が高くて一部の変更が全てに影響して、
実質リビルド状態になっているとか。
332SAGE:2001/03/20(火) 22:44
>>327
コンパイルが、つーか、エディタが重いんだろ?諦めれ。
一ファイルにだらだら書いていいことは何一つ無いし。
333デフォルトの名無しさん:2001/03/20(火) 22:50
>>331
>一部の変更が全てに影響して

そりゃそうじゃん

>>327
>一つのソースファイルにまとめて書くと言うこと自体

っていってるし
334質問:2001/03/20(火) 23:35
あるフリーのソフトでエディットボックスに[y=x^3+x^2+3x+5]とか記入すると座標にグラフを描いてくれるソフトがあったのですがどのようにして作られているのですか?文字と数字が一緒に記入しても処理できるのですか?私なりにプログラムしてみたのですが簡単なn=3 Y=n*X程度のプログラムならできるのですがy=x^2+3x+5みたいなプログラムはできませんどのようにすればよろしいのですか?また「*」はどのように処理しているのですか?
335名無しさん:2001/03/21(水) 07:12
>>334
それは、貴方が面倒くさがってコーディングしていないだけ
以上。
336デフォルトの名無しさん:2001/03/21(水) 10:30
>334
そのようなプログラムは原理的にVC++では不可能です。
まず、VBの入門書をよく読んでみましょう。
337デフォルトの名無しさん:2001/03/21(水) 14:35
>>336
なんで?GetWindowTextで文字列取ってきて、それをparseすりゃ良いだけの話だと思うんだけど?
338デフォルトの名無しさん:2001/03/21(水) 20:12
スレ違いかもしれなかったのでこちらで聞かせてください
OutLook Expressのメッセージ本文のデータを取得する方法は
どうやるのでしょうか?MAP〜以外のやり方があったらお願いします。
339デフォルトの名無しさん:2001/03/21(水) 20:44
>>333
氏ね
インクリメンタルコンパイル/リンクしらね−のか?
関数単位でやるからソースのでかさは関係ない
340デフォルトの名無しさん:2001/03/21(水) 21:15
それでもファイル分割くらいはできるようになっとけ
341デフォルトの名無しさん:2001/03/21(水) 22:47
>>340
>>333の逝ってることが的外れなだけ
342デフォルトの名無しさん:2001/03/21(水) 22:53
>>336
んなわけないって。それじゃ VC++ でインタプリタ作れない
じゃん。

>>334
コンパイラ理論とか言語理論に関する本を買ってきて読ん
でください。ドラゴンブックが定番。

また、少し古いですが「UNIX プログラミング環境」とい
う書籍に yacc を使った関数電卓の実装方法が取り上げら
れています。

# Win32 なら Excel あたり COM 経由で呼び出して、そっ
# ちに計算させるのもアリか?
343デフォルトの名無しさん:2001/03/22(木) 00:22
>337,342
あきらかに、336はネタだろ。
344名無しさん:2001/03/22(木) 09:32
超初心者です。
エディットボックスのコピー,カット,ペースト,アンドゥが解決しました。
FormViewにOnEditCopyを追加して(こういうのをなんて言うのか判っていませんが)
次の記述で、できました。

void CTestForm::OnEditCopy()
{
// TODO: この位置にコマンド ハンドラ用のコードを追加してください
CEdit* ed=(CEdit*)GetFocus();
ed->Copy();
//Copy(),Cut(),Paste(),Undo()で、それぞれの選択範囲がクリップボードへ
}

>>325,>>329さんの、言われていたことに、非常に近いコードだと思っています。
ありがとうございました。

これって、現在フォーカスのあるエディットボックスのポインタを
CEdit型の変数edに代入し(これも何か言い方があると思うのですが
判りません)、そのエディットボックスのCopy()を呼び出す(これまた、
言い方があると思うのですが)という動作と考えてあっていますかね・・・。
345名無しさん:2001/03/22(木) 09:35
超初心者です。
VC++初心者用スレができたので、私はそっちに行ったほうが
正解ですね。
346デフォルトの名無しさん:2001/03/22(木) 13:57
なんで初心者質問スレが出来たんだ?
大した人数もいないのにこんなに分けて意味あるのか?
347名無しさん:2001/03/22(木) 14:20
超初心者です。
どっちに行けばいいのやら・・・ウロウロ
内容次第ですかね・・・。
(自分の質問が、どっちに含まれるかわからない初心者ですが)
348名無しさん:2001/03/22(木) 16:02
アプリの終了時に Detected memory leaks って、出るのですが
これって、なにかDestroyしわすれているのでしょうか?
349デフォルトの名無しさん:2001/03/22(木) 19:38
>>348
Destroyじゃなくてdelete
350デフォルトの名無しさん:2001/03/22(木) 20:47
>>339
>インクリメンタルコンパイル/リンクしらね−のか?
>関数単位でやるからソースのでかさは関係ない

333です
そーなんだしらんかったっす
一つ利口になりました
351デフォルトの名無しさん:2001/03/26(月) 04:18
VC6.0を使っているのですが、
newがbad_allocをthrowするようにするためにはどうしたら良いのでしょうか?
CRTのソースを見ると、bad_alloc周りのコーディングもしてあるようですが?
352デフォルトの名無しさん:2001/04/01(日) 23:25
>>351

throw bad_alloc;
353デフォルトの名無しさん:2001/04/02(月) 15:55
送信アプリ−受信側アプリの2つを作成して送受信するものを作りたいのですが
送信側で
(1)socketでソケットの生成
(2)inet_addr、gethostbynameで送信先の検索、指定
(3)送信データの作成
(4)sendtoで送信
として、
受信側では、
(1)データを受け取ったら
(2)socketでソケットの生成
(3)recvfromで受信
(4)受信データの表示
としようと思います。
そこで受信側の
(1)のデータを受け取ったら
という部分は、何を使ったらデータを受け取った事を確認できるのですか?
教えてください。

またこの仕組みに改善点があったら教えてください。

354デフォルトの名無しさん:2001/04/02(月) 16:06
そもそも、ソケットを作らないと、データを受信したか
どうかも分からん、と思う、今日この頃。
355デフォルトの名無しさん:2001/04/02(月) 16:16
>>353
select() WindowsならWSAAsyncSelect() winsock2なら、WSAEventSelect()を
調べてみるがよろし。
356COM超初心者:2001/04/02(月) 21:56
アプリからIISの設定(仮想ディレクトリなど)を書き換えたいんですが、サンプルなどご存知でしたら教えて下さい。
#IIS Admin Object の使い方が全然わかりません。

357デフォルトの名無しさん:2001/04/02(月) 23:59
>>356
それ私も知りたい・・・
IIS Admin Objectってあるんだ、ちょっと調べてみる。
358356:2001/04/03(火) 16:28
>>357
参考までにおいらが調べたことを書いておきます。
1.アプリからIISの設定をするには、「IIS Admin Object」という COMオブジェクトにアクセスするらしい。
2.VS6 のMSDNで「Enumerating Keys and Data」にサンプルらしきものがある。
が、単純にコンパイルすると下記のエラーが出る。
error LNK2001: 外部シンボル "_CLSID_MSAdminBase_W" は未解決です
error LNK2001: 外部シンボル "_IID_IMSAdminBase_W" は未解決です
3.(NT4.0 OptionPack の場合)\Winnt\System32\inetsrv\adminsamples\mkwebdir.vbs
にWSH のサンプルがあるが、VC++ で同じ事をやるにはどうすれば良いかわからん。

と言ったところです。
359デフォルトの名無しさん:2001/04/04(水) 17:34
CMapStringToObとCObListを両方継承たいのですが
できますか?
360デフォルトの名無しさん:2001/04/06(金) 00:59
簡単なDOSプロンプトラッパーを作ろうと思っています
例えばボタンを押したらDIRコマンドを発行。という具合です
で、VIEWにDOSプロンプトの結果を反映させたいのですが
DOSプロンプトの文字列を受け取る方法はあるでしょうか?
361デフォルトの名無しさん:2001/04/06(金) 18:36
>>360
popen じゃ駄目?
362デフォルトの名無しさん:2001/04/08(日) 01:48
                Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                ( ・∀・)<  ここ、あんまし賑わってないね。
             _φ___⊂)__ \_______________
           /旦/三/ /|
        | ̄ ̄ ̄ ̄ ̄|  |
        |熊本みかん|/
363dll:2001/04/12(木) 23:37
dllの作り方がいまいちよくわからないです。(SDKで)
dll参照するソフト作るとしますが、
始めに新規作成で空のdllつくります。
次にdllのコードを入力し、ビルドしますが、
ここで、実行するexeを聞かれますが、
まだ、本体作ってないのでキャンセルします。
そうすると、libファイルが作成されませんがどうしてですか?
defファイルは自分で新規作成テキストを.defで保存すればよいのでしょうか?
ちなみにVC6をつかってます。
どうぞよろしくおねがいします。
364デフォルトの名無しさん:2001/04/13(金) 03:29
>>363
defファイルを使うやり方もあるが、説明が面倒くさいので、
↓でも見てやってみてちょーだい。
http://tools.geocities.co.jp/SiliconValley-SanJose/2089/@geoboard/19.html
365デフォルトの名無しさん:2001/04/13(金) 23:46
ユーザーが登録できるコールバック関数が30個程度ある
CのライブラリをC++でラップする必要があるんですが、
単純にMyLibクラスのvirtualメソッドにすればいいんでしょうか?
366>365:2001/04/13(金) 23:52
知りたい事がよくわからんが、既にコールバック関数をユーザーに
公開してる時点でC風のインタフェースにするしかないと思うんだが・・。
367デフォルトの名無しさん:2001/04/14(土) 03:19
>>366
そーでもないよ
368デフォルトの名無しさん:2001/04/14(土) 16:08
他のプロセスのWin32API呼び出しを乗っ取るにはどうしたら良いですか?
たとえばMessageBoxを派手にしたりCreateFileを監視したいのです。
日本語の詳説やサンプルのソースファイルが見られる場所はないですか?
369デフォルトの名無しさん:2001/04/15(日) 00:48
>>368
CreateRemoteThreadでdllを刷り込ませたり、
レジストリに常駐DLLとして登録したり、いろいろ方法あるけど?
370デフォルトの名無しさん:2001/04/15(日) 00:52
すみません、VC用のソケット&TCP/IP関連のリンク集はありませんでしょうか?
371はいよ(藁:2001/04/15(日) 01:29
372超初心者:2001/04/15(日) 01:39
将棋をつくろうと思って
子windowに将棋盤を書こうと思い
Rectangle()を使っているのですが、
書けません。
メインwindowには描画できるのですが・・・
どうやったら描けるのでしょうか?

自分としてはhdc,hwnd,creatwindow()の辺り
の知識がほとんどないので、
その辺に問題があるのかなとおもっていますが・・・
373デフォルトの名無しさん:2001/04/15(日) 01:43
>>371 あががが
374なまお:2001/04/15(日) 08:45
僕のサイトにC言語会話講座と言うのを作ったので、見にきてください!

http://web.kyoto-inet.or.jp/people/namao/index.html
375368:2001/04/15(日) 10:04
CreateRemoteThreadはNT用なのでパスして常駐DLLを使いたいのですが
レジストリへの登録とはどこになにを書き込めば良いのでしょう?
ポインタでも構わないのでご存じの方よろしくご教示くださいです。。
検索しようにも適切なキーワードが分からずサパーリです。
376デフォルトの名無しさん:2001/04/17(火) 22:41
ビットマップリソースの一部を切り取ったCBitmapオブジェクトを作るには
どうしたらいいんですか?
377デフォルトの名無しさん:2001/04/17(火) 22:59
ロードしてDCを付けて新しくBitmap作ってそこにコピー。
378デフォルトの名無しさん:2001/04/18(水) 00:02
「Bitmapにコピー」ってどうやるんでしょうか。
CBitmapクラスにそんな関数はないみたいですが…
379デフォルトの名無しさん:2001/04/18(水) 00:06
>>378
CreateBitmap
ヘルプ見れ
それからWindowsのbitmap操作は色々と面倒だぞ
DIBに直して自分で弄った方が良いかもな
380379>378:2001/04/18(水) 00:09
あ、コピーはbitbltね
メモリDC作ってそこから転送
381378:2001/04/18(水) 00:18
BitBltってDCからDCへビットマップを転送する関数ですよね。
そこからどうやってCBitmapに移動させるんでしょうか…
ビットマップボタン作りたいんですけど。
382379>381:2001/04/18(水) 00:36
ボタンをサブクラス化してWM_DRAWITEMで自分で描画
CBitmapは知らん。つーか忘れた。
codeguru行くか、'BitmapButton'で検索すれば?
383379>381:2001/04/18(水) 00:40
あ、サブクラス化じゃなくてOwnerDrawね。
384379>381:2001/04/18(水) 00:49
385639:2001/04/18(水) 15:43
GetPrivateProfileInt()はWindowsCEでは、有りません。
GetPrivateProfileInt()と同じ働きをするように
他の何かでどうやってやれば構築できるのか
教えてください。
386デフォルトの名無しさん:2001/04/19(木) 19:31
AfxExtractSubStringって関数のことで質問ですが、
ソース中で
CStringのGetBufferSetLength(n)やってるんですが
こういう場合は、
ReleaseBuffer(n)しなくてもいいんですか?
387デフォルトの名無しさん:2001/04/19(木) 19:50
今VisualC++買うのってどうですかね?
.NETまで待った方がいいですか?
388デフォルトの名無しさん:2001/04/19(木) 21:47
GetBufferSetLength は ReleaseBuffer しなくても良い。
もちろん、GetBufferSetLengthに渡した文字列長が正しい
と仮定した場合。将来のバージョンではどうだか知らん。

ReleaseBuffer の役割は、文字列長のセットと、末尾への
'\0' の付加だから。
389376:2001/04/20(金) 02:00
こんな風にしてみたんですが、エラーが出て動きません。

CBitmap bmp,paibmp;
CDC memDC,paiDC;

bmp.LoadBitmap(IDB_PAI);
memDC.SelectObject(&bmp);
paibmp.CreateBitmap(41,66,1,8,NULL);
paiDC.SelectObject(&paibmp);
memDC.BitBlt(100,200,41,66,GetDlgItem(IDC_KONG1)->GetDC(),0,0,SRCCOPY);

いくらいじってみてもうまくいきません。一体どうすればいいんでしょうか。助けてください。
390>389:2001/04/20(金) 03:22
うまくいかないって言われてもなあ・・
結局、初心者向けページやcodeguruとか見に行って自分で調べるしかないと思うよ。
基本的なビットマップ操作はcodeguruとかのWebサイトでサンプル沢山揃うと思うけど。
あとは似た処理をしてそうなソース付きのフリーウェア落としてきて解析するとか。
最初から全部自作するのは凄い手間だから、完動するサンプルソースや
ライブラリから拡張していったら?
391>389:2001/04/20(金) 03:23
うまくいかないって言われてもなあ・・
結局、初心者向けページやcodeguruとか見に行って自分で調べるしかないと思うよ。
基本的なビットマップ操作はcodeguruとかのWebサイトでサンプル沢山揃うと思うけど。
あとは似た処理をしてそうなソース付きのフリーウェア落としてきて解析するとか。
最初から全部自作するのは凄い手間だから、完動するサンプルソースや
ライブラリから拡張していったら?
392>389:2001/04/20(金) 03:23
うまくいかないって言われてもなあ・・
結局、初心者向けページやcodeguruとか見に行って自分で調べるしかないと思うよ。
基本的なビットマップ操作はcodeguruとかのWebサイトでサンプル沢山揃うと思うけど。
あとは似た処理をしてそうなソース付きのフリーウェア落としてきて解析するとか。
最初から全部自作するのは凄い手間だから、完動するサンプルソースや
ライブラリから拡張していったら?
393デフォルトの名無しさん:2001/04/20(金) 03:24
うへえ3重カキコ・・
394デフォルトの名無しさん:2001/04/20(金) 17:06
ヘタレでございます、
ツリーコントロール使い、エクスプローラもどきを習作しているのですが
ドラッグアンドドロップ時のイメージが上手く作成できませぬ。

色々探したのですがドラッグアンドドロップについて
記載した所が探し出せませんでした
何方かご存知でしたら、
また、この件を解説しているサイトがありましたらお教え願います

参考までに、現在マウス周りのコードは
void CMyTreeCtrl::OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
m_pDragFlag=TRUE;//ドラッグモードON
SetCapture();
m_prevCursor = SetCursor(NULL);
m_DragImage.BeginDrag(0, CPoint(0,0));
m_DragImage.DragEnter(this, pNMTreeView->ptDrag);
*pResult = 0;
}

void CMyTreeCtrl::OnLButtonUp(UINT nFlags, CPoint point)
{
if(m_pDragFlag==TRUE){
m_pDragFlag = false;
ReleaseCapture();
m_DragImage.DragLeave(this);
m_DragImage.EndDrag();
SetCursor(m_prevCursor);
m_prevCursor = NULL;
}
CTreeCtrl::OnLButtonUp(nFlags, point);
}

void CMyTreeCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
if(m_pDragFlag==TRUE){
m_DragImage.DragMove(point);
}
CTreeCtrl::OnMouseMove(nFlags, point);
}

という感じにしております。
395教えてください:2001/04/20(金) 17:34
動物に関するデータを入力すると、
そのあと入力された数字に応じて
データを表示するプログラムなんですが
動きません。どこがだめか教えてください。

/*動物園*/
#include <stdio.h>
#define number 10
struct zoo{

char syurui;
char namae;
int nenrei;
int taijyu;
}
main()
{
struct zoo doubutu[number];
int n,i,j;
printf("何種類か入力してください\n");
scanf("%d",&n);


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

printf("動物の種類を入力してください\n");
scanf("%s",&doubutu[i].syurui);
printf("そいつの名前も入れてくれ\n");
scanf("%s",&doubutu[i].namae);
printf("年はいくつやねん\n");
scanf("%d",&doubutu[i].nenrei);
printf("そいつ何キロやねん\n");
scanf("%d",&doubutu[i].taijyu);

}

printf("何番目にすんねや\n");
scanf("%d",&j);

j=j-1;

printf("%s\n",&doubutu[j].syurui);
printf("%s\n",&doubutu[j].namae);
printf("%d\n",doubutu[j].nenrei);
printf("%d\n",doubutu[j].taijyu);

}

詳細きぼ〜ん
396添削人:2001/04/20(金) 18:48
まずデータ構造に問題あり。
zoo::namae は1バイトのデータしか格納できない。

char namae[256];//のように適当な配列にするか

char* namae;//のようにポインタにして
         //適宜メモリの確保と解放をやるべし。
397教えてください:2001/04/20(金) 19:03
ありがとうございました。
[数字]にすることにより、問題解決しました。
また、わからない事できたらかきこしますので
よろしくお願いします。

ありがとうございました。
398教えてくだっさい:2001/04/21(土) 21:02
タスクマネージャーもどきを実験用に作っているのですが
ほかのアプリのウィンドウ(なぜかフォルダウィンドウはOKです)のアイコンがGetIcon()で取得できません。
ためしにWM_GETICONメッセージに反応してアイコンハンドルを返す
プログラムを作って実験すると取得できます。
またSpy++で適当なアプリのウィンドウを調べてみるとちゃんとWM_GETICONに
反応しているようです。
タスクマネージャーやタスクバーはどうやってアイコンを取得しているのでしょうか?
教えてください。

399>398:2001/04/21(土) 21:17
多分、SHなんとか関数
400400:2001/04/22(日) 06:00
キリ番get
401教えてくだっさい:2001/04/22(日) 16:19
>399
情報ありがとうございます!
402デフォルトの名無しさん:2001/04/23(月) 12:39
CStringなんて移植性は下がるわ動作は遅くなるわたまにメモリ壊すわで最悪だから絶対使うなと言われたんですけど、そんなにひどいんですか?
すげー便利だと思って使いまくってたから愕然としたんですが、俺は今までとんでもない事をやってたんでしょうか。
403デフォルトの名無しさん:2001/04/23(月) 12:51
ソース読め>>402
404394 :2001/04/23(月) 13:35
なんか自己解決出来ました、
当初、BeginDragで
イメージ作ってくれてるのかと思ってたんですが
よくよく考えたらツリーと関係結んでないことに気づき
イメージ作ってから表示したら一発で出てくれました。
阿呆すぎる、、、、
405デフォルトの名無しさん:2001/04/23(月) 17:33
ボリューム名ってなんですか?
406デフォルトの名無しさん:2001/04/23(月) 17:39
入門者です。素朴な質問です。
VCプログラマって基本的にMFCを使用しているのですか?

407デフォルトの名無しさん:2001/04/23(月) 17:53
人それぞれだよ。
408デフォルトの名無しさん:2001/04/23(月) 18:01
>>406
最初はMFCなぞ使ってはならん。コンソールアプリを作って楽しむべし。
AppWizardなんてもっての他だ。
コンソールで一通り遊んだら、MFCを使って遊ぶべし。それが一通り終わった頃には
AppWizardが生成したソースも難無く読めるであろう。
頑張って遊ぶがよし。最初から気合入れると疲れるぞ。遊ぶ気持ちを忘れずにな。
409デフォルトの名無しさん:2001/04/23(月) 18:05
いきなりですが質問です。

class a
{
public:
void (*pmemfunc)();
};

class b
{
public:
b();
int retdata();

a adef;
};

b::b()
{
adef.pmemfunc = retdata; // エラー
}

このような関数を渡す処理を行おうとすると、型キャストのエラーが出ます。これを解消する方法はないでしょうか?
410RIP_MAPIRO:2001/04/23(月) 20:19
>>409
関数へのポインタへの型チェックは、明確にしなければならない。
この場合2通り考えられる。
1) void (*pmemfunc)(); -->int (b::*pmemfunc)();

2) void (*pmemfunc)(); -->void (b::*pmemfunc)();
int retdata(); --> void retdata();

戻り値が void と int を混在させる必要がある場合素直に別の関数と
割り切ってそれぞれ作るしかないでしょう。
411デフォルトの名無しさん:2001/04/24(火) 00:23
なぜWM_PAINTメッセージではBeginPaint関数を使わなければ
ならないのでしょうか?GetDC関数では駄目なのでしょうか?
もしかして有効化と関係あるのでしょうか。
412デフォルトの名無しさん:2001/04/24(火) 01:04
GetDCでもいいよ>441
413409:2001/04/24(火) 08:51
>>410
ありがとうございます。で、すいません。質問のとき、intとvoidを混在させてしまいました。使用しているのはvoidです。ところで、もう一つよろしいでしょうか。

class a
{
public:
void (b::*pmemfunc)();
};

の状態で、pmemfuncが実際の関数を指しているのか調べるために、コンストラクタでNULLを入れて、ある関数中で

スコープ:a
if (pmemfunc != NULL) pmemfunc();

とするとコンパイラエラーが出ました。これはどういうことなんでしょうか。

414デフォルトの名無しさん:2001/04/24(火) 09:47
GetVolumeInformation() //ドライブのボリューム名の取得
を使わずに同じ働きをする関数を探しています。
そのようなものってありますか?
415RIP_MAPIRO:2001/04/24(火) 13:04
>スコープ:a
ということは class a の メンバ内ということですな。

さて例えば関数へのポインタ
void (*Hoge)();
と宣言された Hoge をコールするときは
(*Hoge)();

ということは
すくなくとも pmemfuncをコールするときは
(*pmemfunc)();
とせねばならないことはよろしいか?

しかしこれでもエラーが出る。
なぜなら b::*pmemfunc と宣言されているので class b の実体から
参照されなければならないことになる。
よって この場合 class a にメンバ変数 class b へのポインタを用意
してやってそれからコールする。

例えば以下のように
class a
{
public:
  a(){
    pmemfunc = NULL;
    m_Pointer_b = NULL;
  }

  Call_pmemfunc(){
  if(m_Pointer_b != NULL && pmemfunc != NULL ){
  (m_Pointer_b->*pmemfunc)();
  }
  }

  void (b::*pmemfunc)();
  b* m_Pointer_b;
};

class b
{
public:
  b(){
  adef.pmemfunc = retdata;
  adef.m_Pointer_b = this;
  }

  void retdata();

  a adef;
};
416デフォルトの名無しさん:2001/04/24(火) 15:06
>>411
ウィンドウに無効な領域(書き直すべき領域)があって、
ほかにこれといったメッセージがないときに、
GetMessage すると、WM_PAINT が帰ってきます。

BeginPaint, EndPaint をしないと、永遠に WM_PAINT が
着続けて、そのたびに再描画していると無駄に CPU パワーを
食ってしまいます。
417413:2001/04/24(火) 16:48
>>415
ありがとうございます。
ついでにもう一つ。上記例で、クラスaから派生されたクラスの関数を渡したい場合には、そのクラス名がわからないと無理なんでしょうか。これからの拡張性を考えると、親クラスだけがわかっていて子クラスがわからない場合でも子クラスの関数アドレスが渡せると便利だと思うのですが…。というか、それができないと困る場合が…。
418教えてください:2001/04/24(火) 18:43
解き方がまったくわかりません。
だれかサンプル作ってください。

1、入力ファイル
 1、データを格納する配列数は100.
 2、データには「連番、社員NO、部署番号」が存在する。
2、読み込んだデータを社員NOと部署でソート(昇順)する。
 1、第一ソートは部署番号
 2、第二ソートは社員NO
 3、ソート方法は各自で調査、決定する。
3、ソートした結果を画面に出力。

ファイルサンプル ソート結果イメージ
1,2154,556     4,3365,55
2,857,102   3,559102
3,559,102 2,857,102
4,3365,55 1,2154,556
5,3398,556 5,3398,556

このような物なのですが、関数を使って解きたいのですが。
誰かよろしくお願いします。
回答、きぼ〜ん
419教えてください:2001/04/24(火) 18:45
418です。
最後のところがうまく表示できなかったんですが
よろしくお願いします。
420デフォルトの名無しさん:2001/04/24(火) 19:08
>>413
そういう用途ならば、メンバ関数ポインタなど使わず、
インターフェースクラスをつくって、そのポインタを
貰いましょう
421ななし:2001/04/24(火) 20:23
dllを使って、システム全体の
キー入力を監視するプログラムを作ってます。
そこで、hook使ったのですが、
hookだと監視はできます。
文字の入力ができません。
これを回避する方法はありますか?
422デフォルトの名無しさん:2001/04/24(火) 20:23
412,416さん有難うございます。GetDC関数でもよいとの事ですが
WM_PAINTメッセージ処理の中にGetDCをBeginPaintの代わりに
書くと、プログラムがおかしな状態になります。そこでGetDCの前に
ValidateRect関数でクライアント領域を有効化すると、上手く描画
できます。これはナゼ
なんでしょうか?
423416:2001/04/24(火) 21:57
>>422
ネタ?
416を読み直してもわからないようなら、もう一度聞いて。
424RIP_MAPIRO:2001/04/24(火) 23:31
>>417

>クラスaから派生されたクラスの関数を渡したい場合
質問の流れからすると
"クラスbから派生されたクラスの関数を渡したい場合"
のような気がするが・・・。

どのような実装を目指しているのか、いまいちつかみ所が
分からなくなってきた。ただ言えることは Cライクな C++
にはまりそうな気がする。今一度 設計を検証することを
オススメする。
 もし他人のクラス群の拡張なら、思い切ってクラス設計を
一からやり直した方が速いかもしれない。

425412>422:2001/04/25(水) 00:42
そりゃ、ValidateRectで全部有効化すりゃメッセージは来なくなるよ。(苦笑
で412だけど、あれ、適当。すまん。つーか言葉が足りなかったみたいね。
WM_PAINT処理するならBeginPaint/EndPaintは呼ばなきゃだめだよ。
その中でGetDCは別に呼んでも構わないよ、って412を解釈してね。
あとはもう説明面倒だから416さんにでも聞いてね。
426デフォルトの名無しさん:2001/04/25(水) 00:49
>>424 RIP_MAPIRO様
ぢつは…ワタクシもともとDelphi使いでして。MFCをDelphiライクにコンポーネントクラスで使えるといいなぁと思っていたのです。そのため、
CEdit (継承 -> ) TEdit
CButton (継承 -> ) TButton
などとして、プロパティを使ってアクセス性の高いクラスを作っていたのです。その目的のうちの一つとしてイベントハンドラを渡せると良いなと思いまして。
そこで、TNotifyEventクラスを作りまして。これは、
void (*OnButtonClick)();
などのメンバ関数を持っています。
このTNotifyEventクラスとCEditなどのMFCクラスとを多重継承させてTEditクラス等を作ってみたのです。MFCクラスの親CWndクラスのDefWindowProcメンバを使用してメッセージ分岐処理を行っています。ところが、CFrameWndクラスを継承して作ったメインウィンドウクラスにOnButton1Click()メンバを作り、
Button1.OnButtonClick = OnButton1Click;
などとやりたかったのですがスコープの問題でうまくいかなかったのです。
実際に、これらVCLもどきはライブラリとしてまとめると再利用性があるかと思ったのですが、前回の解決方法ではうまくいきません。

そういう目的があったのですが…説明不足で申し訳ありませんでした。
427デフォルトの名無しさん:2001/04/25(水) 01:02
>422

例えば、ウィンドウ上にダイアログがあって、そのダイアログが消えると、描画しなければいけない空白がウィンドウ上にできる。
こういうのを無効領域っていうの。
この無効領域があると、WM_PAINTが自動的に発行される。
WM_PAINTがきたときにこの無効領域を有効化しないと、無効領域が残ったままなので、416の言うようにWM_PAINTがずっと発行され続けて表示がおかしくなってしまう。
無効領域を有効化する方法は3種類。
1、BeginPaint()を呼ぶ
2、ValidateRect()、ValidateRgn()を呼ぶ
3、WM_PAINTを処理しないで、そのままDefWindowProc()を呼ぶ。
の3つ。WM_PAINTがきたときは、この3つのうちどれかを実行しないと表示がおかしくなる。
422のケースで、ValidateRect()を呼んでうまくいったのは、2を実行していたから。

普通は、「無効領域がある」=「描画しなければいけないところがある」ってことなので、BeginPaint()で描画と有効化を一度にやる。
それと、BeginPaint()は「無効領域以外の部分は描画できない」という特徴があって無駄な描画が減るので、ちらつきが少なくなるよ。

428デフォルトの名無しさん:2001/04/25(水) 02:27
>>426
delphi流のメソッドポインタですか。
一応C++でも不可能じゃないけど、あんまり綺麗には書けない
(のでdelphiに戻ったほうがよい(笑))と思ったもんでした。

以前なんかの折に書いた落書きが以下です。
有能な人が書いたら遥かに綺麗になるのかも知れないけど。
つーか書いてください優秀なかた(T_T)

そういやメソッドポインタって、JavaとJ++の戦争のネタの一つでしたよね(笑)。
面白い概念だとは思いますよ。うん。

CServerがDelphiでいうコンポ、CClientがForm(笑)のつもりです。

template <class MethodServer> //MethodServerてのは「メソッドを持ってる奴」ってなニュアンス
class CMethodPointer { //この型をメソッドポインタと呼ぶのってもしかしてdelphi流でしょか?
private:
typedef void (MethodServer::*Method)();
MethodServer *receiver;
Method method;
public:
void set(MethodServer *rcv, Method mth){receiver=rcv; method=mth;}
void exec(){(receiver->*method)();}
};

#include <stdio.h>

class CServer {
public:
void f1(){puts("f1");}
void f2(){puts("f2");}
};

class CClient {
public:
CMethodPointer<CServer> mp1;
};

int main()
{
CClient cl;
CServer sv;

cl.mp1.set(&sv, &(CServer::f1));
//これは出来れば勘弁願いたい書き方だ。目の前にある変数(sv)の型をなんで再び
//人間様が書かんとならんのだ?
cl.mp1.exec();

cl.mp1.set(&sv, &(sv.f2));
//これがお洒落だなあ。これ通るのってC++標準準拠なんでしょか?
//ホントはdelphiみたいに第一引数不要ならば嬉しいが、それは仕方ないつーことで。
cl.mp1.exec();
}
429RIP_MAPIRO:2001/04/25(水) 09:47
>>426
なるほど。Delphiを使ったことはないけど、”MFCをコンポーネントクラスで使える
といいなぁ” には共感できる。私の場合そういう包括的なアプローチはあきらめて
オートメーション機能を使っている。細かいことをやりたいときはATL&COMを使う。

>メインウィンドウクラスにOnButton1Click()メンバを作り、
>Button1.OnButtonClick = OnButton1Click;
>などとやりたかったのですがスコープの問題でうまくいかなかったのです。
PreTranslateMessage のオーバーライドで解決する問題では?
430デフォルトの名無しさん:2001/04/25(水) 10:53
>>428
親切なレスありがとうございます。
ただ、できれば今後アプリを作る中で楽したいので、結局現在以下のような手段で手を抜いております。

(1) TNotifyEvent中のメソッドポインタは、TButtonなどの親クラス(CButton)のさらに親クラス(CWnd)型で宣言しておく。
void (CWnd::*OnMouseMove)();
void (CWnd::*OnLButtonDown)();
等のように。

(2) TForm(ウインドウクラス。派生元はCFrameWnd)の実装を持つ、イベントドリブン用のメソッドは、普通にクラス内で宣言する。
class TMainForm : public TForm
{
...
TButton Button1;
void OnButton1MouseMove();
};

(3) このままだと、実際にイベントハンドラに実装関数を渡すときのキャストが面倒
スコープ TMainFormの関数中
Button1.OnMouseMove = (void (CWnd::*)())OnButton1MouseMove;
なので、defineマクロを使って誤魔化す…(<-ここがダメダメ)
#define NEFUNC (void (CWnd::*)())
この場合はスコープTMainFormの関数中
Button1.OnMouseMove = NEFUNC OnButton1MouseMove;
ですみます。

…やり方はちょっとセコイですけど、一応今後は楽にメッセージ処理が行えるなぁと思っています。ただし、残念ながら出来るだけ多くのメッセージをTNotifyEventクラスで処理させようとすると、Switch処理で馬鹿みたいに処理が長くなって、処理速度の低下につながるなぁとも思っているんですけど。ま、でも、そこまで大した損失じゃありませんよねぇ?(CのSwitch処理の機構はイマイチわからないのですけど。アセンブラクラスではGoto命令みたいな処理をやっているだけでしょ?選択肢が増えてもあまり関係ないような気もしますけど)

>>429 RIP_MAPIRO様
色々と何度もありがとうございます。
ただ、コンポーネント化という観点からは、PreTranslateMessageのオーバーライドでは全く問題解決にならないような気がするのですが…。ようするに、違う処理を行うボタンを貼り付けるたびに、そのそれぞれを新たなクラスとして継承・オーバーライドをする必要があるわけですよね。それとも、私の考え方違いなのでしょうか。よろしくご教授ください!
431デフォルトの名無しさん:2001/04/25(水) 11:35
WindowsCEでリソースのVersionのProductNameを取得したい。
でも
GetFileVersionInfoSize()して
GetFileVersionInfo()して
VerQueryValue()して取得する。
という操作はCEでは、
GetFileVersionInfoSize()、
GetFileVersionInfo()、
VerQueryValue()の3つともサポートしていない
ので使えません。
どのようにして取得すればいいですか?
教えてください。
432デフォルトの名無しさん:2001/04/25(水) 12:17
>>430

まぁ、メソッドポインタ型の変数が
字義どおりのメソッドへのポインタ自体だけじゃなく
対応するインスタンス(のthis)をも含んでくれている、
というのがdelphi系の美しさの肝なので、
それと同じに書けないという意味では
標準C++であれを真似るのは微妙に辛いですね。

というか、(C++で出来ないゆえに)メソッドポインタが知られていない、
それゆえdelphiのメリットを理解してもらえない、という悪循環が、
信者(笑)としては残念に思うところ。

イベントプロシジャの仕掛けは、メジャー(?)な言語の多くでは
直接サポートされていないので、色々なGUIツールキットは
それぞれいろいろなやり方で苦心していますね。
unix畑で流行している「Gtk」とか「Qt」とかの
イベントプロシジャの実現方法は、横目で見ておく
(=本屋で立ち読みとか(ぉ))と参考になるかも知れません。
ちなみにGtkは対象言語が生Cなので、解決策も一番安直です(笑)。
QtはSLOTとかいう概念を使う(マクロで実現してる)んだっけか。
他にもツールキットって随分たくさん有るんで、眺めると吉かも。
#そして結局、従来型言語では不便だ、という結論に至る…かも(笑)

Javaは、アダプタObject(のクラス)をいちいち作って介在させるんでしたっけか?
あれはComponent本体のClassをいちいち派生させなくて済む
という意味では旨いんですが、アダプタInstanceの所有権つまり
いつ誰がアダプタをdeleteするか?で、ガベコレのない言語の悩みに突き当たるっぽい(^^;

ところで、少し前に出た奴ですが、

>このTNotifyEventクラスとCEditなどのMFCクラスとを多重継承させてTEditクラス等

多重継承はちょっと違うんでないですか?
コンポーネントはEventオブジェクトを「所有」すべきだと思うのですが。
たとえば同じ型のEventを同時に複数持ちたくなったら、
継承じゃまずいのは確かですよね?
Edit1.OnClick
Edit1.OnDblClick
みたいな感じ。
所有させておいて、明示的に(=区別して)名前で呼び出すのが良いと思います。

>出来るだけ多くのメッセージをTNotifyEvent
>クラスで処理させようとすると、Switch処理で馬鹿みたいに処理が長くなって

あれれ?なんでそんなこと(=caseの嵐)になるんでしょう?
そんなことにならないのがイベントプロシジャの味噌だと
思っていたのですが…違いましたっけ???

433RIP_MAPIRO:2001/04/25(水) 12:24
>>430
思いつきだけど。
PreTranslateMessageで親ウインドウ(以下"親")から子ウインドウ(以下"子")へ
メッセージを再配分する訳で、親のデータメンバに子のHWNDやら
HINSTANCE等の情報を動的にリストに確保してやれば良いのでは。

434デフォルトの名無しさん:2001/04/25(水) 12:34
>メッセージを再配分する訳で、親のデータメンバに子のHWNDやら
>HINSTANCE等の情報を動的にリストに確保してやれば良いのでは。

それってもしかして、
なんぼインスタンスの情報を持たせても、
それぞれの「挙動」の違いを表現できない、
ってことだったりしませんか?

435元Delphi使い:2001/04/25(水) 13:28
>>432
いえいえ。TNotifyEventクラスは、それぞれのメッセージに対応するイベントプロシジャへのポインタを持っている状態であるんです。まだ、メッセージを調べ始めたばかりなので数は足りないのですが、今現在の状態ではTNotifyEventクラスは以下のような定義になっています。
class TNotifyEvent
{
public :
TNotifyEvent();

void (*WMMouseMove)(int state, CPoint mousepos);
void (*WMDestroy)();
void (*WMLButtonDown)(int state, CPoint mousepos);
void (*WMLButtonUp)(int state, CPoint mousepos);
void (CWnd::*WMLButtonClick)();
void (*WMRButtonDown)(int state, CPoint mousepos);
void (*WMRButtonUp)(int state, CPoint mousepos);
void (*WMRButtonClick)();
void (*WMCreate)();
void (*WMSetFocus)();
void (*WMKillFocus)();
void (*WMVScroll)();
void (*WMHScroll)();
void (*WMKeyDown)(WPARAM wParam);
void (*WMKeyUp)(WPARAM wParam);
void (*WMChar)(char getk);
void (*WMLButtonDblClk)(CPoint mousepos);
void (*WMRButtonDblClk)(CPoint mousepos);
void (CWnd::*WMButtonClick)();

LRESULT WM_SwitchExecute(UINT message, WPARAM wParam, LPARAM lParam);

CWnd* NotifyEventParent;

protected :
CPoint pm_ClickCursor,pm_Mouse;
BOOL pm_BTNState;
};
で、たとえばボタンコントロールの場合は、
CButton、TNotifyEventを多重継承の形で継承してTButtonを作っています。
class TButton : public CButton, public TNotifyEvent {...};
ここで、TButtonはDefWindowProcメソッドをオーバーライドしています。
このDefWindowProc中で、
TButton::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
WM_SwitchExecute(message, wParam, lParam);
CButton::DefWindowProc(message, wParam, lParam);
}
と、TNotifyEventのWM_SwitchExecuteを呼び出し、そのWM_SwitchExecuteは
TNotifyEvent::WM_SwitchExecute(UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_MOUSEMOVE :
pm_ClickCursor = pm_Mouse;
pm_Mouse.x = lParam & 0xffff; pm_Mouse.y = lParam >> 16;
if (WMMouseMove != NULL) WMMouseMove(wParam, pm_Mouse);
break;
case WM_DESTROY :
if (WMDestroy != NULL) WMDestroy();
break;
...
};
}
とやっております。現在はこれと430の方法で動かせるのですが。前回言ったswitch文が長くてどーたらというのは、上記WM_SwitchExecuteの部分です。また言葉足らずでもうしわけない・・・。
436元Delphi使い:2001/04/25(水) 13:31
すんません、補足です。
まだ変更作業をはじめたばかりなので、ほとんどの関数ポインタが(*...)()という表記になっていますが、実際は全部(CWnd::*...)()なる形になります。もうしわけない。
437default:2001/04/26(木) 00:19
フックで、HookProcから
ウィンドウの方に返すには
どうしたらよいですか?
438デフォルトの名無しさん:2001/04/26(木) 00:20
おういぇい!
439デフォルトの名無しさん:2001/04/26(木) 00:55
>>438
イエーイ☆
440デフォルトの名無しさん:2001/04/26(木) 02:45
フック!
441デフォルトの名無しさん:2001/05/05(土) 14:15
当方、VC6でプログラムを作成しています。
ところがReleaseビルドしたものをVC上で動かすと異常終了するようになりました。
DEBUGビルドした物はちゃんと動くし、Releaseビルドでも直接起動すればちゃんと動くのですが、
ReleaseビルドしたのをVC上で動かすと不正なアドレスのメソッドを呼び出しているみたいで
落ちてしまいます。
DirectXを使っているので実行中にアドレスを確認することが出来ないんですが、
この原因はVCのバグ以外にどんなのが考えられるのでしょうか?
442RIP_MAPIRO:2001/05/05(土) 14:32
ポインタ変数やらオブジェクトを初期化していないでいきなり参照した。
443デフォルトの名無しさん:2001/05/05(土) 19:30
船長
444デフォルトの名無しさん:2001/05/05(土) 19:59
MFCとSDKだとSDKから勉強したほうが良さそうみたいですが
SDKの本って出版されてるんですか?
ちょっとした本屋には無くて
やっぱり秋葉原のデッカイ本屋とかじゃなくちゃ駄目ですかねぇ?
445初心者:2001/05/05(土) 20:57
SYSTEM_INFOを使ってプロセッサータイプを取得しよう
としたのですが、K6-2がpentiumと認識されてしまいます。
もっと正確にプロセッサーを調べるにはどのようにしたらよろしいのでしょうか?
446デフォルトの名無しさん:2001/05/05(土) 21:32
>>441
直接起動だとたまたま動いてるだけでどっかにバグが残ってんだろ。

>>444
そこらの本屋にいくらでも置いてあるっす。
447444:2001/05/05(土) 22:51
>>446
ぎゃー
VC系の本は全部MFCです
448デフォルトの名無しさん:2001/05/05(土) 23:44
>>445
http://www.google.com/search?num=30&hl=ja&safe=off&q=CPU+%94%BB%95%CA+VC
こんなん出たぞ。

>>447
ハーバート・シルトやペトゾルドの本探して見れ。
449ぽっぽ:2001/05/06(日) 00:09
モニターの解像度を640×480に強制的に変えるにはどうすればいいんですか?
450ぽっぽ:2001/05/06(日) 00:51
放置しないでよ・・・age
451>450:2001/05/06(日) 00:53
「モニターの解像度を640×480に強制的に変える」で検索してね。
452ぽっぽ:2001/05/06(日) 00:54
そんなもん検索しても出てくるかボケ逝け!
453ぽっぽ:2001/05/06(日) 00:55
黄金厨逝って良し!
454デフォルトの名無しさん:2001/05/06(日) 01:03
「VisualC++ モニター 解像度 640×480 強制的に変える」で検索してね。
455ぽっぽ:2001/05/06(日) 01:10
出ねーよ。クソッ騙された!答えれる奴はいねーのか?
厨房板か!ここは?
456ぽっぽ:2001/05/06(日) 01:21
下がってるぞ
457デフォルトの名無しさん:2001/05/06(日) 01:26
騙されてる騙されてる。(w
いや、でも「解像度の変更」とかで引っかかる気がするけどなあ。
458デフォルトの名無しさん:2001/05/06(日) 01:27
454を少し変えたら出たよ。
459ぽっぽ:2001/05/06(日) 01:30
出たんなら教えろ。けちんぼがーーー!
もう今日は寝る。また明日あげまくったる
460デフォルトの名無しさん:2001/05/06(日) 01:38
面白い人だ。
461デフォルトの名無しさん:2001/05/06(日) 01:38
ALT+CTRL+DEL押してみれ。
462デフォルトの名無しさん:2001/05/06(日) 02:50
「ぽっぽ」って某野党党首の俗称?
463445:2001/05/06(日) 07:15
>>448
サンキュです。
464つねに名無し:2001/05/06(日) 12:12
最近VC++でSTLって奴を勉強しはじめた。

しかし、コンパイル時によくわからんワーニングがでまくりやがる。

h:\program files\microsoft visual studio\vc98\include\xtree(118) : warning C4786: 半角文字が大杉って怒られたから略す : 識別子が '255' 文字に切り捨てられました (debug 情報内)。
とか、
warning C4786: こっちも略す: デバッグ情報で識別子が 255 文字に切り捨てられました。
とかなんだけど、これってなに?俺の使用方法が間違ってるん?
設定が悪い?VC++がわるい?MSがわるい?
465つねに名無し:2001/05/06(日) 12:15
ちなみにソースはこれ。

#include <map>
#include <string>

using namespace std;

main() {
   map<string, long> Event;
   printf("意味無し");
}

VC++は6.0でSP5まで入れてある。
466デフォルトの名無しさん:2001/05/06(日) 12:52
>>465
おまえが悪い
なんか前にもこんなのがあった。二番煎じ
>わからない人
全角スペースのわかるエディターに貼ってみて。
467デフォルトの名無しさん:2001/05/06(日) 13:45
>>465
ワーニング娘。
プ

きっと「STAR WARS」も「すたーわーず」と読むんだろな。
468デフォルトの名無しさん:2001/05/06(日) 14:43
>>464
VC++って、ものすごい投げやりなWarning吐くんだな...
シラナカッタヨ.....
469デフォルトの名無しさん:2001/05/06(日) 15:16
466はアホか?
全角インデントは、書いた奴が読みやすくしようとしただけだろ。

とりあえず、このスレで聞く前にgoogleに聞け。
http://www.google.com/search?q=STL+%8E%AF%95%CA%8Eq+%8Cx%8D%90&btnG=Google+%8C%9F%8D%F5&hl=ja&lr=lang_ja
470デフォルトの名無しさん:2001/05/06(日) 15:20
つーか、がいしゅつだからどのスレに書いてあったか探そうかと思ったけど、
面倒だったんでな。スマンね。
471つねに名無し:2001/05/06(日) 16:11
お、出ないようになった
さんくす
472デフォルトの名無しさん:2001/05/06(日) 17:40
テキストボックスにファイルの内容を16進で表示するのは?
まったくわからん。だれか教えて。(ウイザードでつくってからわからない)
473デフォルトの名無しさん:2001/05/06(日) 17:45
なにがわかんないのかぜんぜんわかんねーや。
1.ファイルを読む方法がワカンナイ
2.16進数の並びにする方法がワカンナイ
4.テキストボックスに表示する方法がワカンナイ

あ、俺はどれもワカンナイから答えられねーや
474デフォルトの名無しさん:2001/05/06(日) 17:46
3が抜けた
まーいーや
475デフォルトの名無しさん:2001/05/06(日) 18:04
3が気になる。自社ビルに4階がないくらい気になる。
海外のホテルで444号室があった以上に気になる。
476スーパービギナー:2001/05/06(日) 21:16
C言語なんですけど。

本で「べき関数を行う関数」をやってるんですが、このプログラムの
意味がわかりません。

int beki(int a,int b)
{
int i,ans;

ans=1;
for(i=1; i<=b; i++){
ans=ans*a;
}
return ans;
}

何で
  ans=ans*a
でべき関数ができるのかわかりません。それにiの範囲を指定してるのに
iを使っていなくていきなりansが出てくる。これも謎です。
どなたか解説してくれませんか?
477デフォルトの名無しさん:2001/05/06(日) 21:43
>>476
たとえば、2の3乗っていうと、2*2*2 と2を3回かけるのね。
a=2, b=3 で、iが1,2,3と増えると、ループを3回回って、
2が3回掛け合わされるわけ。

って、これはVC++の質問じゃねーじゃん。
俺っておひとよし?
478デフォルトの名無しさん:2001/05/06(日) 22:12
どこのスレだっけ?
ついこの前、x^nは1にxをn回かけたものって説明があったよね。
理論的には違うんだろうけど、x^0=1の説明の仕方としてはうまいと思った。
479スーパービギナー:2001/05/06(日) 22:34
iの意味ってなんですか?
480デフォルトの名無しさん:2001/05/06(日) 22:36
sqrt(-1)
481デフォルトの名無しさん:2001/05/06(日) 22:48
>480
虚数やん(w
482SAGE:2001/05/06(日) 22:55
>>479
ループした回数のカウント用。
483デフォルトの名無しさん:2001/05/06(日) 23:17
sqrt(-1)=NaN
484デフォルトの名無しさん:2001/05/07(月) 00:41
>>479
まずforループの使い方を勉強した方がいいと思われ。
485デフォルトの名無しさん :2001/05/07(月) 02:58
>>477
か〜な〜り〜おひとよし

forループの使い方もそうだけど、べき関数が何を行うのか分かってないような気がするぞ
486デフォルトの名無しさん:2001/05/07(月) 05:57
よくインスタンスという言葉がでてきますけど
なにを意味しているのが良くわかりません。
どなたか教えてもらえないでしょか。
487デフォルトの名無しさん:2001/05/07(月) 06:38
VC++で作ったソースを全部まるまるMOにコピーして、別のパソコンに移して
そこで編集しようと思ったのですが、「メンバ自動表示」の機能が
まったく動作しなくなってしまいました。
修復方法があれば教えていただきたいです。
488デフォルトの名無しさん:2001/05/07(月) 06:59
>>479

>>482にもあるけど、forループでは、昔からカウント用に
変数 i を使うのよ。慣習的に。
i が使用済みのときは j, k, l... と続く。

もちろんカウンタの値に意味を持たせたいときは、ちゃんとした
変数を使うけどね。
489デフォルトの名無しさん:2001/05/07(月) 07:01
>>487
左側のウインドウ?
490デフォルトの名無しさん:2001/05/07(月) 07:08
>>479
個人的には
initiation(名)開始
で納得してる。
初期値=0でループって意味で。
適当だけどね
491487:2001/05/07(月) 07:11
>>489
たとえばCStringだったら、

CString buffer;
buffer.

ってピリオド入力したらリストが表示されるじゃないですか。
あれが消えちゃったんです。
どうにか修復できないとやりずらくてかないません…
492デフォルトの名無しさん:2001/05/07(月) 07:29
>>491
ツール > オプション > エディタタブ > ステートメントの入力オプション
の設定はどう?
493デフォルトの名無しさん:2001/05/07(月) 09:24
VC++5.0とか・・・

いやだって、6.0になって感動した記憶が・・・・
494487:2001/05/07(月) 10:02
>>492
全部チェック入ってます。

>>493
VC++6.0にsp5だったかな?おそらく最新のサービスパックつけてます。
つけるまえからの問題だったので関係ないとは思いますが…
495デフォルトの名無しさん:2001/05/07(月) 11:34
>>479 >>490
FORTRANの名残じゃない?
あれはI,J,K〜Nとかの真中あたりの変数名はデフォルトで整数で
ループカウンタに良く使ったらしい。

でなんでデフォルトで整数だったかと言うと
数学の行列とか数列でAij とか A0,A1〜An とか添字で良く使う文字
だかららしい。
496デフォルトの名無しさん:2001/05/07(月) 12:39
char a[10]; char b[10];
a[0]='H';
bの配列に文字列として16進表示で代入する。
厨房なのでわかりません。
HELP ME。
497デフォルトの名無しさん:2001/05/07(月) 12:52
>>479 >>490 >>495
iterator の i じゃなかったっけ。
498デフォルトの名無しさん:2001/05/07(月) 13:21
>>496

sprintf(b, "%X", n);
499デフォルトの名無しさん:2001/05/07(月) 13:39
>>497
そのとーり
500デフォルトの名無しさん:2001/05/07(月) 21:42
>>497
FORTRANのとき、interger変数は i,j,k 辺りをよく使うので、
その名残だと思いこんでただ、オイラぁ。

そうじゃなかったのかハ。
501デフォルトの名無しさん:2001/05/07(月) 21:55
SDK で spy++ のウインドウファインダのようなものを作っています。

カーソル下のウインドウのリージョンを太枠でハイライトする、
ここまでは FrameRgn() を使ってできましたが、
フォーカスが外れた時に描画した枠を消去する方法がわかりません。

今のところ、InvalidateRect() で無理矢理再描画させているのですが…
ちらついて汚い!
どなたかわかる方いらっしゃいます?
502デフォルトの名無しさん:2001/05/07(月) 22:21
>501
再描画すべき部分は枠なんでしょ?
だとしたらInvalidateRect()じゃなくてInvalidateRgn()を使え。
CombineRgn()を使って(大きい長方形)−(小さい長方形)で枠のリージョンを作って、それをInvalidateRgn()の第2引数で指定する。
そうすれば枠だけ再描画されるので、中はちらつかないと思う。

リージョンの使い方がわからなければ、ここを参考にしてくれ。
http://www.geocities.co.jp/SiliconValley-PaloAlto/5920/api_index.html
503デフォルトの名無しさん:2001/05/07(月) 23:46
誰かインラインアセンブラでdouble型の戻り値を受け取る方法教えて!
そもそもアキュムレータに入らない?
intとかの戻り値は普通に受け取れたんだけど
504デフォルトの名無しさん:2001/05/08(火) 00:04
コンパイラが吐くコード読め>503
505503:2001/05/08(火) 00:05
やってみます>504
506503:2001/05/08(火) 00:22
できましたー!
ありがとうございました>>504様様

記念age
507デフォルトの名無しさん:2001/05/09(水) 01:17
Visual C++ 6.0で、AVIファイルから音声の振幅を表示させるプログラムを作成しています。
AVIファイルのオーディオ形式はPCM、22.025KHz、8ビット、モノラルです。
入力音声データをBYTE型で配列に蓄えているのですが、double型で配列に蓄えたいのです。
どうしたらこのようにできますか?
教えてください。
508デフォルトの名無しさん:2001/05/09(水) 01:31
キャストして代入しろ>507
for (i = from; i < to; ++i)
  doublearray[i] = (double)bytearray[i];
509デフォルトの名無しさん:2001/05/09(水) 12:13
DWORDってなんですか?
510デフォルトの名無しさん:2001/05/09(水) 12:19
>>509 MSDNで検索しろ
511デフォルトの名無しさん:2001/05/09(水) 12:22
API使って&リソースファイル手書きしてプロパティシートを作ろうとしてます。
一応手元の参考書を見ながらやっているのですが(参考書についてたソースはうまくコンパイルできました)、
参考書では1つのソースファイルに全て記述しているので、
自分のプロジェクトでは、WinMainやメインウインドウのウインドウプロシージャを
書いたものと、プロパティシートのダイアログ初期化とダイアログプロシージャを
書いたものを別々のソースに記述してみました。
(メインのウインドウプロシージャでのメニュー選択のswitchから別ソースにある
自作関数にインスタンスハンドルとウインドウハンドルを渡してプロパティシートを作らせる)
で、ビルドしてみたのですが、コンパイルは上手く行くのに
リンクでエラーが出てしまいました。
「error LNK2001: 外部シンボル "__imp__PropertySheetA@4" は未解決です」
「error LNK2001: 外部シンボル "__imp__CreatePropertySheetPageA@4" は未解決です」
と出ました。必要なcommctrl.hはインクルードしているし、リソースファイルにもダイアログの記述は
したのですが・・・・・
C++の仕様にまだ詳しくないのでその辺のミスだと思うのですが、
わかる方おられたら、ぜひ助言お願いします。
512デフォルトの名無しさん:2001/05/09(水) 12:30
DWORDってなに?
513sage:2001/05/09(水) 12:34
double world
514デフォルトの名無しさん:2001/05/09(水) 17:15
515SAGE:2001/05/09(水) 18:01
>>511
comctl32.lib をリンクするように設定するのを忘れてないかい?
516511:2001/05/10(木) 00:19
できた!!!
ありがとうございます!!
なるほど、スタティックリンクのライブラリの設定があったのかぁ〜・・・
厨房ですんまそんー
517デフォルトの名無しさん:2001/05/10(木) 02:42
DOSから動かしたいんですが、CDを入れないと動作しません。
どうしたらいいのでしょうか?
518デフォルトの名無しさん:2001/05/10(木) 03:49
サパーリ意味が掴めんが、CD入れとけば>517
519デフォルトの名無しさん:2001/05/10(木) 04:57
struct hoge{
  char a;
  short b;
  char c;
  int d;
};

なんでこれってsizeof(hoge)が12バイトなの???
自分の計算では10バイトなのに・・

VCの話題でなくてごめんなさい
520デフォルトの名無しさん:2001/05/10(木) 05:00
ネタですね。>519
わたしは確信してます。
でも一応、
「パディング アラインメント 詰め物」で検索してね。
521519:2001/05/10(木) 06:06
ネタにされてる(^^;
いやでもマジなんですよ。ごめんなさい

aa
bb
cccc
dddd
で12バイトって事はわかるんですが(この時点でわかってない?)

最後のintをshortにすると
aa
bb
cc
dd
で8バイトなんですよね

うーむ?
そもそもスレ違いですね。逝ってきます
522デフォルトの名無しさん:2001/05/10(木) 06:17
>>521
#をパディングとすると、ddddが4バイト境界で始まるように、
a#bbc###dddd
になっているんじゃないの?
523519:2001/05/10(木) 06:36
なるほどなるほど
わかりやすい説明どうもでした>>522
524デフォルトの名無しさん:2001/05/10(木) 14:52
MFCの CAsyncSocket つかって通信してるんですけど
数メガのデータ送っても 8640byte に分割されて届きます。
分割されないでGetできる方法はないものでしょうか?
525デフォルトの名無しさん:2001/05/10(木) 16:38
>>524
UDP わかってる?
526524:2001/05/10(木) 16:56
デフォルトのまま SOCK_STREAM でやってます。
UDPではやってません。
CAsyncSocket か CSoket を使えば、送ったサイズで
分割されずにそのまま取得できると聞いたんですが。
デマでしょうか?
527デフォルトの名無しさん:2001/05/10(木) 23:23
SDIにおいてCDocumentクラス中で関連付けられているview classの
デバイスコンテキストは取得できますでしょうか?
528名無しさん:2001/05/10(木) 23:50
GetNextView()->GetXXXDC()でいいんじゃないの。
529名無し:2001/05/10(木) 23:52
>>524
8640byteに分割はされていても、結局は届くんでしょ?
そうじゃなかったらすまん。
でも、いきなり5MB届きましたーって言われんの嫌じゃない?
そこまで原因不明で帯域落ちたりすんのよ、多分。
逐次処理したいでしょ、ファイルに書きこむにしても。
530デフォルトの名無しさん:2001/05/11(金) 00:05
DOS窓でC言語基礎を勉強している者だけど、MS−DOSプロンプトの画面で前に自分で入力した文字を↑キーを押すと戻って表示できるようにするにはどうすればいいのですか?

例えば、「cl ○○.c」したらエラーが出て「edit ○○.c」を↑キーで戻って表示する・・・みたいな

くだらない質問でスマソ
531デフォルトの名無しさん:2001/05/11(金) 00:11
>530

DOSKEY
DOSKEY /INSERT
DOSKEY /?
を実行してみろ。
532デフォルトの名無しさん:2001/05/11(金) 00:35
>>531
めちゃくちゃくだらない質問なのに、答えていただきありがとうございました
533デフォルトの名無しさん:2001/05/11(金) 12:45
ダイアルアップネットワークのアイコンが接続時と切断時で
変わるんだけど(ショートカットのアイコンも)
それってどうやってやるんでしょう?

プログラムで真似できないのかなぁ??
534524:2001/05/11(金) 14:41
>>529
レス、サンキューです。
やっぱ、TCPは暗黙の了解で約8Kってのがあるみたいですね。
まあ、でかい容量を送るときは、UDPとちがって必ず、
送った順に届くみたいだから、そこのところは便利なのかな。

やっぱTCP使ってみます。
535デフォルトの名無しさん:2001/05/11(金) 16:39
ダイアログでフォント使うんだけど、皆さんどんなフォント使ってます?
少なくともWindows標準のでないといけないだろうけど、
どれを使えばいいかさっぱり。
システム標準のをダイアログで使う(フォント無指定)と
文字が大きくて不恰好だし、
かといって安易にフォント指定すると
そのフォントがユーザーのWindowsに入ってなかったら
オブジェクトの位置までずれてしまうし・・・・
MS UI GothicとかTahomaがいいかなと思うんだけど、
これって95/98/2000共通でしょーか?
それか、もしダイアログで、例えばスタティックテキストやチェックボックスの文字の
フォントサイズだけ変更する方法があれば一番うれしいんだけど。
知ってる人居たら教えてください。
536デフォルトの名無しさん:2001/05/11(金) 16:48
WM_SETFONT
537デフォルトの名無しさん:2001/05/11(金) 16:48
>535
フォントを変える必要に迫られたことがないので無指定。
>大きくて不格好
というのはセンスの問題以前の環境の問題があると思われ。

どうしても変えるなら、rcファイルの中見てみれ。
538535:2001/05/11(金) 17:45
とりあえずrcファイル読んでみました。これわ勉強になる〜!
結局MS UI Gothic使って、なんか問題あったら
WM_SETFONT使ってみることにします。
ありがとうございます!
539デフォルトの名無しさん:2001/05/12(土) 15:12
まだ初歩なんですが、2桁以上の整数をscanfではなく
getcharで入力させるにはどうしたらいいんでしょうか?
540デフォルトの名無しさん:2001/05/12(土) 15:25
最適化済みのものをデバッグするのはどうしたらいいんでしょう?
オプションの指定ではじかれてしまう
541デフォルトの名無しさん:2001/05/12(土) 15:43
>>540
ソースデバッグは無理でわ。
関数単位で BP あてたり、スタックトレース程度。

*.dbg 作っておくと最適化したバイナリでもデバッグできるが、
VisualStudio では簡単に作る方法は無かったと思う。

そういう点では統合環境は不自由で不便。使いにくい。
542デフォルトの名無しさん:2001/05/12(土) 15:51
ありゃそーなんですか
じゃ噂に聞く、リリースビルドにしたら動かなくなった
なんてヤツは原因追求が大変なんですね
543デフォルトの名無しさん:2001/05/12(土) 16:21
VC++6.0で2文字以上の文字列を記録する型を教えてくだサイ。。
charだと一文字しかダメですの。
544デフォルトの名無しさん:2001/05/12(土) 16:23
>>543 うむむ、Cわかってますか?
とりあえず、string だけど、用法注意
545デフォルトの名無しさん:2001/05/12(土) 16:25
ゴメン、教えてくれてありがと〜。
今から本読んでみるよ
546541:2001/05/12(土) 17:18
>>542
そうそ、ありがち。
デバッグ用の printf 入れたら落ちなくなっちゃった…なんて。

そーゆーときは大抵、ポインタまわり。メモリ壊してる系の...。
547デフォルトの名無しさん:2001/05/12(土) 17:58
>>543
char *s="koredeiinndakke?";
あれ?これでダメだっけ?
間違ってたらごめん
548BitBltってなんかかっこいいよね:2001/05/12(土) 18:16
Bitmapを上下逆さまにして(180度回転ね)表示したいんだけど
方法はないでしょうか?API見たけど、どうもなさそう。。。
しょうがないから自分でメモリー上で反転させないといけないのかなぁ。。
549デフォルトの名無しさん:2001/05/12(土) 19:38
Win32API(SDK)で
エディットボックスの最後にテキストを挿入(追加)した場合
カーソルの位置も最後尾に移ってしまって、表示もテキストの最後に
移動してしまいます。
エディットボックスの表示とカーソル位置をそのまま維持し
テキストを末尾に追加するにはどうしたら良いですか?
550543:2001/05/12(土) 19:40
>>547
どうも、アリガト
試してみます
551fuck:2001/05/12(土) 19:59
>>548
ビットマップのヘッダーの縦の長さ(具体的には0x16〜のDWORD値)
の符号を反転させれば上下逆さになりますね。まったくお勧めしませんけど。
SetMapModeで専用のデバイスコンテキストについて座標の取り方を
変更してもできそうですね。まったくお勧めしませんが。
552BitBltってなんかかっこいいよね:2001/05/12(土) 20:35
Fine, Ass Hole! わかったよ。
左上隅(x1, y1) 右下隅(x2, y2)
pDC->StretchBlt(x1, y2, width, -height, &mdc, 0, 0, width, height, SRCCOPY);

ホントにアリガト。このfuck野郎!
553名無しさん:2001/05/12(土) 23:27
age
554名無しさん:2001/05/12(土) 23:28
age
555デフォルトの名無しさん:2001/05/13(日) 02:11
くだらない質問ですが、
if(a=b!=0){...}が、bが0の時に実行されるのは何故ですか?
556デフォルトの名無しさん:2001/05/13(日) 02:48
a=b が先に評価されてるからだろ 代入は真を返すよ
557デフォルトの名無しさん:2001/05/13(日) 02:56
大嘘かいちゃった。実行されないぞ
int i,j;
j = 0;
if(i=j!=0){} }
558デフォルトの名無しさん:2001/05/13(日) 03:05
>>555
あなたの勘違い
559デフォルトの名無しさん:2001/05/13(日) 03:11
>>558
>あなたの勘違い
そうともいえないゾ!
aがこんなクラスのインスタンスだったらどうする?
class A {
public:
bool operator=(int b) { return true;}
};
560デフォルトの名無しさん:2001/05/13(日) 03:32
bがfloatだとか
561デフォルトの名無しさん:2001/05/13(日) 05:29
>>560
ダメ
0がfloatにプロモートされるだけ
562デフォルトの名無しさん:2001/05/13(日) 05:32
プロモート ってなんですか?
563デフォルトの名無しさん:2001/05/13(日) 11:08
入力された数字以下の素数を表示するプログラムなんですが、
int main(){
int i,j;
printf("数字を入力してください\n");
scanf("%d",&a);
for(i=2;i<=a;i++){
for(j=2;j<=i;j++){
if(i%j==0){
break;
}
}
if(i==j){
printf("%d",i);
}
}
return 0;
}
とした時にこのscanfをgetcharにかえてプログラムを
作らないといけないんですが、どうすればいいんでしょうか?
ちなみに3行でできるらしいです。
564563:2001/05/13(日) 11:11
二行目のintはint i,j,a;です。すいません。
565デフォルトの名無しさん:2001/05/13(日) 12:17
>>563
素数とぜんぜん関係ねーだろーが。
566デフォルトの名無しさん:2001/05/13(日) 12:45
>>556-561
そうですよね、実行されるわけありませんよね。
何故だ、何故だ? あ〜わかんなくなってきた。
どっかに別の原因があるって事ですよね。探してみます。
(でもウォッチではaもbも0なんだよなあ…VCのバグ?)
567厨房と言いたきゃ勝手にしろ:2001/05/13(日) 16:16
TurboCでDOS用ロックマンを作ったんだよ。
文化祭用に。
何故ならVCの理解がわしの頭じゃできなかった。

・・・・・・・・別に。ひとりごとですよ。

VC難しすぎ。
568デフォルトの名無しさん:2001/05/14(月) 13:06
厨房ですいません。
CDocument::Seriallize()で
CBitmapオブジェクトに読み込んだ
画像を保存したい時ってどうやるんでしょうか。
以下ではだめですよね。

void CTestDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: この位置に保存用のコードを追加してください。
ar >> m_bmPicture; // ←CBitmapオブジェクト
}
else
{
// TODO: この位置に読み込み用のコードを追加してください。
ar << m_bmPicture;
}
}
569デフォルトの名無しさん:2001/05/14(月) 13:22
とりあえず << と >> が逆じゃないか?
570デフォルトの名無しさん:2001/05/14(月) 15:48
CDocument::Seriallize()で
CBitmapオブジェクトに読み込んだ
画像を保存したい時ってどうやるんでしょうか。
以下ではだめですよね。

void CTestDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: この位置に保存用のコードを追加してください。
ar << m_bmPicture; // ←CBitmapオブジェクト
}
else
{
// TODO: この位置に読み込み用のコードを追加してください。
ar >> m_bmPicture;
}
}
571デフォルトの名無しさん:2001/05/14(月) 20:06
spy++って何が面白いんですか?
572デフォルトの名無しさん:2001/05/14(月) 20:40
>>571
をぃをぃ、そんなことマジで聞いてんの? ハッカーの必需品だろ?

美人のねーちゃんの衣服越しに中身が覗けるところに決まってんだろっ!
APIMON なんか、もっとすごいんだから。もぅ、グフフもんだね、あれは。
573571:2001/05/14(月) 20:46
ウインドウに送信されるメッセージがを覗き見るのが嬉しいんですか。l
574デフォルトの名無しさん:2001/05/14(月) 22:22
>>570
ファイルとしての保管方法自体は、
www.codeguru.comあたりにサンプルがあったような
気がするよ。CBitmapにはアーカイブストリームへ
出力するためのオペレータは実装されてないから
ファイルI/Oを自分でかくか、CBitmapの派生クラスで
<<と>>をオーバーライドせよ。
575デフォルトの名無しさん:2001/05/14(月) 23:13
MFC使うとWinMainないけど省略してるだけ?
コンパイラが自動的に付け加えるってことでいいんですか?
576デフォルトの名無しさん:2001/05/14(月) 23:28
>>575
そ。省略されてる。実体はライブラリの中にある。

MS-Linker は /subsystem:windows のとき、/entry:WinMainCRTStartup が
指定されたものと見なし、リンカはそれを解決することから仕事を始める。

まず渡された *.obj を探していき、なければ *.lib を引き渡された順、もしくは
見つかった順に探していく。MS-Linker はこんなかんじ。

でも棒国のリンカは OMF リンカなので少し違う。

スタートアップルーチンをアセンブルするときに、オブジェクトに
「ここにエントリポイントがあるよ」って埋め込んじゃう。
だから BC++ のリンカにはエントリポイントを指定するオプションがない。

どぅお、わかった?
577デフォルトの名無しさん:2001/05/14(月) 23:51
だから何でSPY++が面白いんだよっ!!!
578デフォルトの名無しさん:2001/05/15(火) 00:19
>>576
微妙に違う
579デフォルトの名無しさん:2001/05/15(火) 00:30
ていうかSPY++の話題なんて今まで一回も聞いたことなかったよ。
580名無し:2001/05/15(火) 00:48
フリーソフト作りたいんだけど、
作ったプログラムをどうやってフリーソフト化(?)
するか教えてください。

フリーソフトのソースってどこにあるの?????????
581デフォルトの名無しさん:2001/05/15(火) 00:53
>>580
フリーソフトの意味
間違えてると思う…
582OP:2001/05/15(火) 00:56
はじめまして。単発スレを立ててしまいましたが
ここで新たに質問させていただきます。
壁にぶちあたってます・・・
他でも質問したのですが解答がなくて・・・。
今回はActiveXで、LabelとEditとButtonのついている
Form型のOCXを作成しているのですが、ViewFormに
貼り付けて動作させようとしたところ、
エラーが発生して落ちてしまいました・・・。
見てみると貼り付けたコンポーネントの
ハンドルがとれていませんでした。
ViewFormの追加の仕方がわるいのでしょうか?
ViewFormを追加して作成したOCXのプロジェクトを
http://203.174.72.112/santa-p/VC++/
にて公開していますので、もしよければ
ダウンロードしてソースを見て
ご指導願えないでしょうか?
また、DLではVC++のソース一式がDLされます。
決してウイルス等ではありませんが、
DLは気が引けるという方もおられると思うので
PG内容をまとめたら説明したいと思います。
ただ時間の制限があり、説明が下手なのと、
説明したら長くなりそうで
実際のソースを見ていただいた方がいいかなと
思いましてDL方式を取らせて頂きました。
P.S.
ViewFormを追加して作成する前には
ActiveXのStaticフォームにAPIでボタン等を
内部的に作成して画面を作りましたがボタンを押下する
イベントをどのように表すのかわからなく
挫折してしまいました。もしこの方法でボタンの
押下処理方法がわかる方がいれば御教授お願い致します。
色々試行錯誤しているのですが、これ以外に
こんな方法でできるというものがあればどうぞ
教えて下さい。お願い致します。。。

開発言語:VC++ 6.0
OS:Windows2000
VC++のMFC ActiveX ControlWizard
http://203.174.72.112/santa-p/VC++/にある
OCXのプロジェクトはaasamp01.LZHというファイルです。
よろしくお願い致します。
583OP:2001/05/15(火) 00:58
すみません。省略されてしまいましたので
一応再度書きました。
P.S.
ViewFormを追加して作成する前には
ActiveXのStaticフォームにAPIでボタン等を
内部的に作成して画面を作りましたがボタンを押下する
イベントをどのように表すのかわからなく
挫折してしまいました。もしこの方法でボタンの
押下処理方法がわかる方がいれば御教授お願い致します。
色々試行錯誤しているのですが、これ以外に
こんな方法でできるというものがあればどうぞ
教えて下さい。お願い致します。。。

開発言語:VC++ 6.0
OS:Windows2000
VC++のMFC ActiveX ControlWizard
http://203.174.72.112/santa-p/VC++/にある
OCXのプロジェクトはaasamp01.LZHというファイルです。
よろしくお願い致します。
584デフォルトの名無しさん:2001/05/15(火) 01:25
>>577
おまえ、なにムキになってんの?
SPY++ にうらみでもあんの?
それとも、自分も「グフフ」したいわけ? (藁
あぁ〜?
585デフォルトの名無しさん:2001/05/15(火) 03:01
>フリーソフト作りたいんだけど、
>作ったプログラムをどうやってフリーソフト化(?)
>するか教えてください。

今なら楽なのは自分でwwwサイト立てる
(気がねとか面倒はこれが一番少ないかな)か
vectorみたいなFREEソフト集めてる所
(のうち悪質じゃないところ)に登録するか。

FREEが無料の意味だと思うなら、
そのとき「これは無料だぜ」と書き添えればいいだけだし、
FREEが自由の意味だと思うなら、
そのときコンパイル済みバイナリだけじゃなく
ソースも添えればいいだけ。「好きに使えや」の一言も添えれば尚ヨシ。

日本じゃ著作権はモノ作れば自ずとつくそうなので、
深く考えなくてもこれだけで「フリーソフトを作れる」
とは言えるのでわないかと。

>フリーソフトのソースってどこにあるの?????????

どこって…
あなたが作ったソフトなら、
ソースはあなたの計算機のDiskにしか有りません。
他のこの世のドコでもなくあなたのDiskにだけ。

逆にいうと、自分のDiskが飛んだり家が火事に
なったりしてソース消失すると悔しいんで
バックアップ取りたいわけだが、
他人様のHDDにバックアップさせたいと思ったら
FREE(自由のほう)ソフトとして公開しちまうのはお得だ(w
場合によってはこれが一番安いかも(w
更に運がよければ、無料で友達が出来たり添削してもらえたり
敵が出来たり(w)するぞ。
586OP:2001/05/15(火) 10:48
>>582, >>583です。
Viewを追加するVC++でのActiveX作成方法をまとめました。
といっても作成手順の参考にさせて頂いた文章そのままですが。。。
1. CMyFormView の作成
1.1 リソースを作成
ResouceView/Dialog/右クリック/挿入で IDD_FORMVIEW を挿入
1.2 CMyFormView の作成
IDD_FORMVIEW が表示された状態で、Ctrl-W を押して、CFormView を
基底クラスとした CMyFormView を作成

2. CMyFormView の修正
2.1 コンストラクタ/デストラクタが protected になっているので public に
変更
2.2 CFormView::Create(...) も protected なので、次のソースを追加
---
public:
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName,
DWORD dwRequestedStyle, const RECT& rect, CWnd* pParentWnd, UINT nID,
CCreateContext* pContext)
{
return CFormView::Create(lpszClassName, lpszWindowName, dwRequestedStyle,
rect, pParentWnd, nID, pContext);
}
---
2.3 CMyFormView::PostNcDestroy() をオーバーライドして処理をコメントに
する(delete this 動作の禁止)

****CMyControl.cppに追加したFORMVIEWのヘッダーをインクルードする。
587OP:2001/05/15(火) 10:49
つづき
3. CMyControl への CMyFormView の追加
3.1 次の行を CMyControl のヘッダーに追加

CMyFormView m_MyForm;

3.2 次のコードを追加(WM_CREATE, WM_SIZE)
# ClassWizard 使ってください。

int CMyControl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
m_MyForm.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
CRect(0,0,0,0), this, 1/* means ID 適当 */, NULL);
return 0;
}

void CMyControl::OnSize(UINT nType, int cx, int cy)
{
COleControl::OnSize(nType, cx, cy);
if (m_MyForm.m_hWnd != NULL)
m_MyForm.MoveWindow(CRect(0, 0, cx, cy), TRUE);
588OP:2001/05/15(火) 10:49
このようにしてView追加をしたActiveXを作成したのですが、確かにViewは
追加されるのですがそのViewの上に置いたコンポーネント(ButtonやEdit等)
のハンドルが取れずGetWindowText等の処理ができなく困っています。
何か手順がおかしいのでしょうか?
また、CMyControl 上に直接置く方法も考えましたがFormがあるわけではないので
どのように追加したらいいのかがわかりませんでした。
APIで画面を作成してもみましたがAPIで作成したボタンの押下処理をどこで判断するのか
これまたわからず挫折しました。。。
こちらの方法でもわかるという方がいたら御教授よろしくお願い致します。
また、この方法以外でも画面タイプのOCXの作成方法があるという方は、
作成手順、方法を教えて下さい。
どうぞよろしくお願い致します。
589デフォルトの名無しさん:2001/05/15(火) 11:24
CFileDialogでデフォルトで開いているディレクトリの位置
を指定するにはどうしたらいいでしょう?
なんか、毎回開くたびにワークスペースがあるディレクトリに初期化
されてしまうので…。
590OP:2001/05/15(火) 11:29
VC++ 6.0で開発中ソースをたった一行コメントにしたら
こんなエラーでちゃったんですけど。。。
どうすれば修復できるのでしょうか?
コメントもとに戻してもエラーは出たまんまです。
さっきまできちんとコンパイル通っていたのに・・・
mfcs42d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 はすでに MSVCRTD.lib(dllmain.obj) で定義されています
mfcs42d.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 は MSVCRTD.lib(dllmain.obj) で定義されています; 2 つ目以降の定義は無視されます
ライブラリ Debug/NMA03.lib とオブジェクト Debug/NMA03.exp を作成中
Debug/NMA03.ocx : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました
link.exe の実行エラー
591デフォルトの名無しさん:2001/05/15(火) 11:49
>>589

CFileDialog::m_ofnをいじる。
OPENFILENAME構造体の内容はMSDNで調べれ。
592589:2001/05/15(火) 12:50
>>591
自己レスですが
::SetCurrentDirectory()
でOKでした。
593デフォルトの名無しさん:2001/05/15(火) 16:19
>584
してえ!今すぐ何が面白いのか教えろ。
594デフォルトの名無しさん:2001/05/16(水) 01:45
MSDNのお気に入りって、他に持ってく時、どこ持ってけばいいの?
595デフォルトの名無しさん:2001/05/16(水) 11:35
VC++でMAME32のコンパイルってどうやったら出来ますか
色々調べたんだけどC++Builderのやりかたしか見つからなかったです
596デフォルトの名無しさん:2001/05/16(水) 11:53
>>594
ひとつで良いなら、開いておいて、移動から現在のURLをゲットすればOK。
まとめたやつは
C:\WINDOWS\Application Data\Microsoft\HTML Help\hh.dat
みたい。
597デフォルトの名無しさん:2001/05/16(水) 13:21
>>596
多謝です!
598デフォルトの名無しさん:2001/05/17(木) 00:27
>>593
う〜んと、一言で説明するのは難しいなぁ...。
説明しても、おまえには面白くもなんともないかも知れんぞ。
第一、ここじゃあ、スレ違い。

あるスレにちょこっと書いとくから、ソノ気があるなら探せ。
599デフォルトの名無しさん:2001/05/17(木) 01:54
無い。どこにも無いぞ。
600デフォルトの名無しさん:2001/05/17(木) 02:47
>>598
えっちねた板にある書き込みのことか?(w
601ななし:2001/05/17(木) 07:49
PCカードのA/D変換を使ったアプリケーションを
作ろうと思いますが、PCカードに関して、
A/D変換に関しての有益な情報を
お願いします。
602でふぉるとノ名無シサン:2001/05/17(木) 15:37
>>593,599

SPYをgooの英和辞典で調べると「偵察」となっている。
派生で、SPYHOLEというものがあって意味は「のぞき穴」。
で、SPY++は何をするものかというと、
Windowsをはじめとするソフトウエアの「穴」を探すツールで、
「グフフ」とできるかどうかは、「のそき穴」の先が何かによるでしょう。
603デフォルトの名無しさん:2001/05/17(木) 15:51
ファイルを開くときの参照で出てくるあのウインドウって
何かの関数やマクロで使えるんでしょうか?
生WindowsAPIで使いたいのですが、よかったらどなたか教えてください。
お願いします
604デフォルトの名無しさん:2001/05/17(木) 17:56
>>603
はい。
605でふぉるとノ名無シサン:2001/05/17(木) 18:51
>>603
↓ここに見て
http://www.venus.dti.ne.jp/~takatomo/win32/getopenfilename01.html

>>593
上のページを開いて[NEXT→]を押して。
SPY++を使った例があるから
606デフォルトの名無しさん:2001/05/17(木) 18:56
Win2000とかWinMeタイプの「ファイルを開く」
(左側にマイコンピュータとかデスクトップとかあるやつ)
はどうやって開くんでしょうか?
607デフォルトの名無しさん:2001/05/17(木) 19:09
OPENFILENAME open_file_name;
memset(&open_file_name, 0, sizeof(open_file_name));
open_file_name.lStructSize = sizeof(open_file_name);
GetOpenFileName(&open_file_name);
608デフォルトの名無しさん:2001/05/18(金) 03:20
WM_APPについて質問です。

アプリケーションでローカルなメッセージを定義したいときにはWM_APPを使えと
いうことは各種の資料を読んで理解したのですが、googleでWM_APPを検索して
出てきたサンプルソースコードは大抵「WM_APP+100」というように、100を加えて
いるのです。

これには何か理由があるんですかね??
609デフォルトの名無しさん:2001/05/18(金) 12:23
>>611
ない。
610デフォルトの名無しさん:2001/05/18(金) 12:47
>>609
611 って、だれ?

↓おまえか? こたえが↑になるように、ちゃんと質問しろよ。 (藁
611611:2001/05/18(金) 12:55
動的リンクされるMFC60.DLLのリビジョンを調べて動作を分けるために簡単な方法はありますか?
612610:2001/05/18(金) 14:16
>>611
よしっ、ごーかぁーくっ!! (爆
確かに簡単な方法は「ない」。 >>609
613デフォルトの名無しさん:2001/05/18(金) 15:44
何か時間の流れがおかしくなってるよ、ここ(藁
614611!=609:2001/05/18(金) 16:35
MFC60じゃなくてMFC42だわな…ネタが中途半端になってしまった。宇津出汁脳。
615:2001/05/18(金) 16:50
現在WinSDKにてC言語でゲームつくりしてます。
MFCに移行しようとおもいのですが、この場合、使用言語はC++でないと
いけないのでしょうか?MFC + C言語はだめなのでしょうか?
616デフォルトの名無しさん:2001/05/18(金) 17:02
いいんじゃない?自分でいじる範囲はCで書けば。
ただ、MFC自体がC++だし、触らないわけにはいかないと思うけど。

既にSDKレベルでゲーム作れてるんなら
無理にMFCなんか触らなくてもいいじゃん。いいことないよ。
MFCじゃないと出来ないことなんて何も無いんだから。
617デフォルトの名無しさん:2001/05/18(金) 20:21
VC6でゲーム作ってるんですが、
よくMSのソフトで「Build 2560」とかでるじゃないですか。
なんとなくカッコイイんで自分のプログラムでもビルドするたびに
カウントアップするようなのを付けたいんですが、
これってVC6の統合環境での機能としてあるんでしょうか?

__DATE__とかみたいに自動で定義してくれるといいんですが。
618デフォルトの名無しさん:2001/05/19(土) 01:03
>>617
BCB ならビルド番号を自動でカウントアップしてくれるけど、
VC なら VBS でガリガリ作ってやる必要がある。
MS のどっかにその VBS があったと思うぞ。
619デフォルトの名無しさん:2001/05/21(月) 04:37
VC++っていうよりはDevStadioの質問になるかもしれないんですが、自分の使っているVC++の環境を
他のマシンに移すときってみなさんどうしていますか?
キーの設定とか、ウィンドウ配置だとか、ツールバーだとか・・・

特にキー設定を移す方法がわからなくて、レジストリ等散々探してみたんですがこれというものを
見つけられませんでした。
620デフォルトの名無しさん:2001/05/21(月) 11:51
>>619
探し方が悪い
レジストリにもろにあるぞ
621デフォルトの名無しさん:2001/05/25(金) 02:37
Win2k環境でVC++6.0を使ってるんですけど
C:\WINNT\Temp\no.datの場所のファイルを
読み込みたいんですが
warning C4129: 'W' :
エスケープ シーケンスとして正しく認識されませんでした。
って表示されてしまいます。
で、C:\\WINNT\\Temp\\no.datに変えてみて
実行してみたらちゃんと読み込めず
デバックエラーっていうダイアログが出てきてもう
どうすることもできません。
誰か解決方法わかりますか?
622デフォルトの名無しさん:2001/05/25(金) 03:24
>>621
オープンはできたが621のヘタレコードでクラーシュしているだけだと思われ。
デバッガ使えよ。
623デフォルトの名無しさん:2001/05/25(金) 03:54
WINNTディレクトリへのアクセス権が無いとか
624621:2001/05/25(金) 04:12
if(file == NULL){
printf("ファイルオープン失敗\n") ;
exit(1) ;
}
これ付けてみたらファイルオープン失敗って
でちゃいます・・・。
ちゃんと読み込めてないんでしょうね。
ちゃんとアクセス権もありますけど無理っぽいです。
もうしんどくなってきた、ちょっと逝ってきます。
625デフォルトの名無しさん:2001/05/25(金) 05:10
libpng.libを使いpngファイルを読み込もうとしてるのですが
プロジェクトのC++タグ、コード生成を「マルチスレッド(デバッグ)」
にすると問題が無いのですが、「マルチスレッド」にすると動かないんです。
しかもF5で実行すると「マルチスレッド」であっても問題がでません。

メモリ確保の関係でこけてる気がするのですが、デバッグモード(!=デバッグバージョン)
だと動いてしまうので確認もできず途方に暮れています。
もし何かご存知の方、いらっしゃいましたらアドバイスお願い致します。
626625:2001/05/25(金) 07:28
古いライブラリに替えた最初の一回だけ動いたり…分からない

質問をかえて、ctrl+F5で実行した場合とF5で実行した場合とでは、
何が違ってくるのかだけでも、よろしければ教えて下さい

何かdefineでもされてるのでしょうか
627デフォルトの名無しさん:2001/05/25(金) 10:28
>>625 私も知りたいのであげておきます。
628デフォルトの名無しさん:2001/05/25(金) 14:08
ダイアログベース+エディットボックスで以下のようなプログラムを作りたいんですけど
どなたか教えて下さい。
1.画像ファイルを読み込む(jpeg,tif,bmp等種類を問わずに)
2.エディットボックスに入れた文字をその画像の上に載せる
3.その画像をダイアログに貼り付ける
629デフォルトの名無しさん:2001/05/25(金) 14:12
>>628
何を教えて欲しいのか教えてくれ。
630デフォルトの名無しさん:2001/05/25(金) 14:17
1〜3のやり方が分からないんです。
631デフォルトの名無しさん:2001/05/25(金) 14:25
1.どんな画像ファイルでもDIB形式に変換できるCOMを持ってくる。もしくは自分で書く。
2.メモリDCに1で読んだDIBを張り付け、GDIで文字を上書き
3.あらかじめビットマップコントロールをダイアログに張っておいて、そこに2でできたDIBをBitBltする。

いじょ。
632U-N:2001/05/25(金) 14:27
CPictureHolder
633デフォルトの名無しさん:2001/05/25(金) 14:30
>>631
そのCOMはどこにあるんでしょか?
634デフォルトの名無しさん:2001/05/25(金) 14:32
1.買う
2.拾う
3.書く
635デフォルトの名無しさん:2001/05/25(金) 14:36
>>634
書きますので教えて下さい。
どういう風に書けばいいんでしょうか?
636デフォルトの名無しさん:2001/05/25(金) 14:41
1.ファイルを開く
2.データを読む
3.展開する
637デフォルトの名無しさん:2001/05/25(金) 14:43
>>636
取りあえず1のコードから教えて下さい。
638デフォルトの名無しさん:2001/05/25(金) 14:46
それくらい自分で調べていただこう。
ヘルプにも書いてあるし付属のサンプルだってある。
チュートリアルにも書いてあるよ。
639デフォルトの名無しさん:2001/05/25(金) 14:52
>>638
すいません。
そうですね、CFileDialog 使えば良いんですよね。
2.のデータの読み込みってどうやれば良いんですか?
640デフォルトの名無しさん:2001/05/25(金) 14:55
それくらい自分で調べていただこう。
ヘルプにも書いてあるし付属のサンプルだってある。
チュートリアルにも書いてあるよ。
641デフォルトの名無しさん:2001/05/25(金) 15:03
>>639
普通に CFile::Read でいいでしょう
642デフォルトの名無しさん:2001/05/25(金) 15:10
>>640
えっと確認なんですけど、CFile::Readを使うの?違いますよね?
643デフォルトの名無しさん:2001/05/25(金) 15:11
それくらい自分で(以下略)
644デフォルトの名無しさん:2001/05/25(金) 15:11
>>641
アウチ!
使えばいいのか。
3.展開するってのはどうすれば良いの?
645デフォルトの名無しさん:2001/05/25(金) 15:16
読み込むフォーマットによる。
なにがしかの圧縮がかかっていれば展開する。
それぞれのフォーマットでどうデータが格納されてるかは自分で調べれ。
たいてい展開するコードが公開されてるよ。

ていうか2chをリロードしてるヒマがあったら手を動かせ。
ヘルプ読め。webを検索しろ。
646デフォルトの名無しさん:2001/05/25(金) 15:16
AppWizardでSDIで作成されたものにスプリットウインドーで分割しました。

CMainFrame >> CSplitterWnd >> CView
これを、次のようにしたいのですが、
CMainFrame >> CSplitterWns >> COtherFrame >> CView
終了したときにエラーになってしまいます。(WINFRM.cppの829行)
OnCreateClientでCCreateContexをいじってみたりしましたが、駄目でした。

この場合、どのようにすればいいのでしょうか?
647625:2001/05/26(土) 05:17
なんとも情けないことにメモリ確保のチェックミスでした。
F5やマルチスレッド(デバッグ)で実行した場合は、たまたま
必ずチェックを通ってしまうという現象が起きていたみたいです。
つまらない質問をしてしまい、大変申し訳ありませんでした。
>>627
同じような所でお悩みのようですが、原因はたぶん別のことだと思います。
私のはマヌケすぎな理由だったので。何か力になれると良いのですが…。
648デフォルトの名無しさん:2001/05/26(土) 19:12
ソースウィンドウの色変えたい。
背景色とか。
どーすればいいの?
649SAGE:2001/05/26(土) 21:57
ツール(T)オプション(O)書式背景(B)
650デフォルトの名無しさん:2001/05/27(日) 06:18
 騙し騙し、STLを使うようになったのですが、
カベに当たってしまいました。ソースが汚いですが、見てやって下さい

----------------------------------------
#include<stdio.h>
#pragma warning( disable : 4786 )
#include <vector>
#include <map>

typedef struct{
int aaa;
char *bbb;
} T_CCC;

vector<map<int,T_CCC>::iterator> m_vec;

void procs()
{
vector<map<int,T_CCC>::iterator> p;

p = m_vec.begin();
for( ; p != m_vec.end() ; p++ )
{
printf( "%d", p.second.aaa ); // ←このコードがエラーになります
}
}
----------------------------------------

 mapで管理しているもののうち、一部のパターンに乗るものだけを
別途リスト化したいと思い、書いたコードです。
多分、こんな方法を使わなくても、色々な良い方法があると思うのですが、
多重化しなければ成らなくなった時の例題ソースにもしたいので、
解決できると有り難いです。
コンパイラは"MS-VC++6.0pro"で、(関係無いですが)MFC非使用です。
651650:2001/05/27(日) 06:20
スペースを半角で書いていたので、全部飛んでしまいました。
さらに見難くなってしまってすみません m( _ _ )m
652デフォルトの名無しさん:2001/05/27(日) 07:54
>>650
一応こんな風に解釈してみました。外してるかな?

void procs()
{
    vector<map<int,T_CCC>::iterator>::iterator p;

    p = m_vec.begin();
    for( ; p != m_vec.end() ; p++ )
    {
        printf( "%d", (*p)->second.aaa );
    }
}
main(){
    T_CCC a = { 5, "a" };
    T_CCC b = { 8, "b" };
    T_CCC c = { 3, "c" };

    //a,b,cをmapで管理している
    map< int, T_CCC > _map;
    _map[ a.aaa ] = a;
    _map[ b.aaa ] = b;
    _map[ c.aaa ] = c;

    //a,bを一部のパターンに乗るとして別に管理
    m_vec.resize(2);
    m_vec[0] = _map.find( a.aaa );
    m_vec[1] = _map.find( b.aaa );

    procs();
}
このやり方、正直回りくどくしちゃってるだけの気もします(^-^;
653652:2001/05/27(日) 09:11
回線切ってから気づいた。_mapにコピーしといて管理もなにもないですね。
すいませんが適当に読み替えといてください。
あとvector<map<int,T_CCC>::iterator>::iterator pには御注意をば。

うーん、mapで実体を持つなら上のもありですが、そうじゃないなら
vector< T_CCC* >m_vecの方が良いと思います。
654650:2001/05/27(日) 10:14
>>652

 解釈は微妙に違ってましたが(^^;
エラーは完全に回避することが出来ました。
徹夜明けだったものですから(言い訳です)、カッコ付けるのを試してませんでした。
というか、”試す”なんて書いている時点でダメプログラマですね(爆)

 mapの方には500件程度のデータがあり、
vectorに入れなければ成らないのは10件程度で、
mapのキー以外で検索しなければならないものでしたので、
こういう形にすることになってしまいました。

 まだSTLの本を全部読み終わって居ないので何とも言えないのですが、
"反復子"と"ポインタ"っていうのは、元アセンブラプログラマから見ると、
同じに見えてしまっていまして、現在vectorのほうに"*"を付けてませんでした。
この処理は、今後バグを生む事は分かっているのですが、どういう結果になるか
興味があるので、結果を知ることが出来るまで、このままにしようと思っています。
(一応、(mapは位置が保証されるとの事なので)mapに実体を持っています。)

 ただ、この処理自体が、スレッドで、1秒間に30回ほど実行されるものなので、
ほかの怖いバグ(クリティカルなもの等)に悩まされることだろうと思います。(^^;

 ということで、速い回答を頂き、感謝します。
私も、色々な質問に回答が出来るくらい、精進しなければ・・・(^^;;
655不定形ウィンドウ:2001/05/29(火) 18:00
はじめてMFCアプリつくってるのですが、
ダイアログベースで作成したアプリそのものを、
SetWindowRgnをつかって不定形ウィンドウにしたいのですが
どのように適用すればよいでしょうか?
教えてください
656momo:2001/05/29(火) 18:09
質問の仕方がわからず、同じことを単独スレで建ててしまいました(汗)
重複してしまうのですがこちらでも質問させて頂きます。
プログラム中からアクセス権を変更するにはどうしたらよいのでしょうか?

2ch初心者でして、もしご質問手順に間違いがありましたら、合わせてお教え願います。

宜しくお願いします。
657デフォルトの名無しさん:2001/05/29(火) 18:20
>>656
まず2ちゃんガイドをよ〜〜〜〜〜〜〜っく読んで、初心者板で1ヶ月修行してこい。
658デフォルトの名無しさん:2001/05/29(火) 21:09
>>657
なんで?
質問スレで質問して何が悪いの?
659無責任な名無しさん:2001/05/29(火) 22:07
VCってMACのソフトウェア開発できるんですか?ヘッダファイル中の
#if !defined(_WIN32) && !defined(_MAC)
なんていうのを見かけるたび気になるのですが…
660デフォルトの名無しさん:2001/05/30(水) 22:59
現在VC++5.0LearningEditionでSTLを使って組んでいまして
VC付属のやSGI、STLportなどいろいろなSTLを試してみたんですが
どれも理不尽に近い不具合があって、うまくいきません。
中には、VC++5.0SP3を組み込めば直るというものもあるんですがLEなんで
それも無理だし・・
VC++5.0LEで問題なく使えるSTLって何かないでしょうか?
あったら教えて欲しいです。
それともVC++5.0LEには見切りをつけて、VC++6.0に買い換えた方がいいでしょうか?
661デフォルトの名無しさん:2001/05/30(水) 23:07
>>660
VC6(pro以降)を買うのが良いかと。
でも初心者が学習用に使うにはお金がもったいないから、
とりあえずgccとかBCCとかタダで手に入るの使えば?
身を持って感じてると思うけど、
個人で製品買っちゃうとVerUpの度に付き合うのは苦痛だよ。
(VC6は結構寿命長かったけどね)
662デフォルトの名無しさん:2001/05/30(水) 23:29
>>659
MAC用のOfficeとかIEとか作るときにでもMSが
内部で使ったのかと。
ここでふと思ったんだが、ということはMACにも
WIN32 APIが移植(?)されてる、ってことなのかな?
663RIP_MAPIRO:2001/05/30(水) 23:30
>>660
もしかして、fiend operatorうんぬん のことかな。

VC6 pro sp5 を仕事で使ってる。
664デフォルトの名無しさん:2001/05/30(水) 23:43
いつのまにやらsp5ですか。
665660:2001/05/31(木) 00:04
>>661
プ、プロ版っすか!?スタンダートじゃよろしくないですかね?
8万はキツイっす・・。
BCCはDirectXと相性が気になって今まで避けてたんですが
手元にあるので使ってみようと思います。
ありがとうございました。

>>663
それかどうかはわからないんですが、
VC版は、コンテナに積むオブジェクトは、<二項演算子などが使えなきゃ駄目、
SGI版は、イテレーターのoperator->()が使用できない、
STLport版は、リバースイテレーターのoperator->()定義でerror C2102
になるなどです。
666にお:2001/05/31(木) 00:15
今、以下のようなHDDへのアクセスの速度を測定するプログラムを仕事で作っています。
環境はWin98,VisualStudio6sp2E(Enterprise Edition)です。

測定の方法が少々特殊なのですが、
1. 10MBのデータを書き込む
2. 1分待つ
3. 1で書き込んだでーたを読み込む
4. 1分待つ
5. 以上を480回(ほぼ8時間)繰り返して時間を測定する

このような動きをするプログラムを作って、
うちの会社で販売しているソフトがインストールされている場合と
されていない場合の速度差を比較したいのです。

で、一応プログラムは出来たのですが、
書き込み時はいいのですが、読み込み時はディスクキャッシュを読んでしまい、
HDDへアクセスしてくれません。
ディスクキャッシュを使わないで、
HDDから読み込んでくれるようにする簡単な方法はないでしょうか?

ちなみに、Windowsのスワップファイルのサイズをほぼ0にしたところ、
Windows自体がすごく遅くなってしまい、論外でした。
667デフォルトの名無しさん:2001/05/31(木) 00:19
複数のファイル使えば>666
668RIP_MAPIRO:2001/05/31(木) 00:28
>>666
当てずっぽな回答かもしれないけど
適当なメモリを確保して解放する処理をかませてやれば
ディスクキャッシュを事実上無効にできそうな気がするが。
例:
int* lpInt = new int[HeavyNumber];
for(int i=0;i<HeavyNumbe;i++) lpInt[i] = i;
delete []lpInt;
669にお:2001/05/31(木) 00:41
ご回答ありがとうございます。
ちなみに、スワップファイルのサイズ -> でぃすくきゃっしゅのサイズ
の誤りでした。仮想メモリを小さくしてどうするねん。
>>667
240回読み込みテストを行うので、240個もファイルを作らないといけません。
しかも、どの読み込みテスト時にもキャッシュが使われないという
保証がいまいち得られないのが、ちょっと...
>>668
なるほど。でも、確保したメモリがスワップされてしまうのでは...
670RIP_MAPIRO:2001/05/31(木) 00:57
>>669
>確保したメモリがスワップされてしまうのでは
それが目的だと思うが。

GlobalMemoryStatusでHeavyNumberの値を調節して1分待つ間に
ディスクキャッシュを事実上無効にする処理を終了すれば良いのでは。
671デフォルトの名無しさん:2001/05/31(木) 01:02
しかし、作ってるソフトってHDDのアクセス高速化ソフトなんだよね。
Windowsのキャッシュを使ってると恩恵受けられないようなソフトに何の意味が。
それに、そんな特殊環境で得られたデータを使って宣伝されるのかと思うと恐ろしい。

で、なんて会社のなんてソフト?
672デフォルトの名無しさん:2001/05/31(木) 01:09
おもいっきし捏造ですよね。(w
673デフォルトの名無しさん:2001/05/31(木) 11:13
HDDへの高速化ってどうやるんですか?
674デフォルトの名無しさん:2001/05/31(木) 11:16
VCの_Tと_TEXTと同じように使っていいのでしょうか
_Tは対応しているときはwchar_tで_TEXTはunicodeにおきかえられる
とMSDNに書いてあったんですが、実質的にはwchar_t == unicodeと
考えていいのでしょうか?
_Tと_TEXTを混同して使ったときに問題が起こるケースがあるとしたら
どんなときでしょうか。
よろしかったら教えてください。
675デフォルトの名無しさん:2001/05/31(木) 13:44
VC++では、wchar_t に入るのは UTF-16の文字。_Tは_TEXTの省略形。
それ以前に、将来UNICODEアプリを作るために・・・・みたいなアホな動機の
ためにいちいち_Tつけるのか?
_T"text"とかじゃなくて、ふつーに "text"ってやれば。
676デフォルトの名無しさん:2001/05/31(木) 16:09
>>675
NT系でもcharで問題ないのでしょうか?
そこらへんがよくわからないのでとにかく_Tをつけたり、
TCHARを使っているんですが
677デフォルトの名無しさん:2001/05/31(木) 16:51
>>676
NTでもXxxA系のAPI実装されてるから動くが、
ネイティブじゃないので微妙に遅いらしい。
678デフォルトの名無しさん:2001/05/31(木) 18:47
>>677
返答ありがとうございます
NT系では_Tとしといたほうが無難ということでしょうか
679デフォルトの名無しさん:2001/06/01(金) 01:06
CListBoxを作成(Create)する時
ダイアログに貼り付けたいときは
OnInitDialog()
に記述するのは分かったけど、
ActiveXコントロールに貼り付けたい場合ってどうするんですか?
OnCreateしか思い浮かばない。。。
680デフォルトの名無しさん:2001/06/01(金) 01:08
貼り付けたいって、貼り付ければそれで終わりジャン
681680:2001/06/01(金) 01:15
>>679
ごめん
>>ActiveXコントロールに貼り付けたい
これはちょっとわかんないや
682デフォルトの名無しさん:2001/06/01(金) 01:26
OnCreate で良いと思うけど。
683デフォルトの名無しさん:2001/06/01(金) 01:32
structとtypedefってどう違うのだろう?
同じように思えるんだけど・・・。
684デフォルトの名無しさん:2001/06/01(金) 01:38
>>683
どの辺が???
ぜんぜん違うけど・・・・・
685デフォルトの名無しさん:2001/06/01(金) 01:40
683はコピペ
686デフォルトの名無しさん:2001/06/01(金) 19:33
>>678
NT用と9X用の2種類の実行ファイルを別々にリリースすんのか?
687デフォルトの名無しさん:2001/06/01(金) 21:46
HDへのアクセスを早くするプログラミングってどんなんですか
688にお:2001/06/01(金) 22:03
>>671 など
HDDのアクセスを速くするソフトを作っているのではありません。

データのアクセスにからむ常駐ソフトを作っているのです。

>>672
別に捏造はしませんよ。実験内容は、そのままユーザに伝えます。


ちなみに、ディスクキャッシュを使わずに、HDDへアクセスする方法はわかりました。
CreateFileの関数で、FILE_FLAG_NO_BUFFERINGフラグを指定すればOKでした。
ちょっとした、条件が絡むので少々面倒でしたが。

それでは、ご回答していただいた方ありがとうございました!
689デフォルトの名無しさん:2001/06/01(金) 22:30
>>688
キャッシュ使わずにアクセスするのにかかる時間を
使うこと自体捏造ではないのですか
690デフォルトの名無しさん:2001/06/01(金) 22:33
なんに使うソフトかは知らないけど、
ほぼ滅多に存在しない条件でのデータに
なんの価値があるのでしょうか

>クライアントを納得させる資料
そうか
691689:2001/06/01(金) 22:41
>>690
なーる
一般向けアプリにしてはお粗末過ぎるもんね
692デフォルトの名無しさん:2001/06/01(金) 22:45
ここって半分くらいはシロートなの?
学生みたいな雰囲気のレスがあるな
693デフォルトの名無しさん:2001/06/01(金) 23:40
クラスの中のクラスからそのコンテナクラスを参照するには
どうすればいいんですか?
694デフォルトの名無しさん:2001/06/02(土) 00:09
>>693
そのクラスにコンテナクラスインスタンスの参照渡しとけばいいじゃん。
695デフォルトの名無しさん:2001/06/02(土) 00:13
>>692
シロートや学生ってそんなに悪いことなのかねぇ…。
あんただって知らない分野逝ったらシロートでしょ?

つーか、そんな事言うのは年寄りの証拠だね。

あ、俺は学生じゃないよ。下っ端だけど(藁
696デフォルトの名無しさん:2001/06/02(土) 00:23
「カントン」ってなんですか?
697デフォルトの名無しさん:2001/06/02(土) 00:32
VCを使ったデータベースプログラムなるものを勉強したいのですが
参考になる書籍が見つかりません。
どなたか道を示してもらえませんか。
お願いします
698デフォルトの名無しさん:2001/06/02(土) 03:22
>>695
別に言わんでも下っ端だって分か
699デフォルトの名無しさん:2001/06/02(土) 04:49
例えば"ABC"という文字列を、何らかのエフェクトを
かけて(たとえばだんだん明るく)表示したいと思ってます。

GDIでできるのか、あるいはDirectXやOpenGLを使った方が
いいか迷っています。

ゲームではないです。どれを使ったらいいでしょうか?
700デフォルトの名無しさん:2001/06/02(土) 04:52
きり番get!
701デフォルトの名無しさん:2001/06/02(土) 04:58
>>699
ゲームじゃないならGDIでいいんじゃない?
問題なく作れるよ。ただ、パレット使えない画面モード
(16bit以降)はグラデ書き換えだけでも遅くなるから、
あんまり大きい画像には向かないと思う。
(DirectXとかだと、その辺をビデオカード側のハードウェア機能で
代替してくれる可能性があるかもね。)
702デフォルトの名無しさん:2001/06/02(土) 05:03
ひとつだけ言えるのはDirectXだろうがGDIだろうが
だんだん明るくしてーとかのフィルタは自分で書かなきゃいけないってこと。
3Dのライティングでどうこうすればできるのかもしれないけど、
それはきっとGDIでチマチマ書くよりずっとずっと大変。
703699:2001/06/02(土) 05:32
>>701,702
早速のレスありがとうございます。
GDIでやってみようと思います。
704この業界から逃出した男:2001/06/02(土) 20:26
>>699
{
static int i = 0 ;
HDC hDC = GetDC( hWnd );
SetBkMode( hDC , TRANSPARENT );
SetTextColor( hDC , RGB( i , i, i ) );
TextOut( hDC , 0 , 0 , "宇津だ死のう" );
ReleaseDC( hWnd , hDC );
i++;
if( i >= 255 ) i = 255;
}

これをタイマー呼出しとかする毎呼出してごらん。
とか言ってみるテスト。
705699:2001/06/03(日) 07:00
>>704
そうです。やりたかたったのは、こんな感じのやつです。
どーもありがとうございます。
706デフォルトの名無しさん:2001/06/03(日) 11:14
>>704
やっぱりそうするよね

>問題なく作れるよ。ただ、パレット使えない画面モード
>(16bit以降)はグラデ書き換えだけでも遅くなるから、
とか
>だんだん明るくしてーとかのフィルタは自分で書かなきゃいけないってこと。
たかが文字の色を変えるだけで、なんでそんな回りくどいことをするんだ
発想硬すぎ
707この業界から逃出した男:2001/06/03(日) 11:43
これだからオールドタイプは。(藁
まあ、確かに昔は16bitカラーでの処理とか重かったですけどね。
ゲームではない、つまり60fps出なくて良いからもっと楽々出来るし。
708デフォルトの名無しさん:2001/06/03(日) 11:43
>>706
なんでそうなる? 701が言ってるのって、GDIなら>>704みたいのを
自分で書く必要があるぞって言うまさにそのことじゃないのか?
709この業界から逃出した男 :2001/06/03(日) 11:49
>>708
だから、GDIに画面モード、画面の色数は関係ないと言う事。
「ただ〜」から始まる言葉が全然見当違いな事を逝っているって事でしょ?

いや、違うか、GDIで画面モードが関係すると言えば…
GetPixel とか使えって言ってるのか!?
710デフォルトの名無しさん:2001/06/03(日) 14:41
GDIでパレットを使っても、結局近似色で塗られるだけ。
だから速度にパレット云々は関係ない。
DirectDrawでやるならパレットの意味もあるが。
どちらにしてもテキストの色を変えるだけなら、根本的に的外れな話だ。
711この業界から逃出した男 :2001/06/03(日) 21:10
GDIでも、ディスプレーモードを変えてシステムパレットを弄る事は出来るけどね。
712デフォルトの名無しさん:2001/06/03(日) 23:57
よく、ウインドウのメニューでヘルプだけ右によってるのがあるんですが、
あれってどうやってるんですか?
713デフォルトの名無しさん:2001/06/04(月) 00:39
MFT_・・・
714デフォルトの名無しさん:2001/06/04(月) 01:41
COMポートが存在するかどうか調べるにはどうしたらいいでしょう?
全部開いて、開けたのが存在するデバイス?
715デフォルトの名無しさん:2001/06/04(月) 01:57
>>714
レジストリを当たれ。
HKEY_LOCALMACHINEの下のどっか。
716デフォルトの名無しさん:2001/06/04(月) 10:47
>>715
レジストリを見てみたんだけど、実際に今あるかどうかの
判断が分からなかったので、開けるかどうかで試してみました。

ところが、CreateFileで開いたのですが、COM10以降が開けないみたいです。
これって、どうしたら良いんでしょう?
カードH"は間違いなくCOM13で動いているのですが・・・
717デフォルトの名無しさん:2001/06/04(月) 12:54
\\.\COM10 とかそんな風に開け>>716
718714=716:2001/06/04(月) 15:20
>>717
できました!さんきゅ〜です。
719デフォルトの名無しさん :2001/06/04(月) 15:40
CMapStringToObのオブジェクトサイズを知るにはどうしたらよいのでしょうか?
sizeofで得られるサイズは管理領域ですか?
720デフォルトの名無しさん:2001/06/04(月) 18:01
CAsyncSocket または CSocket をメインのダイアログとは違うスレッドで作成しようとすると。
Createで死んじゃいます。

詳しく書くと、メインのダイアログからCWinThreadから派生させたクラスを作り、
CreateThreadまたはAfxBeginThreadでメインとは違うスレッドを作成します。
そのスレッドからCSocketの親になるウインドウを作成します。
で、そのウインドウから CSocketを作成しcreateを実行すると死にます。
スレッドを実行させないと問題なく動作するのですが・・・・。

CAsyncSocket または CSocket が メインとは別スレッド上では動作しないなんて話はないと思うのですが・・・・

同様なことで詰まった方や、何かご存じの方がいらっしゃいましたらレスよろしくお願いします。
721デフォルトの名無しさん:2001/06/05(火) 01:08
わーいバグみっけヽ(´ー`)ノ
#include<vector>
#include<algorithm>
#include<string>
int main(){
std::vector<std::string> v;
std::find(v.begin(), v.end(), "");
return 0;
}

cl -GX -Ox -Ob2 bug.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

bug.cpp
bug.cpp(8) : fatal error C1001: 内部コンパイラ エラー
(;´Д`)
722720:2001/06/05(火) 17:43
解決しました。ナレッジベースに載ってたし。
鬱だ。
723デフォルトの名無しさん:2001/06/07(木) 02:09
クリップボードが変更された時に反応させるにはどうしたらよいのでしょう?
幾つかページを見て試したけど意味不明で、できたソフトも死にまくり…
724デフォルトの名無しさん:2001/06/07(木) 02:58
>>721
cl.exe 13.00.9030(VC7 in .NETβ1) ならコンパイルできた。
まぁ、バグですな。
725デフォルトの名無しさん:2001/06/07(木) 10:01
がいしゅつかなぁ・・・・

ダイアログベースのアプリでどこにもフォーカスを当ててない状況で
リターンキーを押すとアプリが終了してしまいます。
これはなぜ?
726SAGE:2001/06/07(木) 10:15
>>723
SetClipboardViewer でウインドウを登録したら、
変更のたびに WM_DRAWCLIPBOARD が送られる。

>>725
コレかな?
http://piza.2ch.net/test/read.cgi?bbs=tech&key=989902845&st=85&to=89&nofirst=true
727725:2001/06/07(木) 12:05
>>726
それだ、さんきゅ〜
728デフォルトの名無しさん:2001/06/08(金) 09:52
VC6.0のassertマクロですが
#define assert(exp) (void)( (exp) || (_assert(#exp, __FILE__, __LINE__), 0) )
これって思いっきりバグじゃないですか?
(exp) && (assert ...
こうならないといけないと思うのですが。
どっちにしろ、式が0でもassertしちゃうじゃないっすか、これだと
729デフォルトの名無しさん:2001/06/08(金) 10:10
#define assert(exp) ((exp)? (void)0 : _assert(#exp, __FILE__, __LINE__))
730728:2001/06/08(金) 11:40
>>729
いや、それはわかりますが、
あえて論理演算でやろうとすると・・・ってことで。
あと、_assertと(void)0は逆ですよね
731デフォルトの名無しさん:2001/06/08(金) 12:16
>>728
「バグじゃないですか?」とか言う前に、自分で何を確かめたのか言ってみれ。
確かめてないでしょ
732728:2001/06/08(金) 12:20
>>731
たしかめたよー
おめーこそちゃんとたしかめろよー
733デフォルトの名無しさん:2001/06/08(金) 12:22
>>731
ふむ。では、「なにを」「どうやって」たしかめて、728の結論(=assertマクロが
仕様を満たしていない)に達したのかプレゼンしておくれ。
10行くらいのテストプログラムを書いてくれればいいんじゃないかな。
734デフォルトの名無しさん:2001/06/08(金) 12:47
>>733
教えて君発見!!
735デフォルトの名無しさん:2001/06/08(金) 13:12
>>728
ぜんぜんバグって無いよ。
assert()の仕様と式の評価規則をよく考えてごらん。
736728:2001/06/08(金) 14:04
>>735
バグってるよー
たしかめてみそ
737デフォルトの名無しさん:2001/06/08(金) 14:44
>>376
---コード1---
#include "assert.h"
int main(int argc, char* argv[])
{
    assert(!0);
    return 0;
}
---コード2---
#include "assert.h"
int main(int argc, char* argv[])
{
    assert(0);
    return 0;
}

---結果---
1:何も表示されない
2:アサート発生
738737:2001/06/08(金) 14:46
×376
○736
誤爆失礼。

>>736
確かめてみたけどバグってないよ。
739デフォルトの名無しさん:2001/06/08(金) 15:40
普通は「バグってるぞー」と言うやつが
コードを示すんだけどな。
バグって無いことを証明することは不可能なんだから。
7407誌のプログラマー:2001/06/08(金) 15:47
VisualC++6.0でインターネット上からのデータを取得するにはどうすればよいのでしょうか?
HTMLファイルなど・・・。
741デフォルトの名無しさん:2001/06/08(金) 15:50
728は氏んだか?
恥かいたからって小学校に乱入すんなよ。
742デフォルトの名無しさん:2001/06/08(金) 16:05
>>740
ソケット使えば?
743デフォルトの名無しさん:2001/06/08(金) 16:10
質問です。
クラスのメソッドとして用意したウィンドウプロシージャを
lpfnWndProcに設定する際のコードは
どのように書けばいいのでしょうか?

このメソッドを、
LRESULT CALLBACK Foo::WinProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

Fooコンストラクタの中で、
こう設定するとき、なぜか型が合わなくてエラーになってしまう
WNDCLASSEX klass;
klass.lpfnWndProc = (WNDPROC)WinProc;
744デフォルトの名無しさん:2001/06/08(金) 16:10
>>728
いいことを教えてやろう。
次のコードで、foo()の戻り値が0以外だと、bar()は呼ばれないのだ。

int main()
{
    foo() || bar();
    return 0;
}
745デフォルトの名無しさん:2001/06/08(金) 16:15
>>743
どうしてもクラスのメソッドにしたかったら、staticメンバにしろ。
class Foo{
public:
    static LRESULT CALLBACK WinProc(...
};
746743:2001/06/08(金) 16:35
>>745
ありがとう。staticにしてみたらエラーが出なくなりました。

が、
'Foo::m_bar': スタティックメンバ関数内の不正なデータメンバへの参照です
というエラーが沢山出てきて鬱だ。

普通、ウィンドウプロシージャはクラスの
メソッドにしないほうがいいのでしょうか?
747デフォルトの名無しさん:2001/06/08(金) 16:40
>>746
もちろんstaticメンバからのメンバ参照はできないので、この場合だと
コンストラクタでウィンドウプロシージャを設定する際に何らかの方法でthis
ポインタを渡す必要がある。
クラスメンバにするかどうかは個人的にはどうでもいいと思うけど、
ウィンドウプロシージャからメンバをアクセスするならやっぱりthisポインタ
は渡さなきゃいけないんで、手間は同じだと思うよ。
748デフォルトの名無しさん:2001/06/08(金) 16:49
>>728
18分後のレスの時点で気付いていれば・・・
今ごろ全assertの評価式を置換中か(w

>>744
>次のコードで、foo()の戻り値が0以外だと、bar()は呼ばれないのだ。

× 0以外
○ 0でなければ(非0であれば)

細かい事だが
749740:2001/06/08(金) 16:50
>>742
使い方を教えてください
750728 != (732 == 736):2001/06/08(金) 16:56
激しく勘違いしてました。
assertする条件逆でした。

みなさん、親切にどうもでした。
751728 != (732 == 736):2001/06/08(金) 16:57
>>748
まったくお恥ずかしい。
オオボケかましました。

お騒がせして申し訳ない(^^;
752デフォルトの名無しさん:2001/06/08(金) 16:58
>>728
おまえ偽者だろ
753この業界から逃出した男:2001/06/08(金) 17:13
>>743
http://www.nt.sakura.ne.jp/~miwaki/progtips/window/wndbase.shtml
ここのページ見てごらん。
やり方が書いてある。
754      :2001/06/08(金) 18:26
すいません、
プロパティーシートに置いたラジオボタンの位置の値を
コントロールからの値で初期化し、ラジオボタンが変化したら
そのインデックスをまたコントロールに戻したいのですが、
どうすればいいのでしょう?
755743:2001/06/08(金) 18:27
>>747
メソッドではないプロシージャ関数を予め Foo のコンストラクタに渡して
得られたインスタンスを、そのプロシージャ関数の中で使って、
Fooのメソッドのプロシージャ相当を呼び出す。
というややこしいスパゲッティな方法を思いついてとりあえずうまくいきました。

>>753
ありがとうございます。
まさに知りたかったエレガントなやり方が載ってるのでそっちを参考にしてみます。
756デフォルトの名無しさん:2001/06/08(金) 22:51
タスクバー内のボタンにそのプログラムのアイコンを表示したい場合ってどうすればいいのでしょうか?
WS_SYSMENU フラグを追加すれば、WNDCLASSに指定したアイコンがタスクバーに書かれることは解ったんですが、
これを設定してしまうと他の部分で不具合が出てしまいました。
なるべく、これを利用しない方法があるといいんですが。

※WS_SYSMENU を設定しなくてもAlt+Tabメニューでは指定したアイコンが表示されますが、
下のタスクバーでは表示されてくれません。
757デフォルトの名無しさん:2001/06/08(金) 23:22
BITMAPINFOHEADER構造体の中のターゲットデバイスのプレーン数って
何なんですか?
758デフォルトの名無しさん:2001/06/09(土) 00:24
>756
左上のアイコンはコントロールボックス(システムメニュー)という。
これを付けるか付けないかがWS_SYSMENU
オーバーラップウィンドウ等はこれが必ず含まれる。
ここにアプリケーションアイコンが使われているだけで、特別にアイコンを出しているわけではありません。
つまり WS_SYSMENU を使わずアイコンを出している状態というのは通常あり得ません。
下のタスクバー?
・Windowsのタスクメニューバー
・ステータスバー
意味がよくわかりませんが指定のアプリケーションアイコンが出されているだけだと思われます。
というか、この質問だとたぶんみんなに怒られます。
759デフォルトの名無しさん:2001/06/09(土) 00:35
>757
biPlanes =1以外使ったこと無し。
biBitCount が1プレーンあたりのビットカウントとなっているので
カラービット数=biBitCount/biPlanes
ということで、2ドットずつカラー指定するデバイスとかが奇跡的に存在したら使用するんとちゃいますか。
超大昔のパソコンにそんなのもあったような気が。
760デフォルトの名無しさん:2001/06/09(土) 00:43
ちと>>743>>753とも絡むのですが、リソースを参照し、ダイアログ上の
全てのコントロールも含めた形で、ダイアログボックスをCreateWindowEXで
作成する方法ってあるのでしょうか?

FindResourceやらLoadResourceやら使って、ダイアログリソース情報を
取り出すまでは出来たのですが、そのダイアログ上にある他の
リソースの取得方法が分からないのです。

要するにダイアログで>>753をやりたいのですが…
761デフォルトの名無しさん:2001/06/09(土) 00:55
たまに耳にするんですがVCLってなんですか?
762デフォルトの名無しさん:2001/06/09(土) 00:57
>>759
ハード的にR,G,Bのそれぞれのメモリが独立してる場合に使うもんだと思うぞ。
9801のGDCとかEGCみたいな。AGDCなんてのもあったか。

>2ドットずつカラー指定

これは普通に存在するだろ。YCbCrをネイティブで実装してたり。
普通は輝度:色差X:色差Yは4:2:2だから32bitをY:16bit/Cb:8bit/Cr:8bitで
分けてたりとか。
MSX2+の自然画モードなんかは4:1:1だったから、カラー指定は実質4ドット
ずつだった。
763デフォルトの名無しさん:2001/06/09(土) 00:59
>>761
どこで耳にしたんですか?
764デフォルトの名無しさん:2001/06/09(土) 01:16
>>760
つまりこんなのを読み込んで直接作るってことっすか?
gDir.rc---------------------------------------------

IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 55
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "バージョン情報 gDir"
FONT 9, "MS Pゴシック"
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20
LTEXT "gDir Version 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX
LTEXT "Copyright (C) 1900",IDC_STATIC,40,25,119,8
DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP
END

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

切れるちゃうから次へ
765764つづき:2001/06/09(土) 01:17
>>760
ダイアログの場合は CreateDialogIndirect() というのを使って
DLGTEMPLATE というムチャクチャな構造体をちまちま使ってつくるようになってます。
ウィンドウプロシージャの指定だけなら753と同様の方法でよいと思われますが。
CDialog は CWnd の派生クラスなので。
ちょっとやりたいことが不明。
766760:2001/06/09(土) 01:27
>>765
レスどうもです。MFCを使わずに、が前提でして…言い忘れててすいません。
DLGTEMPLATEの情報までは取得できるのですが、そこから先、cdit数分の
ダイアログボックス上アイテムを取得する方法が分からず困ってます。

ヘッダ読むと_DialogSplitHelperとかいう、APIには無い裏技みたいなの
使ってるんですよね。ここで詰まってます。どうしたものやら…。
767デフォルトの名無しさん:2001/06/09(土) 01:29
sageてしまった
768デフォルトの名無しさん:2001/06/09(土) 01:57
>>766
もしかするとATLがらみっすか?それだと辛い。
ま、いーとしてこんなのが出てきました。
やったこと無いんでどーだかわかりませんが
(hDialogTemplate は LoadResource()から取得)
LPCDLGTEMPLATE lpDialogTemplate = (LPCDLGTEMPLATE)LockResource(hDialogTemplate);
BOOL bResult = CreateIndirect(lpDialogTemplate, pParentWnd, NULL, hInst);
UnlockResource(hDialogTemplate);
769756:2001/06/09(土) 03:07
WNDCLASS は WS_POPUP のみ指定してあります。
この場合だと、タスクバーには
[ApplicationTitle]
とアイコンが無い形で表示されますが、これを
[■ApplicationTitle]
のように表示したいのです。(アプリのキャプションがApplicationTitle、■はアイコンです。)

フルスクリーンのアプリで、WS_SYSMENUを付加してしまうと、
フルスクリーンに切り替わった瞬間に見苦しいウィンドウの枠が表示されたり、
(条件は良く解らないのですが、フルスクリーンなのに)枠をドラッグできたりしてしまいます。

>>758
結論としてはWS_SYSMENUが無い場合、タスクバーの表示を
[■ApplicationTitle]
のようにすることは出来ないということでしょうか?

ちなみにタスクバーとは
・Windowsのタスクメニューバー
として書かせていただきました。
770デフォルトの名無しさん:2001/06/09(土) 03:31
>>769
そうゆうことだと思っといて下さい。
ウィンドウ枠の不穏な動きは多分 WS_CAPTION を指定していないからだと思います。
WS_BORDER も指定されていないとのっぺらぼーなウィンドウができますが、WM_NCPAINT がコーディングされていないと、気分でキャプションが出たり消えたりします。
標準的には WS_OVERLAPPED か WS_POPUPWINDOW(前述のWS_S〜とWS_B〜とWS_C〜の複合版)あたりがいいと思います。
あとは思考錯誤。
771訂正:2001/06/09(土) 03:34
×WS_POPUPWINDOW(前述のWS_S〜とWS_B〜とWS_C〜の複合版)
○WS_POPUPWINDOW(前述のWS_S〜とWS_B〜とWS_P〜の複合版)
772769:2001/06/09(土) 03:59
>>770
ありがとうございます。
実験してみます。
773デフォルトの名無しさん:2001/06/09(土) 05:33
VC6でビルドした実行ファイルをエディタで開いてみたら、
なぜか以前見たウェブのHTMLファイルの一部が紛れ込んでいた。
何度リビルドしても必ず削除したHTMLファイルの一部が紛れ込んでしまう。
VC6ってビルドするときにわざわざFATを無視したディスクの内容を連結す
る機能でもあるの?
774名無しさん:2001/06/09(土) 06:43
>>773
あるんじゃないの?
1バイトでも一部だし。
775デフォルトの名無しさん:2001/06/09(土) 10:48
ATLを勉強したいのですが何かいい本、ホームページなどが
あったら教えてください。
776名無しさん:2001/06/09(土) 17:15
>>773
俺もその症状あったよ。
自分で作ったexeファイルの中に2chのログのデータが入ってたのは笑った。
777RIP_MAPIRO:2001/06/09(土) 17:38
>>775
ATL COM プログラミング SE

他にもATL&COMを冠した本があるからチェックしてもよいかも。
そつなく広範囲を網羅しているみたいだからこれを選択した。VC++
でのプロジェクトの作り方&解説が親切で気に入っている。
 あとは、SDKのSamplesは結構勉強になる。
778775:2001/06/09(土) 18:04
>>777
ありがとうございます
早速購入してみます
779デフォルトの名無しさん:2001/06/09(土) 20:55
SendMessageを使ったときに送ったメッセージが現在の処理よりも
優先されると考えていいのでしょうか、だめなのでしょうか?
例外はあるのでしょうか?
780デフォルトの名無しさん:2001/06/09(土) 22:23
>>779
「優先される」という言葉が意味不明気味だけど、同じスレッドなら、
WindowProc への関数コールみたいに処理される。別スレッド(プロセス)
だと先方のメッセージキューに積まれて、処理されるまで呼び出し側には
帰ってこない。
781779:2001/06/09(土) 22:54
>>780
返答アリガトウございます。どこかの掲示板で、中にはSendMessage
で送られたメッセージが現在の処理よりも先に処理されないものが
あると書いてあったような気がしたので聞いてみました。
782デフォルトの名無しさん:2001/06/11(月) 04:17
VisualC++6のgetchって、日本語入力対応してないみたいなんですけど、
入力させる方法ってありますか?
コンソールから"あ"を入力させようとすると、
"@a"になってしまいます。
@はALT+漢字
aはあと入力した時。
(打鍵したキーの文字がそのまま入る)
783デフォルトの名無しさん:2001/06/11(月) 04:26
とりあえず何を言っているのかよくわからない。
getchって元々日本語云々で使用する関数では無いぞ
784783:2001/06/11(月) 04:32
>>784
要はコンソールからバッファリングをせずに入力させたいんです。
例えば、getc使うと行単位になってしまうでしょ?
(tab打鍵で入力文字補完とかさせたいんで。)
785783:2001/06/11(月) 04:43
ちなみにDOSコンパイラでやるとなんの問題もありません。
786783:2001/06/11(月) 04:51
テスト用のソース載せます。
#include <stdio.h>
#include <conio.h>
int main() {
  int c;
  while ((c = getch()) != 0x1b) {
    printf("%x", c);
    putch(c);
  }
  return 0;
}
787782:2001/06/11(月) 04:54
まちがえた・・。
わたしは783じゃなくて782です
788デフォルトの名無しさん:2001/06/11(月) 05:17
>>782
DOS と Windows の PC側からのFEPのとらえ方の差です。
789782:2001/06/11(月) 05:23
>>788
ですので、コンソールからバッファリングをせずに、
漢字入力させる方法がわかればいいんですが。
790デフォルトの名無しさん:2001/06/11(月) 06:03
getchって、キーが押されてないときは
「押されてない」って値ですぐに返って
きたんじゃなかったかな。
786のコードだと、そういういらない値まで…

というところから、788氏の言うことに続く。
791782:2001/06/11(月) 06:14
>>790
べつにgetchにこだわっているわけではありません。
同様の動作が行なえれば良いので。
(789は、その辺を含ませた発言だったのですが)
792デフォルトの名無しさん:2001/06/11(月) 06:38
786のコードはWin2000 + Atok14で、漢字入れてもきちんと動いたぞ。
VCじゃなくて、Win9Xが腐ってるんじゃねーのか?
793792:2001/06/11(月) 06:43
>>792
その様です。
どうすればいいんでしょう。

これも関係ありそうです。
http://www.microsoft.com/japan/support/kb/articles/J024/2/11.htm
(この説明、良く分からないんですが・・・。)
794デフォルトの名無しさん:2001/06/11(月) 07:57
>>793

#include <stdio.h>
#include <conio.h>

#define ismbblead(a) (0x81<=a&&a<= 0x9F)||(0xE0<=a&&a<=0xFC)

int main() {
char c[3];
c[3]='\0';
while ((c[0] = getch()) != 0x1b) {
if(!ismbblead(c[0])
{
printf("%x", c[0]);
putch(c[0]);
}
else
{
c[1] = getch();
printf("%x%x", c[0],c[1]);
puts(c);
}

return 0;
}

じゃあ、納得いかないってこと?
795デフォルトの名無しさん:2001/06/11(月) 09:03
>>793
日本語がおかしいと思ったときは、英語を確認しましょう。
http://support.microsoft.com/support/kb/articles/Q146/4/48.asp
>are unable to receive DBCS characters composed by IMEs.
>DBCS 文字を受け取ることができます。
おいおい‥‥どこのヴァカか訳しやがったんだ?
要するに、Win9Xでは仮名漢が16bitだからどうしょうもない、って事。
>This behavior is by design
で、それは仕様とか言い張るし。
796デフォルトの名無しさん:2001/06/11(月) 10:16
void MyView::OnPrepareDC(CDC *pDC, CPrintInfo *pInfo)
{
if(pInfo && pDC->IsPrinting()) {
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetViewportExt(pDC->GetDeviceCaps(LOGPIXELSX),
pDC->GetDeviceCaps(LOGPIXELSY));
pDC->OffsetWindowOrg(0, 0);
pDC->SetWindowExt(80, 80);

まぁ、こんな感じで処理を行っているんだけど、
プレビュー時は思った通りに拡大されるんだけど、印刷がなぜかできません。
上記のコードをコメントにすると出るんだけど・・・?
 どうすれば、拡大印刷ができるのでしょうか?
797デフォルトの名無しさん:2001/06/11(月) 10:16
void MyView::OnPrepareDC(CDC *pDC, CPrintInfo *pInfo)
{
if(pInfo && pDC->IsPrinting()) {
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetViewportExt(pDC->GetDeviceCaps(LOGPIXELSX),
pDC->GetDeviceCaps(LOGPIXELSY));
pDC->OffsetWindowOrg(0, 0);
pDC->SetWindowExt(80, 80);

まぁ、こんな感じで処理を行っているんだけど、
プレビュー時は思った通りに拡大されるんだけど、印刷がなぜかできません。
上記のコードをコメントにすると出るんだけど・・・?
 どうすれば、拡大印刷ができるのでしょうか?
798デフォルトの名無しさん:2001/06/11(月) 15:38
ツリービューでエクスプローラのようにファイルの階層を表示させたのですが、
ツリーを展開させると多少ちらつきがはいります。本物のエクスプローラでツリーを
展開させると、展開した部分より上は再描画していないようで、下の部分は
スクロールのときによく使われるScrollWindowで下にずらしたような感じに
思えました。CTreeViewクラスなどをつかって同じようなことはできるのでしょうか?
あるのでしたらヒントだけでもください。
またはSDKのように一からツリービューを使って、このような処理をできるのでしたら
教えてください。
799798:2001/06/11(月) 20:11
まじでだれか教えてください。
お願いします
800デフォルトの名無しさん:2001/06/11(月) 20:19
>>799
やるとすれば OwnerDraw じゃない?
普通に使っても、そんなにチラチラするとは思えないんだけど…
なにか余計な Redraw 掛かってない?
801792:2001/06/11(月) 20:47
>>794
おそらくそのコードがうまく働くのはNTか2000ですよね?
9xだとIMEの変換結果がgetchに渡ってこないので、
ismbbleadの漢字判定まで辿り着けないんです。

いろいろコンソール系のAPIを試した結果、
(最初に)SetConsoleMode(hstdin, ENABLE_PROCESSED_INPUT|ENABLE_MOUSE_INPUT);

ReadConsole(hstdin, ch, 1, &len, 0)
こういう風にReadConsoleを使うと漢字を取り出せる事までは
わかったんですが、そうするとこんどはカーソルキーや
HomeEndDelなどキーが無効になってしまいました。

訳が分かりません。泣きたくなってきました。
(なんでgetchごときにこんなに手間がかかるのでしょうか。)
802798:2001/06/11(月) 21:02
>>800
たいしてちらつきはないのですがエクスプローラーのまったく
ちらつかないのにすごいと思って聞いてみました。
803798:2001/06/11(月) 21:03
>>800
たいしてちらつきはないのですがエクスプローラーのまったく
ちらつかないのにすごいと思って聞いてみました。
804デフォルトの名無しさん :2001/06/11(月) 22:48
VisualC++6.0なんですが、
1)和が一定(ここでは4)となる自然数の列を全て列挙するプログラムを教え
てください。
2)再帰を用いたプログラムと、再帰を用いないプログラムの比較・検討を行っ
てください。
1番は
#include<stdio.h>

void abs_sum( int n, int w);
int main()
{
int w =2,n =3;
abs_sum( n, w);
return 0;
}
void abs_sum( int n, int w)
{
void in_abs_sum( int total_length, int n, int w);
in_abs_sum( n,0,w);
}
void in_abs_sum( int total_length, int pos, int w)
{
int i, j, called =0;
if ( pos >= total_length ){
putchar( '\n');
return;
}
for ( i =0;i <= w;++i){
if ( called++ ){
for ( j =0;j < pos;++j){
printf(" ");
}
}
printf("%2d",i);

in_abs_sum( total_length, pos +1,w-i);
}
}
これを参考にせよとのことなんですが。よくわかりません。
教えてください。
805デフォルトの名無しさん:2001/06/11(月) 23:13
>>803
う〜ん、変更かからないはずのリージョンを
有効化してやるとか?
でも、普通かかってそうだけど・・・
806デフォルトの名無しさん:2001/06/11(月) 23:15
>>804
タダでボクチンの課題を片付けてくれる人募集ですか。
いい根性だ。
807デフォルトの名無しさん:2001/06/11(月) 23:21
VisualC++って末尾再帰展開してくれんの?
808デフォルトの名無しさん:2001/06/11(月) 23:38
>>804
比較検討っていわれてもなー
しかもVC++ってゆうよりはただのCじゃん。
MFCとかもつかっていいの?
809デフォルトの名無しさん:2001/06/12(火) 00:15
>>803
エクスプローラのあれは...
810デフォルトの名無しさん:2001/06/12(火) 00:21
>>809
何?
811804:2001/06/12(火) 00:34
>>808
比較検討ってゆーのは別に気にしなくてもいいです。
MFCとかはあんま使わない方がいいと思います。
812デフォルトの名無しさん:2001/06/12(火) 00:36
>MFCとかはあんま使わない方がいいと思います。

何故このスレで?
813デフォルトの名無しさん:2001/06/12(火) 00:49
えっと、↓なんですが、
SendMessage(hEdit,EM_EXLIMITTEXT,0,10000000);
何故かうまく機能しません。

EM_EXLIMITTEXT訳わかりません。
容量の制限とっぱらいたいんですが・・・。
誰かわかる方がいらっしゃれば教えていただけませんでしょうか。
814デフォルトの名無しさん:2001/06/12(火) 04:09
通常WM_NOTIFYは親ウインドウに通知されますが、
これを自ウインドウで検知する方法はありますか?

それもフックやサブクラス化「以外」の方法でお願いします
815デフォルトの名無しさん:2001/06/12(火) 05:51
親のプロシージャで自ウインドウにSendMessageすればいいだけじゃないのか?
(なんでサブクラスを避けるのかは謎だが)
816デフォルトの名無しさん:2001/06/12(火) 06:54
>>813
NT以外だと制限はなくならないんじゃなかった?
817デフォルトの名無しさん:2001/06/12(火) 09:57
>>813
EDITコントロールの仕様。
NT/2000以外では64kbまでしか扱えない。
818デフォルトの名無しさん:2001/06/12(火) 10:24
>>813
リッチエディットを使いましょう
819デフォルトの名無しさん:2001/06/12(火) 12:36
BOOL a = TRUE;

a = !a; // (a == FALSE)
a = !a; // (a == TRUE)

こういう使いかたしてもいいのでしょうか
820デフォルトの名無しさん:2001/06/12(火) 13:58
>>819
そういう使いかたしてもいけない理由がありません。
821819:2001/06/12(火) 14:34
>>820
a = 0;
a = !a

で a == TRUE になる保証はあるのでしょうか?
822デフォルトの名無しさん:2001/06/12(火) 14:56
#define TRUE 0
ミタイナマヌケナヘッダダッタラドウスル?
823デフォルトの名無しさん:2001/06/12(火) 15:15
#define TRUE 0
#define FALSE 0

とか、

#define TRUE 1
#define FALSE 2

のような、キチガイじみたヘッダでなければ大丈夫。
それがたとえ、

#define TRUE 0
#define FALSE 1

であっても、>>819の使い方には問題ない。
824819:2001/06/12(火) 15:54
#define TRUE 1
#define FALSE 0
のときに
a = FALSE;
a = !a;
にすると a == 1 になっているのでしょうか?
825デフォルトの名無しさん:2001/06/12(火) 15:57
非ゼロじゃないの
826デフォルトの名無しさん:2001/06/12(火) 17:00
>>821
Boolean の値の比較はしない方がいい。
そのまま、もしくは論理否定の条件式だけ。
827デフォルトの名無しさん:2001/06/12(火) 17:12
>>819
厳密にtrueとfalseしかとらないbool型だとして、
>>824の等式を実行すると、1がbool型として計算され、
a==trueの評価がされて、結果として真が返ることになると思う。
この場合はa==1の式は真になるけどaが1かどうかはわかんないってことに。

ただVCのBOOL型ってどうも胡散臭いんで、どうなるんだろうね。
828デフォルトの名無しさん:2001/06/12(火) 17:38
>>827
デムパ君ですか?
>>824のは等式でなくて代入文に見えますが。
うさんくさいとか言う前にヘッダ見たら?
829デフォルトの名無しさん:2001/06/12(火) 19:05
>にすると a == 1 になっているのでしょうか?

>>824の聞きたいことはこれだろ?
俺には等式に見えるが。
830デフォルトの名無しさん:2001/06/12(火) 19:09
>>829
だからヘッダ見ろって。
831デフォルトの名無しさん:2001/06/12(火) 19:09
>>829
だからヘッダ見ろって。
832デフォルトの名無しさん:2001/06/12(火) 19:23
>>831
だからヘッダ見ろって。
833デフォルトの名無しさん:2001/06/12(火) 19:24
>>833
だからヘッダ見ろって。
834デフォルトの名無しさん:2001/06/12(火) 19:25
>>835
だからヘッダ見ろって。
835名無しさん:2001/06/12(火) 19:28
http://dasaji.postpetclub.nu/
に有るような、オリジナルフォントを作成したいのですが
VCでどのように作るのでしょうか?
836デフォルトの名無しさん:2001/06/12(火) 19:29
>>830
だからヘッダ見ろって。
837デフォルトの名無しさん:2001/06/12(火) 19:31
>>835
フォントエディタを書く
838名無しさん:2001/06/12(火) 19:37
スレッド個別にたてちゃうぞ!?
839デフォルトの名無しさん:2001/06/12(火) 20:19
Win2kマシンにVCをインストールしてて、Win9Xマシンでもデバッグしたいとき、
もう一個買ってインストールしなきゃ駄目ですか?

それともいちいちアンインストールしますか?
840デフォルトの名無しさん:2001/06/12(火) 20:23
>>839
同時に使うのはだめだそうです。
二つにインストールしたら片方を使うときは
片方を使ってはいけない
841デフォルトの名無しさん:2001/06/12(火) 20:24
>>839
同時に使うのはだめだそうです。
二つにインストールしたら片方を使うときは
片方を使ってはいけない
842デフォルトの名無しさん:2001/06/12(火) 20:24
>>839
同時に使うのはだめだそうです。
二つにインストールしたら片方を使うときは
片方を使ってはいけない
843デフォルトの名無しさん:2001/06/12(火) 20:24
>>839
同時に使うのはだめだそうです。
二つにインストールしたら片方を使うときは
片方を使ってはいけない
844デフォルトの名無しさん:2001/06/12(火) 21:14
>>843
ヘルプには一台に付き1セット購入が原則だって・・・・・

一台にOS二個いれろってことかぁ・・・
845782:2001/06/12(火) 21:49
>>801
の方法でカーソルキーとかも有効にする方法って、誰も知りませんか?
(>>801に至るまでの経緯 >>782-795)
846814:2001/06/12(火) 23:23
>>815
親側(というか親クラス)に「子ウインドウにNOTIFYしなければならない」
という縛りを付与したくないのです。一日調べてましたがやはり
無いみたいです。残念。

関係ないですけど、私は一台にWin2kとWin98を入れ、VC++6を
両方のOSにて、全く同じフォルダ(CommonFilesはさすがに別)に
インストールしてますが、今のところ(6ヶ月間)不具合は出てません。
容量節約になるしやってみてはいかがでしょ。
847デフォルトの名無しさん:2001/06/12(火) 23:31
>>839
リモートでデバッグしてみたら?
848813:2001/06/13(水) 07:10
みなさんありがとうございました。
849デフォルトの名無しさん:2001/06/13(水) 22:53
ag
850デフォルトの名無しさん:2001/06/14(木) 00:23
CToolBarを継承するにはどうすればいいのでしょうか?
クラスウィザードは使えないのでしょうか?
851デフォルトの名無しさん:2001/06/14(木) 01:24
    ┏━━━ / |━━━━━┓
    ┗┳┳━ |_| ━━━┳┳┛
      ┃┃ /  ヽ     ┃┃
    ┏┻┻ |======| ━━┻┻┓
    ┗┳┳ ヽ__ ¶_ ノ ━━┳┳┛
      ┃┃ (/)     ┃┃
      ┃┃ (/)     ┃┃
    凸┃┃ (/)     ┃┃凸
    Ш┃┃ (/)     ┃┃Ш
    .|| ┃┃ (/)     ┃┃.||
  ∧_∧   (/) ∧_∧  ∧ ∧
  ( ・∀・)  (/)(´∀` )  (゚Д゚ )  MFC 氏にますように
  (つ  つミ (/)(⊃⊂ ) ⊂  ⊃
  |_|_|_I(/)_|_|_|__|  |
  /////ノ,,,,,,ヽ ////||  |〜
////////////  |∪∪
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
|        奉  納        |
852デフォルトの名無しさん:2001/06/14(木) 01:27
>>846
MFC 使ってるなら REFLECT で出来るけど。クラスウィザードで
頭に = 付で出てくるアレね。
853デフォルトの名無しさん:2001/06/14(木) 17:49
MFC超初心者です。
MFCのキー入力はわかるのですが、ウェイトの設定方法がよくわからないです。
どなたかスロットゲームのソースを頂けないでしょうか?
スロットゲームのソースを見れば本当によく理解でき、勉強できると思うんです。
本当にめんどくさいこと書いて恐縮なのですが、どうかよろしくお願いします。
854デフォルトの名無しさん:2001/06/14(木) 19:02
>>851
かわいそうにMFCが使えないんだね
あんに簡単なのに
855デフォルトの名無しさん:2001/06/14(木) 19:08
>>851
おいおい煽るなよ・・・どうせプログラマーなんて
10年後には必要なくなるのに・・・
856851じゃないけど:2001/06/14(木) 19:09
>>855
必要なくなるわけないだろ!
857デフォルトの名無しさん:2001/06/14(木) 19:10
858デフォルトの名無しさん:2001/06/14(木) 19:31
>>855
まったく無くなるとは思わないけど、確実に開発から
保守、メンテナンスへと仕事は移っていくと思う。
859デフォルトの名無しさん:2001/06/14(木) 19:58
  ∧ ∧ プーッ., ;:
 (,,゚ 3..゚)・:;∵。
 (つ目);:・ ;::;
860デフォルトの名無しさん:2001/06/15(金) 13:06
CSocket使おうと思って、ダイアログベースのアプリ作ってるけど、
OnInitDialogでCreateしてやってもエラーが起きます。

で、エラー内容確認しようと
if(m_Sock.Create(port)!=0)
{
 err=GetLastError();
}
としてもerrには0しか入りません。


なんででしょ?
861デフォルトの名無しさん:2001/06/15(金) 13:26
AfxSocketInitしてるかい?
862デフォルトの名無しさん:2001/06/15(金) 13:26
>>860
エラーが起きてないから。
863デフォルトの名無しさん:2001/06/15(金) 14:27
>>862
ごめん,そのとおりでした(^^;

で、続きとして、

データをRecieveするとき、準備すべきバッファのサイズって、
どうやったら分かりますか??
864デフォルトの名無しさん:2001/06/15(金) 17:04
Afxってどういう意味ですか?
865デフォルトの名無しさん:2001/06/15(金) 17:04
Afxってどういう意味ですか?
866デフォルトの名無しさん:2001/06/15(金) 18:07
>>863
DATAGRAM なら下位レイヤが何かにもよるけど、上位レイヤはわかって
るんだろうから、そのプロトコルで送られてくる最大サイズ。

STREAM なら、バッファ長は自分で決める。というか、この質問が出る
ってことは、ソケットライブラリの使い方に関する基本があやふやっぽい
ので、漏れが(質問に答えて)これ以上面倒なことになる前に winsock FAQ
とか全部読むと良いと思う。
867デフォルトの名無しさん:2001/06/15(金) 18:42
>>866
STREAMで使ってます。
確かに今日初めて使いましたが(^^;

とりあえず、今まで失敗してたのはプログラムミスだったので
解決しました。どもどもです。
868デフォルトの名無しさん:2001/06/15(金) 18:50
C言語はおぼえたのでVCをやりたいのですがまず何から始めればいいの
でしょうか?
869デフォルトの名無しさん:2001/06/15(金) 18:50
C言語はおぼえたのでVCをやりたいのですがまず何から始めればいいの
でしょうか?
870デフォルトの名無しさん:2001/06/15(金) 18:50
C言語はおぼえたのでVCをやりたいのですがまず何から始めればいいの
でしょうか?
871デフォルトの名無しさん:2001/06/15(金) 18:50
C言語はおぼえたのでVCをやりたいのですがまず何から始めればいいの
でしょうか?
872デフォルトの名無しさん:2001/06/15(金) 19:03
>>868-871
MessageBox("Hello. World.");
873デフォルトの名無しさん:2001/06/15(金) 19:05
その他の引数は自分で調べろな。
874デフォルトの名無しさん:2001/06/15(金) 19:19
HDDがクラッシュしてVC++6.0を、再インストールせねばならなくなってしまいました。
このとき、sp1も、一緒に逝ってしまわれました。
sp3なら素のVC++6.0に直接インストールできそうなんですが、これって問題ありませんか?
回線細いのでspのダウンロードはキツイです。
875デフォルトの名無しさん:2001/06/15(金) 20:24
>>874
雑誌についているサービスパックをインストールすべし。
サービスパック == バグ直し
だからできるだけ新しいのを入れたほうがよし。
876デフォルトの名無しさん:2001/06/15(金) 20:25
>>874
雑誌についているサービスパックをインストールすべし。
サービスパック == バグ直し
だからできるだけ新しいのを入れたほうがよし。
877875:2001/06/15(金) 20:49
sp3だけは手元にあるのですが、
sp1->sp2の時はたしかsp1がインストールされていないと、
sp2をインストールできなかったと記憶しています。

sp3を素の状態のVC++6.0に入れようとしても警告やエラーが
でなかったので、なんか気になってしまって。
クラッシュ直後でビビリ入ってます・・・
878デフォルトの名無しさん:2001/06/15(金) 20:57
sp4って無かったっけ?
879デフォルトの名無しさん:2001/06/15(金) 21:08
今はSP5だな。
880875:2001/06/16(土) 00:35
>>877
おまえ誰やねん?
sp3,sp4,sp5ならもんだいなかったぞよ
881デフォルトの名無しさん:2001/06/16(土) 12:10
SDIでDOC/VIEWで作ってます。
ファイルオープンダイアログがWin2000でも以前の形式のダイアログが
出るんですが、これをWin2000形式のダイアログにするにはどうしたら
イイんでしょうか?
882デフォルトの名無しさん:2001/06/16(土) 13:12
VC++でファイルを2つに分けてビルドしたいのですが
どうしたらよいのですか?
883デフォルトの名無しさん:2001/06/16(土) 13:40
>>882
dos上でという意味?
884デフォルトの名無しさん:2001/06/16(土) 13:40
>>882
dos上でという意味?
885デフォルトの名無しさん:2001/06/16(土) 13:45
>>882
cl /Feoutput.exe file1.c file2.c
886883,884:2001/06/17(日) 01:08
>>885
dos上でなのか?
887デフォルトの名無しさん:2001/06/17(日) 01:22
コンソール窓って言えや
888デフォルトの名無しさん:2001/06/17(日) 01:44
>>881
CFileDialog は OPENFILENAMEのフックが固定定義されておりそのせいだと思われます。
Win32APIで GetOpenFileName() でデフォルト表示させりゃいいと思われます。(今2000でないので試せないが)
889デフォルトの名無しさん:2001/06/17(日) 18:07
>>883
いや、DOS上とかじゃなくて
extern宣言やってもエラーになるから
VCの使い方間違ってるのかと思って聞いてみました。
890883:2001/06/17(日) 18:30
>>889
多分使い方が間違っていると思われり
プロジェクトを作ってそのプロジェクトに
ファイルを追加していますか?
891uuu:2001/06/17(日) 18:47
自分は、簡単なプログラムなら、VC++で組んだことがあるので、
カシオペアA-51のソフトを自作してみたくなり、eMVT3.0のCD-ROMを取り寄せてみました。

そして、http://www.microsoft.com/japan/windowsce/cetools/downloads/hpcsdk.htm
から、mplatsdk.exeをダウンロードしてインストールしたのですが、
選択肢にCE2.0が出ません。

HPC2.0の開発をしているかた、どうか解決策を教えてください。
892デフォルトの名無しさん:2001/06/17(日) 19:44
Windows CE Toolkit for Visual C++ 5.0または6.0 が必要なのでは?
893デフォルトの名無しさん:2001/06/17(日) 19:44
Windows CE Toolkit for Visual C++ 5.0または6.0 が必要なのでは?
894889:2001/06/17(日) 21:59
>>890
はい、追加してます。
コンパイルはできるのですが
リンクのところでエラーになります。
895デフォルトの名無しさん:2001/06/17(日) 23:19
>>894
設定のリンク先に付け加えたの?
896uuu:2001/06/18(月) 00:28
>>892-893
そうなんですか?
WinCEFANの情報ではeMVT3.0とmplantsdk.exeさえあればOKとあったのに…
897895:2001/06/18(月) 00:36
>>889
エラー内容を書いてくれれば原因がわかると思うけど
898デフォルトの名無しさん:2001/06/18(月) 07:17
899895:2001/06/18(月) 08:24
>>898
俺が教えて君だってのか
900889:2001/06/18(月) 23:04
>>895
あ…
付け加えてなかったです。
901デフォルトの名無しさん:2001/06/19(火) 01:17
あるデータをファイルに出力するプログラムなんですが、
unix上(gcc利用)でコンパイル・実行した時の結果と、
win上(vc++6利用)でコンパイル・実行した時の結果の大きさが
違うのです。

win -> 90024bytes(出力データのサイズ)
unix-> 90015bytes(出力データのサイズ)

正しいのは90015bytesの方です。
なぜサイズが異なるんでしょう?
解決策を教えてください ヽ(´Д`)ノ

--------------------------------------------出力部分のコード---------------------
〜略〜
void RTViewMgr::prnpgmhdr(void){
  cout << "P5 " << 2 * dotsize << " " << 2 * dotsize << " 255" << endl;
}

〜略〜
for(略){
  if(obj.rayhit(ray, &hit))
    cout << hit.intensity(lsrc, dIntensA);  // intensity()の返り値はu_char型
  else
    cout << static_cast<unsigned char>(0);
}
902sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
903sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
904sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
905sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
906sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
907sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
908sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
909sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
910sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
911sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
912sage:2001/06/19(火) 01:18
a
a
a
a
a
a
a
a
a
a
a
a@
@
@
@
@
@
@
@
@
@
@
913デフォルトの名無しさん:2001/06/19(火) 01:21
プログラマ板のage荒しがこっちにも来ましたか?
914デフォルトの名無しさん:2001/06/19(火) 11:14
いさチビ女さん
そろそろ新しいスレに
915デフォルトの名無しさん:2001/06/19(火) 21:08
任意のディレクトリ内の特定の拡張子を持つファイルの個数を数える
プログラムを作りたいんですが、いちばん簡単な方法は何でしょうか。
やっぱり、FindFirstとかFindNextとかで、検索するのがいちばん簡単?
ちなみに、サブフォルダ内は検索対象にしません。
916デフォルトの名無しさん:2001/06/19(火) 21:10
>>915
おっぱいぼいん
917915:2001/06/19(火) 21:12
>>916 はあ?
918デフォルトの名無しさん:2001/06/19(火) 21:17
>>915
不可視のComboBoxを作って、CComboBox::Dir
919915:2001/06/19(火) 21:39
>>918
ご回答ありがとうございます。

意味がよくわかりません。もう少し詳しくお願いします。
920デフォルトの名無しさん:2001/06/19(火) 21:48
>>918
あぁ?CComboBox::DirをMSDNで調べろ。
921デフォルトの名無しさん:2001/06/19(火) 21:56
VCだったら2ちゃんよりニュースの方がいいよ
真面目に困ってる人にはね
922 :2001/06/19(火) 21:58
>915そだね。ツーカ分かってる方法があるならそれでやれよ
923915:2001/06/19(火) 22:07
はい、すみません
924デフォルトの名無しさん:2001/06/19(火) 22:14
16bitカラーモードではパレットを作る必要はないのでしょうか?
16bitカラーモードでは色はどのようになっているのでしょうか?
925デフォルトの名無しさん:2001/06/19(火) 22:55
>>924 BITMAPINFO の bmiColors[0] 〜 bmiColors[2] に
RGB (BGRだっけ) のそれぞれのビットマスクが入ってる。
926デフォルトの名無しさん:2001/06/19(火) 23:26
>>915
dir *.ext /b /s
を実行して、その結果の行数を数える。
927デフォルトの名無しさん:2001/06/19(火) 23:57
>>926
ばかじゃないの、死ね。
本当に、ばかだな。頭悪いよ。はげ
928デフォルトの名無しさん:2001/06/20(水) 00:02
↑も無教養に見える。
929>926:2001/06/20(水) 00:05
wcがないとね
930デフォルトの名無しさん:2001/06/20(水) 00:41
トイレ?
931デフォルトの名無しさん:2001/06/20(水) 21:30
ビットマップのデータってどうやって保存するんですか?
932デフォルトの名無しさん:2001/06/20(水) 22:37
>>930
……ネタにしては、つまらない。本当に知らないのなら http://unxutils.sourceforge.net/
行って下さい。
933デフォルトの名無しさん:2001/06/21(木) 10:32
設定がハイカラー(16ビット)以上のときはビットマップを読み込んだとき
パレットはつくるひつようはないんでしょうか
934なー:2001/06/21(木) 16:31
>933
パレットはいらないけど、マスクしなきゃいけないのでその分はbitmapinfoheaderの後につけてあげなくちゃいけないよ。
935なー:2001/06/21(木) 16:36
ACCESSとかの mdbって2000になって だいぶかわったみたいなんだけど、
実際のところはどうなんでしょう?
前はセカンダリのスレッドからはアクセスしちゃだめとか、
あったけど、今もかわらずなのでしょうか?
というか、2000になっての変更点ってどういうのがあるんでしょう?
解説とかあるページがあったら、教えてくださいませ。
他力本願で申し訳ないのですが・・・
936デフォルトの名無しさん:2001/06/22(金) 00:30
void *operator new(size_t size){
/*省略*/
}

void *operator new [](size_t size){
/*省略*/
}
void inithoge(long num){
char *p = new char[num]
}
■■■■■■■■■■■■■■■■■■■■■
このような時、new[]ではなくnewの方に飛んでしまうんですが、
これって仕様ですか?

VC++6.0
937デフォルトの名無しさん:2001/06/22(金) 03:19
VC6ではnew[]演算子およびdelete[]演算子は定義されていません。
内部で勝手にnew/delete演算子に置き換えています。
938936:2001/06/22(金) 07:36
>>937
ありがとうございます。
939デフォルトの名無しさん:2001/06/22(金) 10:28
現在ダイアルアップでつながっている番号をこっそり変えたいのですが
ばれないようにやるいい方法はないでしょうか
940>>939:2001/06/22(金) 11:18
NTTハクしてISPの電話番号かえさせるとか
おまえ物凄いこといってるな
941デフォルトの名無しさん:2001/06/22(金) 11:20
初期化ファイルに対する操作についての質問です。
指定した初期化ファイル(.INI)で、特定のセクションを、セクション名毎削除するには
どうしたらよいのでしょうか?
WritePrivateProfileSectionで書き込みデータをNULLにしても、セクション名だけは残って
しまいます。
942デフォルトの名無しさん:2001/06/22(金) 11:40
>>941
WritePrivateProfileString()を使え。
第2引数をNULLにするのぢゃ。
943デフォルトの名無しさん:2001/06/22(金) 11:49
>>939
エロサイトでよくおとせる(おとさせられる)Q2のアレのことか?
944941:2001/06/22(金) 13:04
>>942
ありがとう。成功しました。
945939:2001/06/22(金) 13:34
>>943
そうです。
巡回ソフトに組み込んでおいてこっそり番号変えられないかと
946いさましいチビの女:2001/06/22(金) 14:02
900を超えたので新スレッドを作りました。

http://piza.2ch.net/test/read.cgi?bbs=tech&key=993186053&ls=50
947デフォルトの名無しさん:2001/06/23(土) 17:19
948デフォルトの名無しさん
>>947
ありがたい、まじで