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


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

VisualC++相談室 2
1 名前:いさましいチビの女 :2001/02/08(木) 20:12
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
まあ馬鹿だろうからプログラムもろくにできないだろうけどね



4 名前:デフォルトの名無しさんだもん :2001/02/09(金) 10:16
>>2
GetItemTextで取得できるよ。
ただ、IMCHANGEDやITEMCHANGINGイベントないでやったら今選択した奴じゃなくて
一つ前のが取れたと記憶してるけど。 そこら編チョコっと注意かも。



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

6 名前:デフォルトの名無しさんだもん :2001/02/09(金) 11:55
>>5
EndDialog(0);
でいいんじゃないの?



7 名前:デフォルトの名無しさん :2001/02/09(金) 12:08
>>6
ダメでした。
AfxGetMainWnd()->PostMessage(WM_COMMAND, ID_APP_EXIT);
が働かずに(つーか待ち状態?)でプログラム終らずに、OnEnd()から
戻ってきちゃう・・・・

8 名前:デフォルトの名無しさんだもん :2001/02/09(金) 12:39
>>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;
のようにクラス宣言の中にかくだけじゃ駄目ですか?
早急にレスきぼーん。

11 名前:SAGE :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++を手に入れたばかりです)

15 名前:12 :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
インデントシヨウヨ…

17 名前:SAGE :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
>>19
http://www2s.biglobe.ne.jp/~maekawa/dev/vc/cpu/index.html
見れ見れ。

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とかじゃ駄目ですか。あまり知らないんですが。

41 名前:19 :2001/02/13(火) 11:37
>>24
thanks ここからどうやってCPUを判別したらいいか悩んでるんですけど。
ある程度はレジストリから取得できるんですけど、その先が・・・
2次キャッシュのサイズとかの取得に方法とかですね・・・


42 名前:38 :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)がデータを受け取ったらと有りますが
「データを受け取ったら処理をする」という
作り方が分かりません。
教えて下さい。


51 名前:デフォルトの名無しさんだもん :2001/02/14(水) 10:55
>>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
インスタンスハンドらってなんだか教えれ

58 名前:デフォルトの名無しさんだもん :2001/02/15(木) 09:08
>>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)は
分かったんですが、どう組み込んだら良いんでしょうか?

62 名前:デフォルトの名無しさんだもん :2001/02/15(木) 17:02
>>59
ちなみに、NT系専用です。
で、Lm.h をインクルードして。
Netapi32.lib のリンクも必要かも。
ふぁいとっ。



63 名前:59 :2001/02/15(木) 17:54
>>62
ありがとうございます。
で、
2番目の引数なんですけど
グローバル グループ アカウントの名前を含む、
Unicode文字列を指すポインタです。
となっているんですけど、
LPWSTRってなに?
どういうふうに設定すればいいの?
Administratorを設定したいよ〜!

64 名前:59 :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

82 名前:SAGE :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

96 名前:94 :2001/02/19(月) 23:54
>>95
えっと、それがないんですよ、ウムラウトは
ギリシャ文字はあるのに・・・

97 名前:SAGE :2001/02/20(火) 08:08
>91
無理

>94
Unicode対応のフォントで 00e4 とか 00f6 を書くべし〜

98 名前:91 :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

103 名前:SAGE :2001/02/20(火) 21:26
WM_COMMAND

104 名前:( ´∀`)さん :2001/02/20(火) 21:45
C++のおすすめ入門誌などを教えてください。

105 名前:デフォルトの名無しさん :2001/02/20(火) 22:52
 CWinAppクラスにWriteProfileStringという便利なメソッドがありますが、WinNT上ではレジストリに情報が記録されるので、あまり大容量のデータ…例えば全部で数メガとか…を保存するのはマズかったりするでしょうか。それとも、気にせずにがんがんレジストリを使ってしまっていいのでしょうか。記録内容はアプリの設定などですが、その設定のバリエーションが膨大なのです。
 よろしくおねがいします。

106 名前:94 :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程度なら気にせずに書き込んでるけど。


113 名前:108>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
良いかどうかは別としてストリーム使うのが標準(というか他に無い)
文字列ストリームね。


120 名前:115 :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で記録してるやつ発見。

122 名前:115 :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++などでメッセージの流れも見てみたのですが、上手い方法が思い付かなくて‥‥‥

130 名前:c++ :2001/02/25(日) 03:39
コンソールへ出力するときで、 cout を使うとき、
UNICODE が定義されているなら wcout に自動でするような
マクロは定義されていないのでしょうか?
tchar.h にはなかったのですが……。

同じような問題に陥った方・わかる方で、
どう解決されたかをご教示ください。

131 名前:名無しさん :2001/02/25(日) 07:01
非常に初心者的な質問で申し訳ないんですが、
サービスパックはバージョンが4のやつを
当てればすべてOKなんでしょうか?
ちなみにnafxcw.libがなくて困ってます。

132 名前:SAGE :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でメッセージをディスパッチする
なんか、この方法、前から使ってたんだが最近○ねう○おとかが
使い出したんで別の方法を模索中

137 名前:134 :2001/02/26(月) 00:45
>>135
わかりづらい質問ですいません。
更に申し訳ないことにMFCはよく知らないんです。うーん、
なんとなく今やってることと同じような気も・・・違うのかなぁ。
今度ちょっとMFC、読んでみます。
>>136
なるほどー、これは良さそうですね。試させて頂きます。
ついでにやねさんのところ行って見てきてみます。
ブックマーク残ってれば(w

お二人とも貴重なレス、ありがとうございました。

138 名前:デフォルトの名無しさん :2001/02/26(月) 01:06
>>136
hashでやれば?
おれは昔っからそうやってるよ。
真似っ子は嫌いそうだが。

139 名前:132 :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
連結演算子です。

144 名前:142 :2001/02/26(月) 15:23
>>143
おおう、即レス助かります。
連結演算子っすね。
調べちゃったよ。
つーかしらんかった、こんな怪しげな演算子があったとは。

145 名前:デフォルトの名無しさん :2001/02/26(月) 16:33
>>138
どうも。
正確にはhashmap使ってたんだが、まー、似たようなもんだから。
今読み返してみてどうにも負け惜しみにしか見えないな。俺の書きこみ

結局記事にしたもん勝ちだな(藁

146 名前:デフォルトの名無しさん :2001/02/26(月) 16:49
て言うかさ、勝ち負けなんかねぇよ、そんなもんくれぇで。

147 名前:134 :2001/02/27(火) 00:49
>>140>>141
ありがとうございます、何を見ればいいみたいな助言は本当に助かります
自分のソースがどんどん分かりやすくなっていって、一人ほくそ笑んでます

148 名前:133 :2001/02/27(火) 04:36
>>139
なるほど、静的リンクしたいとき必要なライブラリってわけですか。
実はあきらめてVC++アンインストールしてしまったので
もういちどインストールして頑張ってみます。
ありがとうございました。


149 名前:デフォルトの名無しさん :2001/02/27(火) 12:05
ダイアログにデータをUpdateData(FALSE)で返すときに、
CStringの項目に改行コード(\n)を入れると、
ダイアログでは改行されずに・に化けちゃうんですけど
どうしたら良いんでしょうか?

150 名前:SAGE :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のドキュメントの書き込み禁止/許可を
させるにはどうしたよいのでしょうか?

153 名前:149 :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のコメント?(制作したソフトの名前とか著作権とか)を読み込むには何て関数使うんですか?
逆に保存時にコメント入れるにはどの関数使えばいいですか?
ソースがデカ過ぎて良く分からん。
誰か教えてお願い。

163 名前:SAGE :2001/02/28(水) 08:38
wrjpgcom.c とか rdjpgcom.c は違います? >>162

164 名前:156 :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なんですが、間違ってますか?
新規作成のときに、どれを選べばいいんでしょうか


176 名前:175 :2001/03/01(木) 17:27
それとも、保存するディレクトリが間違っているんでしょうか?

177 名前:デフォルトの名無しさん :2001/03/01(木) 17:27
>>175
半角スペースと全角スペースってわかる?
まずそれからチェックだな。

178 名前:デフォルトの名無しさん :2001/03/01(木) 17:29
 VC6での質問ですけど、新しくアプリを作るのに新規プロジェクトを作成したのですが、いくつかのユーザーインターフェースをはじめとするリソースを他のプロジェクトから流用したいのですが(現プロジェクトから他プロジェクトを参照するという形で)、現プロジェクト側の考え付く限りの#include文を修正しても、どうしても他プロジェクトのリソースを参照してくれません。なにか良い方法はあるのでしょうか。
 また、そこで思ったんですが、共有リソースはリソースとインターフェースクラスでDLLにしてしまうしか手がないのでしょうか。

179 名前:175 :2001/03/01(木) 17:30
あ、ちなみにVC++6.0です。

180 名前:デフォルトの名無しさん :2001/03/01(木) 17:32
>>175
エラーメッセージを書いといたほうが答えてくれる人が増えるよ(多分)。


181 名前:175 :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

190 名前:175 :2001/03/02(金) 01:02
たびたび、初心者質問ですみません。
エラーメッセージ「ファイル'***.h'の拡張子に関連したコンパイルツールが無いためにコンパイルできません。」
とでます。
これは、インクルードファイルをコンパイルしようとしたとき、何時でも出てきます。
VC++6.0には、付いてますよねぇ・・・?コンパイルツール・・・。

191 名前:デフォルトの名無しさん :2001/03/02(金) 01:21
.hをコンパイルしようとなんてするな。>190

192 名前:175 :2001/03/02(金) 01:28
>>175の原因がわかりました。
mspdb60.dllが無くて、cl.exeが起動できないみたいです。
これってどこかではDLできないんでしょうか。vectorにも無いみたいですし・・。

193 名前:デフォルトの名無しさん :2001/03/02(金) 02:05
>>175,192
パス間違ってるだけじゃねーの?
cl.exeローカルドライブ全検索して味噌

194 名前:193 :2001/03/02(金) 02:11
で、見つかったパスを
ツール-オプション-ディレクトリ-実行可能ファイル
に通せばいいと思ふ。

195 名前:175 :2001/03/02(金) 03:44
あ、出来ました。193さんどうもありがとうございました。
自分の場合、「D:\Microsoft...」のフォルダの名前を
「VC++」と変更していたので出来なかったみたいです。(これが全ての元凶の様でした)
193さんのレスがヒントになりました。
あ、あと、>>192のMSPDB60.dllは、間違ったディレクトリにあったので、
Windows\system内に移動させたらcl.exeは動くようになりました。
どうもありがとうございました。

196 名前:165 :2001/03/02(金) 10:19
出来ました。
処理をコンストラクタに書いてました。
Run()を作ってそっちに移行するとうまく動きました。
すいませんでした。皆さんありがとうございました。
ときに、コンストラクタとInitInstance()の
違いって何なんすか?

197 名前:HelpMe :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
>>211
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=964560144
を読むと良いと思うなっ♪

214 名前:デフォルトの名無しさん :2001/03/05(月) 06:29
麻衣たぁん、、、、ハァハァ(;´д`)

215 名前:デフォルトの名無しさん :2001/03/06(火) 14:26
ActiveXのWebBrowserオブジェクトを使って、ローカルにあるHTMLファイルを
表示させるアプリを作っています。表示させるHTMLファイルにもしエラーが
あった場合でも(スクリプトエラーとかプラグインエラー)
アラートのダイアログは絶対に出してはいけないという仕様です。
ちなみにSilentプロパティはTRUEにしたら、スクリプトエラーに関しては
対応できましたが、プラグインエラーに関してはいまだに出てしまいます。
どなたかこの辺の技術に詳しい方、ご教授願います。


216 名前:215 :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

動体視力を鍛える

226 名前:210 :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にあるリソーススクリプトはあまりいじりたくないのですが。


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