2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

■ VisualC++(MFC限定)相談室 MFC8.dll■

1 :デフォルトの名無しさん:03/06/26 08:47
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/
■ VisualC++(MFC限定)相談室 MFC6.dll■
http://pc2.2ch.net/tech/kako/1039/10396/1039607377.html
■ VisualC++(MFC限定)相談室 5■
http://pc3.2ch.net/tech/kako/1028/10285/1028553308.html
■ VisualC++(MFC限定)相談室 4■
http://pc3.2ch.net/tech/kako/1021/10216/1021620974.html
■ VisualC++(MFC限定)相談室 3■
http://pc.2ch.net/tech/kako/1014/10140/1014057520.html
■ VisualC++(MFC限定)相談室 2■
http://pc.2ch.net/tech/kako/1008/10080/1008031675.html
■ VisualC++(MFC限定)相談室 ■
http://pc.2ch.net/tech/kako/989/989902845.html

2 :デフォルトの名無しさん:03/06/26 08:52
// バグが取れるおまじないコメント
//
//@@@@@
//( ゜∀゜  )バグバグ
//<VV > トレトレ
//. .< ~ >

3 :デフォルトの名無しさん:03/06/26 11:23
>>1
乙!
■ VisualC++(MFC限定)相談室 MFC7.1.dll■
にしてほすぃかった。。。



4 :デフォルトの名無しさん:03/06/26 22:23
CListCtrlでマウスのアクションに選択列がついて来ちゃうんだけど
それを辞めるにはどうすればいい?

5 :デフォルトの名無しさん:03/06/26 22:41
>>4
マウスのアクション?

6 :4:03/06/26 23:33
マウスの移動に対して選択行がくっついてくる

ちょっと説明しずらい・・・

7 :デフォルトの名無しさん:03/06/27 00:02
ホットトラックっぽい

8 :デフォルトの名無しさん:03/06/27 02:31
表示する文字列がぴったり収まるように、ダイアログ上のボタンの大きさ
を変えたいのですが、何か方法はありますでしょうか。
デフォルトのフォントではフォント幅が一定でないので困っています。
どなたかご教授ください。おながいします。

9 :とも:03/06/27 02:36
みてね〜♪
http://www1.free-city.net/home/s-rf9/page005.html

10 :デフォルトの名無しさん:03/06/27 04:07
>>8
GetTextExtentPoint32あたりを使えば良いのではなかろうか。

11 :kou:03/06/27 11:46
iostreamとstdioの差ってなんだ?


12 :デフォルトの名無しさん:03/06/27 15:11
>>11
両方ともMFCのライブラリちゃうやん

13 :デフォルトの名無しさん:03/06/29 13:39
VC6です。
ビットマップを描画するのに以下のようにしているのですが、
Debug時には正常に描画できるのですが、Release時には全く描画されません。
どのようにすればいいのでしょうか?

<CView派生のOnDraw()内で>
CDC dc;
dc.CreateCompatibleDC(pDC);

CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP);

dc.SelectObject(&bmp);
pDC->BitBlt(0,0,0,0, &dc,0,0,SRCCOPY);


14 :13:03/06/29 13:42
すいません、最後の一行を間違いました。

// (0, 0) に 32*32 のビットマップを描画
pDC->BitBlt(0,0,32,32, &dc,0,0,SRCCOPY);



15 :13:03/06/29 14:02

リビルドしたらちゃんと描画できました。
すいませんでした。

16 :デフォルトの名無しさん:03/06/29 20:22
しねや

17 :デフォルトの名無しさん:03/07/01 02:23
>>15
日下部

18 :デフォルトの名無しさん:03/07/01 12:30
CListCtrlでマウスホバーさせないようにする方法を教えて下さい

19 :デフォルトの名無しさん:03/07/01 14:33
>>18
LVS_EX_TRACKSELECT か?
デフォルトではついてないはずだが


20 :デフォルトの名無しさん:03/07/01 14:53
>>19

そのはずですよねぇ・・・・

21 :デフォルトの名無しさん:03/07/01 18:20
>>18
これでいいのでは
bitflag ~=LVS_EX_TRACKSELECT

22 :デフォルトの名無しさん:03/07/01 21:02

CWnd::MoveWindow()で、
MoveWindow(int x,int y,int width,int height) は位置とサイズによる指定ですが
MoveWindow(LPCRECT lpRect) の方は左上座標と右下座標による指定なのでしょうか?
教えてください。


23 :デフォルトの名無しさん:03/07/01 22:03
>>22
そう。

24 :デフォルトの名無しさん:03/07/02 17:39
ビットマップリソース IDB_BMP
(サイズ=縦 16、横 16 x 16)

TreeCtrlのカスタムクラスCXTreeCtrlのメンバ
 CImageList m_ImageList;
について、コンストラクタ内で

   m_ImageList.Create(IDB_TI, 16, 1, RGB(255,255,255));
   SetImageList(&m_ImageList, TVSIL_NORMAL);

とやっているのだが、SetImageListでERRが出ます。
※CImageList::AttachでASSERT(m_hImageList == NULL);に引っかかる

なんか間違ってますか?

25 :デフォルトの名無しさん:03/07/02 18:21
>>24
リソースはIDB_BMPなのに読み込んでるのはIDB_TI

26 :24:03/07/03 13:47
>>25 それは単なるコピペミスでつ・・・・スマソ

27 :デフォルトの名無しさん:03/07/03 14:50
>>26
それはともかく、コンストラクタはまずいだろ。

28 :デフォルトの名無しさん:03/07/03 15:11
>>24
Create()の返り値チェックなしですか?

29 :デフォルトの名無しさん:03/07/03 15:21
CWinThreadの派生クラスを作ったんですが、その中で普通に Sleep(5000);
としても、止まったりしないのですが、CWndの派生クラスをCWinThreadの派生クラス内で new してから
Sleep(5000); を実行すると止まってしまいました。

これはいったいどうなっているのでしょうか。
これが仕様なら、解決策はないでしょうか。

30 :デフォルトの名無しさん:03/07/03 15:30
>>29
ウィンドウを生成するスレッドでSleepを使ってはいけない。
MsgWaitForMultipleObjectsExを使え。とMSDNに書いてある。はずだ。

31 :29:03/07/03 15:42
>>30
ありがとうごさいます。 そうだったんですか。
でも、
char buf[10];
for (int i=0; i < 100000000; ++i ) {
strcpy(buf, "test");
}
としてみても、止まってしまったんですが・・

ウインドウを生成するときは時間をかけてはいけない ということなのでしょうか?

32 :デフォルトの名無しさん:03/07/03 15:43
なにがでも、なのかさっぱりわからん。

33 :29:03/07/03 15:46
>>32
Sleep()特有の現象かと思ったので..

34 :デフォルトの名無しさん:03/07/03 16:02
そこで止まらないならThreadの存在価値って何さ。

35 :デフォルトの名無しさん:03/07/03 20:02
>>33
Sleepで止まるのと>>31で止まるのは全く意味が違う。
マルチスレッドの勉強をやり直せ。

36 :デフォルトの名無しさん:03/07/03 20:32
>その中で普通に Sleep(5000);
>としても、止まったりしないのですが、

これマジですか?
ステップ実行としてもすぐに帰ってくる?

37 :29:03/07/03 21:35
>>36
言葉が足りなかったです。
そのスレッド内では Sleep() でも, ループ でも止まりますが、そのスレッドの生成元のスレッド
が、止まってしまいます。

38 :デフォルトの名無しさん:03/07/04 01:45
簡単なFTPソフトの機能をプログラムに組み込みたいのですが、
参考になるソース、オープンソースなどあったら是非おしえてください
よろしくお願いします


39 :デフォルトの名無しさん:03/07/04 01:49
>>38
FFFTP(非MFCだが。)

40 :デフォルトの名無しさん:03/07/04 07:12
>>38
付属のサンプル。

41 :デフォルトの名無しさん:03/07/04 14:43
>>37
Sleepはそれを実行したスレッドと同レベルのスレッドに制御を移す関数です。

42 :29:03/07/04 20:04
>>41
勉強になりました。

43 :38:03/07/04 22:39
>>39
ありがとうございます。みてみました。
できればMFCベースのものがあればよいのですが・・・


44 :デフォルトの名無しさん:03/07/04 22:52
>38
カプセル化されているので結構簡単にできる。
CFtpConnection。


45 :デフォルトの名無しさん:03/07/07 00:33
もしご存知の方がいましたら教えてくれませんか。
「USB接続されている全デバイスの取得」や
「USB接続されているCF」を検索する方法ってどうやったら
よいのでしょうか?
宜しくお願いします。


46 :デフォルトの名無しさん:03/07/07 01:05
DDKにusbviewのソースがついてる。

47 :デフォルトの名無しさん:03/07/07 16:10
>>45はマルチ。

48 :デフォルトの名無しさん:03/07/07 21:02
あるディレクトリー下の階層を含めたファイル群を自動的に
圧縮・任意のディレクトリーに展開するライブラリでオススメって
ありますか?
参考ソースの場所などがあれば教えていただければ助かります。
よろしくお願いします


49 :デフォルトの名無しさん:03/07/08 21:19

CListCtrlでビュー内のフォントを変える方法を教えてください。
CWnd::SetFont()を使っても駄目なのです。
お願いします。


50 :デフォルトの名無しさん:03/07/08 21:35
メニューをVS.NETみたいに
左側がグレーの地にアイコン右側に文字でフラットスタイル
にするにはどうすればよいのでしょうか?


51 :デフォルトの名無しさん:03/07/08 22:21
>>50
codeguruへgo!

52 :デフォルトの名無しさん:03/07/08 22:27
>>50
VS.NETにする。
つか、VS.NETて、何よ?

53 :50:03/07/08 23:00
>>51
ownerDrawを使ったメニューのことでしょうか?
(私にはそれしか探せなかったです)
最近,このスタイルのメニューが多いので
何かのライブラリを用いているのかと思ったのですが.

すいません環境を書き忘れました.
DEV VisualStudio.Net 2003(VC++ C# VB)
OS Windows Xp


54 :デフォルトの名無しさん:03/07/08 23:57
>>52
.NETと戦う(VSマッチする)という事です。
我々プログラマーを苦しませてきたマイクロソフトの思い上がり.NETを
粉砕しようという運動です。


55 :デフォルトの名無しさん:03/07/09 08:07
こういった質問は、駄目だよね

ttp://thebbs.jp/program/1038816405.html

56 :デフォルトの名無しさん:03/07/09 09:00
VisuaiC++か・・・俺も知りたい・・・無料配布してるサイト

57 :デフォルトの名無しさん:03/07/09 09:48

今こそVisuaiC++を探せ!!

58 :デフォルトの名無しさん:03/07/09 10:25
VisuaiC++を無料で手に入れる方法は知ってるが・・・

59 :デフォルトの名無しさん:03/07/09 11:10

VisuaiC++どのにあるんだ。>> ?


60 :デフォルトの名無しさん:03/07/09 11:11
エスパー必要?

61 :原辰則:03/07/09 12:23
Visu愛!!

62 :デフォルトの名無しさん:03/07/09 12:36
原辰則立ち上がれー
おれには尻尾しかないーけどー
一歩づつ勇気をはじめよー
そうだいいぞ、

こんにちは、そーすれーばー勇気が湧いて来る
大空見上げてー
さぁ行こおー
VisuaiC++を探せーぇ

63 :このスレ壊れてます:03/07/09 14:01
このスレ壊れてます

64 :デフォルトの名無しさん:03/07/09 17:54
FTPディレクトリーをまるごとローカルにコピーするプログラムを
つくっているのですが、下階層に入ったあとファイルを取りこぼして
しまいます。(10000バイトを超えるファイルはテストのため
コピーしないようにしています)
あやしい場所があれば指摘よろしくお願いします
BOOL CFTP_TSTDlg::CopyCurrent(CFtpConnection* inFTPconnect,CString inCurrentFTPdirectory,CString inCopyDstDirectory){
BOOLret;CString WasDirectory;
inFTPconnect->GetCurrentDirectory(WasDirectory);
ret = inFTPconnect->SetCurrentDirectory(inCurrentFTPdirectory);
CFtpFileFindftpFind( inFTPconnect );
if(ftpFind.FindFile(NULL)){
while(TRUE){
if(ftpFind.FindNextFile()==NULL) break;
if (ftpFind.IsDots()) continue;
if( ftpFind.IsDirectory()) {
CStringcurrentName = ftpFind.GetFileName();
chardirPath[256];
wsprintf(dirPath,"%s\\%s\\",inCopyDstDirectory,currentName);
::CreateDirectory(dirPath,NULL);
TRACE("Create Directory %s\n", dirPath);
ftpFind.Close();
CopyCurrent( inFTPconnect,currentName,dirPath);
           //ここでなぜか検索しなおさないとうまく動かない
if (ftpFind.FindFile("*")) { while(TRUE){
if(ftpFind.FindNextFile()==NULL) break;
if (ftpFind.GetFileName() == currentName) break;}}}else { chardirPath[256];
wsprintf(dirPath,"%s\\%s",inCopyDstDirectory,ftpFind.GetFileName());
TRACE("CopyFile %s\n", dirPath);
charsrcPath[256];
wsprintf(srcPath,"%s/%s",WasDirectory + inCurrentFTPdirectory,ftpFind.GetFileName()); if (ftpFind.GetLength64() < 10000) {
inFTPconnect->GetFile(srcPath,dirPath,FALSE); }}}}
ftpFind.Close(); ret = inFTPconnect->SetCurrentDirectory(WasDirectory); return TRUE;}

65 :デフォルトの名無しさん:03/07/09 18:55
原さんが壊しちまったっぺよ

66 :デフォルトの名無しさん:03/07/09 19:01
これが本当の「はらぃたいら」

67 :デフォルトの名無しさん:03/07/09 22:36
ドキュメント・ビューアーキテクチャを使わないで
スプリットを実現するにはどうしたらよいのでしょうか。

68 :デフォルトの名無しさん:03/07/09 22:39
WTL使う。

69 :67:03/07/09 22:53
>>68
MFCだけでは無理でしょうか

70 :デフォルトの名無しさん:03/07/09 23:02
>>67
CodeGuruへGo!

71 :デフォルトの名無しさん:03/07/09 23:41
私が作ったよ〜♪
http://nuts.free-city.net/index.html

72 :64:03/07/09 23:58
解決しました
FindNextFileは「次」のファイルがあるかないかなのですね
そこでキャンセルしてしまったら、早すぎるというオチでした


73 :64:03/07/09 23:59
>>72
それにしてもデートに金かけすぎ
羽振りが悪くなったときにどうなるか気になるところ。
Dカップはいいねえ
さっそく顔写真をアップして自慢してください



74 :64:03/07/10 00:01
誤爆すいません


75 :デフォルトの名無しさん:03/07/10 00:51
(゚Д゚,,)

76 :デフォルトの名無しさん:03/07/10 02:19
(゚Д゚,,)

77 :デフォルトの名無しさん:03/07/10 06:50
(゚Д゚,,) (漏れはBカップのが…)

78 :デフォルトの名無しさん:03/07/10 09:22
(゚Д゚,,)

79 :VisuaiC++が欲しい!:03/07/10 10:49
 VisuaiC++が必要なのです。98のアプリがあるのですが、販売終了ということで
入手ができませぬ。どこか手に入るところを教えてくださーい。仕事が終わんない
んで、オマンマがぁ・・・販売終了ならコピーを許可にしろ>マイクロソフト 

 すまん、スレ違いかもしれぬ。

80 :デフォルトの名無しさん:03/07/10 12:18
>>79
中古屋でも探すべし。

81 :デフォルトの名無しさん:03/07/10 19:46
>>79
VS.net MSDN Deluxe 買ってMSDNからダウンロード。
VS.net ProfessionalならProfessional版の
VS6、VS5英語版、Visual C++ 1.52英語版、Visual C++ 4.2英語版
がダウンロードできる。


82 :81:03/07/10 19:48
訂正
Visual C++ 4.2 (English)はEnterprise Editionだった。

83 :デフォルトの名無しさん:03/07/11 09:48
ActiveXコントロールに貼り付けた各ボタンにツールチップつけたいのですが
以下を参考にしても全体にしかツールチップが表示されません。
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q141/8/71.asp&NoWebContent=1
MediaPlayerのように
各ボタンでツールチップを表示させるにはどうしたらいいのでしょうか。

84 :デフォルトの名無しさん:03/07/11 11:47
>>83
マウスの位置によって表示する文字を変えてやる。

85 :デフォルトの名無しさん:03/07/11 12:53
>>84
ボタンにフォーカスが移るとメッセージが来ないんですよー。
それで悩んでます。

86 :デフォルトの名無しさん:03/07/11 13:17
緊急レベルきたよー

MS03-023 : Windows の重要な更新
HTML コンバータのバッファ オーバーランにより、コードが実行される (823559)
http://www.microsoft.com/japan/security/security_bulletins/MS03-023e.asp

87 :デフォルトの名無しさん:03/07/11 22:04
>>85
ボタンにフォーカスが移ったら親にフォーカス移せば?

88 :デフォルトの名無しさん:03/07/11 22:25
ボタンのMOUSEMOVEから親ウィンドウのチップ表示関数呼ぶとかはできんの?

89 :デフォルトの名無しさん:03/07/11 22:44
DLLの作成を頼まれました。それはいいのですが、なぜかソースの拡張子はcppではなく
全てcにするよう言われました。それで早速、MFCAppWizard(dll)で新規プロジェクトを作り
生成されたソースファイルを全てcに直して、改めてワークスペースに追加してコンパイルを
試みました。が、なぜかエラーが出ます。
これはなぜでしょうか?それと拡張子をcにすることにどんな意味があるのでしょうか?

90 :デフォルトの名無しさん:03/07/12 00:50
エラーの内容を書かないのなんでだろう〜♪なんでだろ〜♪

91 :89:03/07/12 01:33
>90 すいません。以下のようなエラーが出ます。

c:\dll\dll.c(4) : fatal error C1083: プリコンパイル済ヘッダー ファイルがオープンできません。'Debug/dll.pch': No such file or directory
StdAfx.c
c:\dll\stdafx.c(5) : fatal error C1083: プリコンパイル済ヘッダー ファイルがオープンできません。'Debug/dll.pch': No such file or directory
コードを生成中...

プロジェクト名はdllです。

92 :89:03/07/12 01:35
ちょっと訂正です。

StdAfx.c
c:\dll\stdafx.c(5) : fatal error C1083: プリコンパイル済ヘッダー ファイルがオープンできません。'Debug/dll.pch': No such file or directory
dll.c
c:\dll\dll.c(4) : fatal error C1083: プリコンパイル済ヘッダー ファイルがオープンできません。'Debug/dll.pch': No such file or directory

93 :デフォルトの名無しさん:03/07/12 01:55
まずは中間ファイル消してみましょう

94 :デフォルトの名無しさん:03/07/12 01:59
新参者だもんで、今までスレタイのDLLの意味判ってなかった・・・
ちょうどVC7出たころだから、おおMFC7専門かあとか思ってた。
鬱だ。

95 :デフォルトの名無しさん:03/07/12 06:02
>89
>それで早速、MFCAppWizard(dll)で新規プロジェクトを作り
>生成されたソースファイルを全てcに直して

いや、依頼者が頼んだのは、そういうことではないと思うぞ、、

96 :デフォルトの名無しさん:03/07/12 07:17
>>94
静岡県民の方ですか?

97 :89:03/07/12 08:34
レスありがとうございます

>93
説明不足ですいません。Debugフォルダを削除してコンパイルした結果が
上のエラーなのです。

>95
うーん。何回も確認したのでたぶん間違いないはずです。

とりあえず、今はcppで作業を進めています。

98 :デフォルトの名無しさん:03/07/12 08:43
/TPをコンパイルオプションに足せば問題なくできるはずだが、、

99 :デフォルトの名無しさん:03/07/12 09:09
>>89
ソースファイルを右クリック→名前の変更。
カーソルを最後に持っていき、Delキーを2回、でEnter。

100 :デフォルトの名無しさん:03/07/12 09:51
みなさん、どうもありがとうございます。

>98
/TPはコマンドラインでコンパイルする時使うものですか?Developer Studioで利用する時は
どうすればいいのでしょうか?

>99
すいません。2行目を詳しくお願いします。


101 :_:03/07/12 10:08
http://homepage.mac.com/hiroyuki44/jaz09.html

102 :デフォルトの名無しさん:03/07/12 10:29
プロジェクトの設定のC/C++の、プロジェクト オプションのところに
足せば君の望むものにはなるだろうが、、、

103 :デフォルトの名無しさん:03/07/12 16:11
なんでCで作れって言われてるのにMFCのウィザード使ってるんだろう

104 :デフォルトの名無しさん:03/07/12 17:18
俺も思った。

105 :デフォルトの名無しさん:03/07/13 23:06
DocumentクラスからCMainFrameのポインタを得たいんですが、どうすればいいのでしょうか(´・ω・`)
因みにSDIです。

106 :デフォルトの名無しさん:03/07/14 00:19
>>105
AfxGetApp()->m_pMainWnd;

(´・ω・`) ← 最近これ流行ってるの?激しくウザイんだが。


107 :デフォルトの名無しさん:03/07/14 00:31
((CMainFrame*)AfxGetMainWnd())

108 :デフォルトの名無しさん:03/07/14 00:33
どうやらできますた。ありがとー>>106
(´・ω・`)に関しては100%個人の感覚の問題なのでお気になさらずに。

109 :デフォルトの名無しさん:03/07/14 00:34
>>107
それもアリっすか。
まあ手に馴染む方で頑張っていく方向で(´・ω・`)
ああもう挫折しそうだMFC………

110 :85:03/07/14 11:02
>>87
それだ!
それやってみます。

111 :デフォルトの名無しさん:03/07/14 16:54
ウィザードでCDocument, CFormViewのMDIフォームを作りました。

通常ですと「新規作成」のメニューをクリックすれば、
勝手に子ウィンドウが出てきて、コーディングは不要ですよね。
しかし新たに追加したメニューから、子ウィンドウを出したいのですが、
どうしたらいいか分かりません。
どうぞご教示下さい(´・ω・`)


112 :デフォルトの名無しさん:03/07/14 16:58
>>111
CMyAppでメニューイベントを受け取ってOnFileNewにリダイレクト

しかし
> 勝手に子ウィンドウが出てきて、コーディングは不要
だから便利なんだけど、そうやって続けてると理解が深まらなくて後で困る

MFCのソース読んだりステップ実行して処理の流れを把握しとくと効率上がるよ


113 :111:03/07/14 17:20
>>112
即レスありがとうございます。
解決しました。

>だから便利なんだけど、そうやって続けてると理解が深まらなくて後で困る
ですね(^_^;




Studyなしでいきなり実戦だもんで、すぐあわあわしてしまいます。
またすぐ質問しにくるかも…。


114 :デフォルトの名無しさん:03/07/15 01:08
コンボボックス内のリストを選択したら、(ボタン関数は使わずに) エディットボックス内に文字を表示する、というようなことをしたいのですが、
どうすればよいのでしょうか?

115 :山崎 渉:03/07/15 09:35

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

116 :デフォルトの名無しさん:03/07/15 10:54
>>114
CBN_SELENDOK

117 :デフォルトの名無しさん:03/07/15 15:01
ダイアログベースのInitDialogで設定ファイルを読み込んで、タスクトレイに常駐
(最小化した時点でウィンドウ非表示かつタスクトレイに常駐)させたいのですが、
InitDialogでは常駐しているのですが、その後にウィンドウが表示されてしまいます。
OnPaintが呼ばれるので、そこで再度最小化して常駐してみたのですが、一瞬
ウィンドウが表示されてしまいます。
ウィンドウが表示されないように常駐させる方法を教えて下さい。

118 :デフォルトの名無しさん:03/07/15 15:26
>>117
リソースエディタでVisibleプロパティをfalseにしとく。

119 :デフォルトの名無しさん:03/07/15 15:39
現在、SDIでWindow内にスタティックコントロールを貼り付けていますが、
実行して表示させるとテキストの背景がグレーで表示されます。
ダイアログアプリケーションの時はWM_CTLCOLORを受信して変更してましたが、
SDIの場合はどうすればよいのでしょうか?

120 :デフォルトの名無しさん:03/07/15 15:47
★オマンコは地球を救う★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html

121 :デフォルトの名無しさん:03/07/15 17:04
スタティック使わないで直接描画かCStaticの派生クラスを自作

122 :デフォルトの名無しさん:03/07/15 17:20
SDIだとWM_CTLCOLORを受信して変更できないのか?

123 :デフォルトの名無しさん:03/07/15 17:26
CFormViewならWM_CTLCOLOR受け取れたはずだが。
ドキュメントビュー使ってないならしらん。

124 :デフォルトの名無しさん:03/07/15 17:41
>121 >122 >123

ヒントありがとうございます。
もしかして、ClassWizardからWM_CTLCOLORが見えないだけかもと思い
手書きで追加してみたら各コントロールを描画する度に、
WM_CTLCOLORが受信されていました。
引き続きやってみます。

125 :119:03/07/15 18:02
1.CBrushのメンバ作成
2.メッセージマップにON_WM_CTLCOLOR()追加
3.OnCtlColor()関数をダイアログクラスからコピーして修正
の手順でダイアログのコントロールと同じように色変更できました。
ありがとうございました。


126 :デフォルトの名無しさん:03/07/15 23:56
>>116
ありがとうございます。
ネットや本でいろいろ調べたんですがやはりよくわかりません。
たとえば、コンボボックスのリストにa,b,c・・・というような表示をしました。
ここで、aを選択した場合、エディットボックスに選択されたaについての説明を表示したいと考えているのですが、
MFCで書いている場合はどこに、どのような記述をすればよろしいのでしょうか。
お手数ですが教えてください。

127 :デフォルトの名無しさん:03/07/16 04:34
Appウィザードで、SDI、Windowsエクスプローラ形式で作成し、
リストビューのPreCreateWindowで、LVS_REPORTフラグを立て、
OnCreateでヘッダーとアイテムを追加しました。

ここまでは問題ないのですが、ツールバーの表示形式の変更ボタンを押しても変化がありません。
フレームクラスのModifyStyleでスタイルは変更しているのですが・・・

ボタンで表示形式を切り替えるには、他にも追加しなければならないコードがあるのでしょうか?


128 :デフォルトの名無しさん:03/07/16 07:02
>>126
前提が書いてないからダイアログとして説明すると…
1. 貼り付けたコンボボックスを右クリックして「イベント...」を選択。
2. >>116のメッセージのハンドラを作成。
3. ハンドラ内でSetDlgItemTextを使ってエディットボックスに文字列を表示。

>>127
> フレームクラスのModifyStyleでスタイルは変更しているのですが・・・
その部分のコードをどうして晒さないかな〜

129 :127:03/07/16 07:13
>>128
>> フレームクラスのModifyStyleでスタイルは変更しているのですが・・・
>その部分のコードをどうして晒さないかな〜

すみません、
ウィザードが自動的に生成するコードなので省略させていただきました。

OnViewStyle内で、下記の様になっています。
pView->ModifyStyle(LVS_TYPEMASK, dwStyle);
pViewはCListViewの派生クラスのポインタで、dwStyleはLVS_LIST等の表示形式です。

130 :デフォルトの名無しさん:03/07/16 11:11
>>129
別に普通にやってりゃ問題ないはずだけどな…
そこを通ってることの確認とSPYでスタイルが変更されていることの確認と
余計なところでスタイルを変更しなおしてないかの見直し…くらいかな。

131 :デフォルトの名無しさん:03/07/16 17:05
Visual C++ & MFC で、WINDOWSフォルダー内のMFC関連のDLLに依存しない
アプリケーションをビルドしたいのですが、方法を教えてください。
単純に開発者のDLLまわりを一緒にビルドできればよいのですが・・・


132 :デフォルトの名無しさん:03/07/16 17:16
スタティックリンク

133 :デフォルトの名無しさん:03/07/16 17:17
>>131
「MFCのスタティックライブラリを使用」

134 :デフォルトの名無しさん:03/07/16 18:31
>>128
ありがとうございました。できました。

135 :117:03/07/16 18:52
>>118
レスありがとうございました。
不可視にしてもダメだったので、OnWindowPosChangingをいじって解決しました。


136 :デフォルトの名無しさん:03/07/16 19:13
>>135
DoModal()だと結局 ShowWindow(SW_SHOWNORMAL) が呼ばれるので「モードレス
ダイアログにする」が正解だった...かな?

137 :小心者:03/07/17 01:49
オンラインのMFCチュートリアルを探しています。
どなたかマイクソロフトのライブラリ以外で
御存知でしたら教えて下さい。
英語版でもいいです。

138 :デフォルトの名無しさん:03/07/17 01:53
>>137
http://www.google.com/

139 :_:03/07/17 01:57
http://homepage.mac.com/hiroyuki44/jaz09.html

140 :131:03/07/17 01:59
>>131
自分のアプリが使用しているDLLを知ったり、
必要なスタティックライブラリを知るにはどうしたらよいのですか?
すいませんが、教えてください。かなりなやみこんでます(泣


141 :?:03/07/17 02:03
http://cappuccino.h.fc2.com/

142 :85:03/07/17 11:18
>>140
プロジェクトの設定を見れば?

143 :デフォルトの名無しさん:03/07/17 16:36
>>140
DependencyWalker

144 :デフォルトの名無しさん:03/07/17 16:46
>>140
ProcessViewer

145 :デフォルトの名無しさん:03/07/17 18:05
AppendMenu等でメニューに項目を追加しました。
OnCmdMsgで CN_COMMANDが来たときにある処理したいので IDを割り当てたんですけど、
nIDの値の制限ってあるのでしょうか?

if(uID & 0x80000000){
// 処理
}

こうやろうと思ったんですけど、全然入ってきませんでした。


146 :145:03/07/17 18:12
0xFFFFまでしか入ってこないのかなぁ。
UINTなのに。

147 :デフォルトの名無しさん:03/07/17 19:08
>>145
DYNAMENU サンプルにあるようなことをしたいの?

148 :デフォルトの名無しさん:03/07/17 23:16
>>145
少くともWM_COMMANDは LOWORD(wParam) だから16ビットだぽ。

149 :デフォルトの名無しさん:03/07/18 00:43
ドキュメント・ビューアーキテクチャ未使用のアプリケーションで、
http://www.datamekanix.com/で配布されている
CSizingControlBarを使用したドッキングバーで、
ひとつのドッキングウィンドウにCToolBarとCListCtrを載せたかったので、
ドッキングウィンドウにCFrameWndを載せて
そのCFrameWndにCToolBarとCListBarを載せるということをやってみたのですが、
一見正常に動いているようなのですが、アプリケーションの終了時に
File:dbgheap.h
Line:1044
Expression:_CrtIsValidHeapPointer(pUserData)
というアサーションが出てしまいます。
このアサーションの原因がわからなくて困っています。
どのようにすれば解決できるのか教えてください。

150 :145:03/07/18 13:27
>>147 >>148
レスどもです。

やはり16Bitでしたか。(´・ω・`)

何がやりたいかというと、動的にメニュー項目が沢山作られると予想できるので、
OnCmdMsgが来たときにnIDのどのBitが立っているかをチェックして処理したかったんです。
すると16Bitじゃ情報が足りなくなるのでUINTのサイズを期待していたんですが…。

何かいい方法はありませんでしょうか?

ちなみに手元にMSDNのCDがないので、DYNAMENUサンプルがどういうものだか
分からないんですが、これってヒントになりますか?



151 :デフォルトの名無しさん:03/07/18 13:57
>>149
ひとつのメソッドを10ページも20ぺーじも書く人?

152 :デフォルトの名無しさん:03/07/18 14:44
>>150
ビットじゃなくて値で判定すればOK。

153 :145:03/07/18 16:07
>>152
16Bitじゃ足りないんですよ。まじで。


154 :145:03/07/18 16:12
メニューの数が65536以上ありうるんです。


155 :デフォルトの名無しさん:03/07/18 16:13
65535個もアイテムのあるメニューから適切なものを選び出すのは生身の人間には実質不可能なので大丈夫

156 :デフォルトの名無しさん:03/07/18 16:13
nID以外で判断しろ。

157 :デフォルトの名無しさん:03/07/18 16:19
どんなメニューだ、それは・・・
65535までは仕様なのでWM_COMMAND飛ばす標準のメニューでやるなら無理。
それぞれのメニューアイテムをユニークにするのでなく、
サブメニューや呼び出された場面などから16ビット以上の値を再計算するようにするしかない。
でも、設計やり直した方が早くね?

158 :145:03/07/18 16:30
>>155
可能性の問題なんで、実際にはないかも。

>>156
それを教えてくれ…

>>157
>設計やり直した方が早くね?
TreeViewでも使った方がいいんじゃないかとは思ってたんですけどね。
一応もらった仕様通りで挑戦したんですが、結論から言うと、無理って事ですかね。
項目にデータを関連づけ出来ればなぁ…。


159 :デフォルトの名無しさん:03/07/18 16:34
>>158
表示されているメニュー項目にだけ動的にIDを割り当てればいいんじゃねーの?

160 :デフォルトの名無しさん:03/07/18 16:38
必要も無いところにこだわって、肝心なとろろに気が回ってない
ダメプログラマの典型ですな。

161 :145:03/07/18 16:50
>>159
あ、それで出来るかも…。
ありがとう。

>>160
別にこだわってないけど、たしかにとろろには気が回ってないよ。
可能かどうかを知るのに質問しちゃ駄目なのか?


162 :デフォルトの名無しさん:03/07/18 17:06
とっくにMFCの質問じゃ無くなっていることには気付よな。

163 :デフォルトの名無しさん:03/07/18 17:12
そもそもメニューの数に制限を無くしたならどんなことしたってIDは足りなくなるだろ

164 :デフォルトの名無しさん:03/07/18 17:21
>>145
一体どんなの作ってるの?www

165 :デフォルトの名無しさん:03/07/18 17:24
>>161
どこかに駄目なんてか書いたかね?
ただ感想を述べたまでだが?

166 :デフォルトの名無しさん:03/07/19 04:00
…ま、6万個以上のメニューを作ろうってのはあからさまに無茶だが。

機能IDの範囲には単に16bitだけじゃなくてもっと微妙な制限が
あったと思う。MFCのテクニカルノートのどこかに書いてあった。

167 :デフォルトの名無しさん:03/07/19 12:17
ドライブとかフォルダの中身をポップアップメニューで展開するアプリあるじゃん。
ああいうのだと6万以上になることもありそうな予感。
動的にID割り振るとしても一つのフォルダ内に70000ファイルとかあったら...(w

168 :デフォルトの名無しさん:03/07/19 12:25
あ、でもそれを一度に画面表示はできないだろうからやっぱ (続き) みたいな
感じで分けるしかないのか。

169 :デフォルトの名無しさん:03/07/19 19:59
つうかメニューって同一階層内でのメニュー数とか、階層の深さの制限とかないのか?
誰か試した香具師は報告すれ。


170 :デフォルトの名無しさん:03/07/19 20:16
自分でやれよ・・・

171 :デフォルトの名無しさん:03/07/19 20:32
激しく使いにくいだろうな。Windowsのスタートメニューにやたら入ってる人いるけど。

172 :デフォルトの名無しさん:03/07/20 15:07
メインとなるウィンドウA(MFC, SDI)からモーダルダイアログBを作成。
Bにフォーカスがあるとき、ユーザーの操作をB上で受け付けて、
SetFocus()でいったんAに移り、onSetFocus内だけで処理を行って
すぐにBへ帰ってくる、という動きをさせると、
タイトルバーがA,B両方ともアクティブ時の色になる。
一応、SetActiveWindow()とか試したけどだめ。
なんかいい方法はないだろうか。

173 :デフォルトの名無しさん:03/07/20 15:16
なぜモードレスでやらないのだろうか

174 :デフォルトの名無しさん:03/07/20 17:57
なぜonSetFocusの処理をBから直接呼ばないのだろうか

175 :172:03/07/20 18:12
>>173
モーダルがいいんだよう。ラブ。

>>174
A(View)がB(Dialog)の親分で、
Aのクラスのメンバを見たりいじったりできないんで、
仕方なくいったんAに処理を委ねる、というまどろっこしーことに。

 A →B 見える、触れる、やりたいほーだい、セクハラ
 A ×←B なんにもできん、なすがまま

モーダルダイアログを常時浮かべて、そっからメインのビューを
ガシガシ使役しているアプリってどうやっているんだろうか。
すまん、2年弱MFC使っててこの程度。

176 :デフォルトの名無しさん:03/07/20 18:49
( ゚Д゚)ポカーン

177 :デフォルトの名無しさん:03/07/20 19:50
全部のメンバの前に public: を付けろ

178 :デフォルトの名無しさん:03/07/20 20:29
>>175
2年目?C++の基礎からやったほうがいいんでない?



っと10ヶ月の漏れがいってみる。

179 :デフォルトの名無しさん:03/07/20 20:36
なんか、「自転車を修理に出す」という当たり前の解決策を思いつかずに
チェーンを全自動でかけ直す装置を作っちゃった科学者のエピソードみたいでほほえましい

ワケネーヨ

180 :172:03/07/21 02:22
あー、当然の失笑を買っちゃったなー。
なんていうか、自分でも釣りとしか思えないような大発見を
ちょうど今、成し遂げたとこなんだよ。
もういろんな意味でヤバい。
基本をおろそかどころかないがしろにしててもある程度組めてしまうのは恐いね。
MFC以前。
ふりだしに返るわ。ありがと。

181 :デフォルトの名無しさん:03/07/21 10:44
>モーダルダイアログを常時浮かべて、そっからメインのビューを
>ガシガシ使役しているアプリってどうやっているんだろうか。
そんなアプリ、ないと思う……。
モーダルの意味わかってんのかな。

182 :デフォルトの名無しさん:03/07/21 10:49
まぁメインにユーザ定義メッセージでも投げてそのハンドラで処理すればいいだけなんだけどな

183 :デフォルトの名無しさん:03/07/21 13:50
>>182
ひらめいたのはそれか?wwww


10ヶ月の漏れがいうのもなんだが
ポインタを使えよ。

184 :デフォルトの名無しさん:03/07/21 14:11
VC++6.0でCFormViewを基本クラスにしたSDKのアプリを作っています。
ボタンのプロパティにある「標準のボタン」を動的に変更したいのですが、

m_mybutton.SetButtonStyle(BS_DEFPUSHBUTTON,TRUE);

のように書いても他のコントロールにフォーカスが移ると、
元に戻ってしまいます。
これは、どうやるものでしょうか?

185 :デフォルトの名無しさん:03/07/21 14:12
>>183
どこにメンバ変数って書いてんだよ

186 :デフォルトの名無しさん:03/07/21 14:22
>>184
変更前のボタンにBS_DEFPUSHBUTTONが残ってるんじゃないか?
そいつを外したらどう?

187 :デフォルトの名無しさん:03/07/21 14:45
>>186
レスありがとうございます。
う〜む。他に標準のボタンが無くてもダメでした。
しかし、
複数ボタンがあって、最後に押したボタンが標準のボタンになるように
しようと思っているので、ボタンが押されたときに、SetButtonStyleを
実行していたのですが、
他のハンドラ(他のコントロールにフォーカスが移ったときとか)で実行すると
うまく動きました。
どうも、ボタンのクリックで自分自身を変えるときだとダメっぽいです。
なんででしょう?

188 :184:03/07/21 14:49
あれれ。ボタンを押すと、
リソースエディタのプロパティで設定してある状態に戻ってしまうだけみたいです。
その前に、SetButtonStyleで変更したものがすべて元に戻るようです...


189 :186:03/07/21 15:12
>>187-188
ダイアログベースのときにはCDialog::SetDefID()やDM_SETDEFIDというのがあるが…
CFormViewではどうかなぁ。

190 :デフォルトの名無しさん:03/07/21 15:14
DM_SETDEFIDを投げてやればいいのだが
MFCでどうやるのかは知らん

191 :デフォルトの名無しさん:03/07/21 15:51
>>183
久々にワラタw

192 :184:03/07/21 15:56
>>189-190
ありがとうございます。
::SendMessage(this->GetSafeHwnd(), DM_SETDEFID, IDC_MYBUTTON, 0L);
のような感じでうまくいくみたいです。

193 :デフォルトの名無しさん:03/07/21 16:21
>>183
10ヶ月たってやっとポインタを覚えたのでポインタ言いたいだけちゃうんかと

194 :183:03/07/21 16:27
>>185
ダイアログとビューでやりとりするんだから
メンバ変数にウィンドウのハンドル・ポインタでも保持しないと無理だろうが。
ビューとダイアログが1対1で対応してるとは限らんだろ。
それともお前はグローバル変数を使うのか?www

>>191
わからないなら黙ってろ。

195 :デフォルトの名無しさん:03/07/21 16:36
>>194
ポカーン・・・・・・だからそのハンドル使って>>182すれって言ってんだろ。
それにViewへのポインタならAfxGetMainWnd()->GetActiveView()で取れるからダイアログにわざわざViewのポインタを渡さなくても良い。

おまえに説明すると二度手間ってことがわかった。さすが10ヶ月。

196 :デフォルトの名無しさん:03/07/21 16:37
>>183
おまえ>>172と同レベルだな。
基本からやり直して来い。

197 :183:03/07/21 16:42
>>195
>AfxGetMainWnd()->GetActiveView()

複数のフレームウィンドウがある場合を考慮に入れないのか?
っちうか、汎用性の高いビュークラスを作ったことないんだろうね。
いずれにしてもビューのポインタを渡した方が安全。

198 :デフォルトの名無しさん:03/07/21 16:43
>>172より
>メインとなるウィンドウA(MFC, SDI)からモーダルダイアログBを作成。

どこに複数あるのか問いたい。

199 :デフォルトの名無しさん:03/07/21 16:45
ハンドル渡してメッセージ飛ばした方が安全。

200 :デフォルトの名無しさん:03/07/21 16:46
安全って・・・w

201 :デフォルトの名無しさん:03/07/21 16:49
>>197
独自Viewのポインタ変数をダイアログに持たせるどこが汎用的なんだ?

202 :デフォルトの名無しさん:03/07/21 16:50
思いっきりビューの型に依存してるな

203 :デフォルトの名無しさん:03/07/21 16:52
>>197
おまえ10ヶ月たってやっと汎用性って言葉覚えたから汎用性って言いたいだけちゃうんかと

204 :183:03/07/21 17:07
>>198
>>197を再読。

>>201
>AfxGetMainWnd()->GetActiveView()
で取得したポインタが目的のビュー(ドキュメント)とは
限らない。

205 :デフォルトの名無しさん:03/07/21 17:10
>>204
仮にウィンドウもビューも複数あったとして、ダイアログはポインタをどう使うんだ?
まさか直接メンバ関数呼ぶわけじゃないよな。汎用性低いもんな。

206 :デフォルトの名無しさん:03/07/21 17:13
>>172を見る限りSetFocusやSetActiveWindow使ってるんだから、欲しいのはアクティブビューのものでよいと思うんだが。

207 :デフォルトの名無しさん:03/07/21 17:21
>>197
フレームウィンドウが複数あってもウィンドウのビューのポインタが取れるから問題ないだろ。
そのビューからダイアログ出してんだから。

208 :デフォルトの名無しさん:03/07/21 17:32
197がどんな意味で汎用性という言葉を使ってるのか知らんが、
クラス間の依存関係を無くしてダイアログとViewを使いまわしできるように
するというなら、ハンドルを渡してSendMessageでメッセージを送るのが一番だと思うが。
つまり>>182
>>183はどう見ても駄レスだろう。

209 :デフォルトの名無しさん:03/07/21 18:50
>>183
ところでどのポインタをどういう風に使うんだ。

210 :デフォルトの名無しさん:03/07/21 18:53
↓183の釣れた発言

211 :デフォルトの名無しさん:03/07/21 18:53
「メンバ関数を呼び出す」で図星だったんだろ。
本当に汎用性って言ってみたかっただけらしいな。

212 :デフォルトの名無しさん:03/07/21 19:39
SetTimer() を使って1sごとにエディットボックス1をOnTimer(UINT nIDEvent) 内で更新させているのですが、
これだと、他のエディットボックスに文字を打ち込もうとすると打ち込んだ文字も消えてしまいます。
どうすれば、打ち込んだ文字が消えずにすむのでしょうか?
もしくはエディットボックス1のみを更新する方法はあるのでしょうか?


213 :デフォルトの名無しさん:03/07/21 19:44
>>212
UpdateDataじゃなくてSetWindowText使え

214 :デフォルトの名無しさん:03/07/21 20:09
>>183
10ヶ月もやっててそのレベルじゃ完全にVBに戻ったほうがいいぞ
煽りじゃないマジレスだ
VBやってたころは「俺はできる」と思ってたんだろ?


215 :江東支店:03/07/21 20:13
http://elife.fam.cx/a007/





216 :183:03/07/21 20:34
>>214
誰もVC++使い出して10ヶ月なんて言ってないだろ。
MFCを使い出してから10ヶ月って事だよ。
VC++なら5年くらい前からやってんだよ。バーヤ、バーヤ。

217 :デフォルトの名無しさん:03/07/21 20:38
汎用性意識するならメッセージだな。マルチスレッド化も楽だし。

218 :デフォルトの名無しさん:03/07/21 20:42
>>216
それじゃなおさらヤバイだろ。

219 :デフォルトの名無しさん:03/07/21 21:01
ワロタ

220 :デフォルトの名無しさん:03/07/21 21:36
たしかにw

221 :デフォルトの名無しさん:03/07/21 21:38
>>213
ありがとうございました。できました!

222 :デフォルトの名無しさん:03/07/21 22:05
>>216
アハハ・・・(´▽`;)

223 :デフォルトの名無しさん:03/07/21 22:33
UINT SetTimer( UINT nIDEvent, UINT nElapse, void
(CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );

に渡すnIDEventの値は0以外のタイマ識別子を指定する、とヘルプには載っていますが、
一部の書籍などでは、0を指定すると未使用のタイマ識別子が返される、とあります。
特に普通にOnTimer()を使用するなら、はじめから0を指定して、あとでKillTimerするときは、
返された値を使うのが簡単なように思うのですが、この考えっていけないのでしょうか?

VC++6.0(SP5)、OSはWin2000もしくはXPです。


224 :デフォルトの名無しさん:03/07/21 22:47
どの辺が簡単になるんだべ?

225 :デフォルトの名無しさん:03/07/21 22:54
nIDEventの値がシステム任せにできる。



226 :デフォルトの名無しさん:03/07/21 23:05
MSDNライブラリなんかだと、SetTimer()の戻値って、
「正常終了した場合は、新しいタイマのタイマ識別子を返します。」
ってなってるけど、SetTimer(1,500,NULL)とかって指定しても、
戻値が2とか3とかもありえるってことでしょ?
だったら、はじめから0を指定して、戻値をUINTで保存しておいて、
いらなくなったらKillTimer()したほうが合理的に感じるけど。
タイマーひとつ使うとき限定だけど。

227 :デフォルトの名無しさん:03/07/21 23:19
ありえねーよ

228 :デフォルトの名無しさん:03/07/21 23:21
>>227
荒らしか。つぎ!!


229 :デフォルトの名無しさん:03/07/21 23:22
一部の書籍ってどれよ?

230 :デフォルトの名無しさん:03/07/21 23:27
もしかしてシステムがタイマIDを決めてくれるって、
>If the function succeeds and the hWnd parameter is NULL,
>the return value is an integer identifying the new timer.
これのことか?::SetTimerの英語版MSDNだけど。
これによればタイマIDに0じゃなくて、ウィンドウハンドルにNULLを渡せば、
ってことになるけど。

231 :デフォルトの名無しさん:03/07/21 23:28
SetTimer(1〜
KillTimer(1)

の方が余程楽だとおもうんだが・・・

232 :デフォルトの名無しさん:03/07/21 23:30
Windows95APIバイブルに書いてあるね。どっちが正しい?


233 :デフォルトの名無しさん:03/07/21 23:31
そら最新のドキュメントの方が・・・

234 :デフォルトの名無しさん:03/07/21 23:32
>>231
SetTimer(1〜で1以外の値が生成されて返ってきたら、KillTimer(1)は失敗する。
SetTimerの戻値は保存するべきでしょ。普通。


235 :デフォルトの名無しさん:03/07/21 23:35
あら?
SetTimerって仕様が変わったの?
今、SetTimer(0, ...)ってやったら1が返ってきた。
これは古い仕様?

236 :デフォルトの名無しさん:03/07/21 23:36
nIDEventに0を指定するとSetTimer()は成功するのか。
0以外の値を指定しなさいってなってるよね。
これってもしかして裏技?

237 :デフォルトの名無しさん:03/07/21 23:39
明らかに0以外を渡せって書いてあるんだから0以外を渡すべきだろう。


238 :デフォルトの名無しさん:03/07/21 23:40
その一部の書籍を窓から投げ捨てろって事でよろしいか?

239 :デフォルトの名無しさん:03/07/21 23:41
一番確実なのは0以外を渡して戻り値をチェックだな。

240 :デフォルトの名無しさん:03/07/21 23:41
>>237
0を渡しても大丈夫と言う事実には目をつむれと・・・


241 :デフォルトの名無しさん:03/07/21 23:42
>>238
明日、ちり紙交換屋が大繁盛(w


242 :デフォルトの名無しさん:03/07/21 23:43
0以外ってことは、負値でもいいんだね!!


243 :デフォルトの名無しさん:03/07/21 23:44
このIDって論理的値?
例えば100000なんて指定しても動作保証されるのかな?


244 :デフォルトの名無しさん:03/07/21 23:47
>>239
1を渡して駄目なら2。
2を渡して駄目なら3。
3を渡して駄目なら4。
  :
  :
  :

SetTimer()をやるたびにこんなロジック組めないよ。
大体IDの上限値が明示されて無いし。

245 :デフォルトの名無しさん:03/07/21 23:48
SetTimerの戻り値が駄目なパターンってどういう場合?

246 :デフォルトの名無しさん:03/07/21 23:49
>>245
0が返ってきたら失敗。


247 :デフォルトの名無しさん:03/07/21 23:50
>>244
これに限らず関数使うのに戻り値のチェックやるのは当然だと思うが・・・
つか上限っていうかUINTの範囲だろ

248 :デフォルトの名無しさん:03/07/21 23:51
>>240
つむらなくてもいいがもし動かなくても文句も言うなってこった

249 :デフォルトの名無しさん:03/07/21 23:52
大体1を渡せば成功するのはわかっているのだが、
だからといって1と決めうちしちゃっていいものなの?
(まあほとんど99.9%ぐらいは成功するだろうが。)
UINTの範囲だと、IDの管理自体をコーディングでやらんといけないわけよね。


250 :デフォルトの名無しさん:03/07/21 23:52
>>247
パラメータがUINTでも2バイトまでしか許容して無いのもあるし。

しかし、SetTimerのIDはUINT_PTRだから、ハンドルやポインタなどの一意の識別氏を使用してタイマーを作成することも考慮されているだろう。
SetTimerが失敗する状況はわからないが、IDが不正ということは無いだろうから一度失敗したからIDを変えてもう一度ためすというのは不毛だと思う。

251 :デフォルトの名無しさん:03/07/21 23:55
SetTimer()って簡単そうで、明確な使い方を答えられるものはいないと
言うことでおしまいでいいですか?

252 :デフォルトの名無しさん:03/07/21 23:55
>>250
いや別に再度試すかどうかはそのプログラムの仕様によるだろ。

253 :デフォルトの名無しさん:03/07/21 23:56
>パラメータがUINTでも2バイトまでしか許容して無いのもあるし。

将来の拡張性を考慮して?


254 :デフォルトの名無しさん:03/07/21 23:59
だから、
m_TimerID = SetTimer( 1, ...);
if( m_TimerID != NULL)
{
  KillTimer(m_TimerID);
}
で宜しいか?


255 :デフォルトの名無しさん:03/07/22 00:00
>>254
よろしいってば。

256 :デフォルトの名無しさん:03/07/22 00:01
結局、みんな想像でしか言っていない(w
動いてるのは偶然と言うかたまたまということだ。


257 :デフォルトの名無しさん:03/07/22 00:02
>>256
おまえさっきから茶々入ればかりだな

258 :デフォルトの名無しさん:03/07/22 00:04
よろしくないよ
SetTimer( 1,...);
ってことはCWnd::SetTimerだと思うが、
このメソッドはHWNDを渡すから戻り値はタイマーIDじゃない

259 :デフォルトの名無しさん:03/07/22 00:05
>>254
でも、なんか釈然としないよな。
SetTimer()の戻値が必ずしも1と言うことでなければ、
最初から1なんて指定しないで、システムに勝手にIDふってくれ、
戻値であとで殺すから、という使い方にしたい。
だったら0のほうが俺は好き。

260 :デフォルトの名無しさん:03/07/22 00:05
>>258
・・・・え?何言ってんの?

261 :デフォルトの名無しさん:03/07/22 00:07
>>258
関数が成功すると、新しいタイマー ID が返ります。関数がタイマーの作成に失敗すると、0 が返ります。

って書いてあるよ。

262 :デフォルトの名無しさん:03/07/22 00:08
私が試してみると、
CWnd::SetTimer(1,1000,NULL);
の戻値は1でした。タイマーIDがそのまま返ってきた・・・


263 :258:03/07/22 00:09
俺なんかずれてた?

MSDNより
> If the function succeeds and the hWnd parameter is not NULL, then the return value is a nonzero integer. An application can pass the value of the nIDEvent parameter to the KillTimer function to destroy the timer.

この関数が成功すると、hWndがNULLでないときは非0が返ります。
アプリケーションはnIDEventに渡した値を使ってKillTimerを呼び出してタイマーを削除することが出来ます。

264 :デフォルトの名無しさん:03/07/22 00:10
>>259
まぁIDに0を渡してもエラーにならないのは釈然としないが、
ドキュメントに明記してある以上、0以外のUINTを渡して、
戻り値を保存してそれを識別用に使うのが、動作的にも
ドキュメント的にも確実だろう。

265 :デフォルトの名無しさん:03/07/22 00:11
>>262
そりゃもうわかりきってるんだってば。
今話してるのは、0を渡しても1(成功値)が返ってくることの謎と、
1を渡しても1以外の値が返ってくる可能性はあるのかってことだ。

266 :デフォルトの名無しさん:03/07/22 00:12
>>263
その非0がタイマーIDなんじゃないのかしら。
それってCWnd::SetTimer()じゃなくて::SetTimer()1の説明かと。

267 :258:03/07/22 00:14
>>266
うん、そうだけど。
MFCのソースは
_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse,
void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD))
{ ASSERT(::IsWindow(m_hWnd)); return ::SetTimer(m_hWnd, nIDEvent, nElapse,
lpfnTimer); }

なんだよねぇ。
どっちのドキュメントも正しいとしたら、思いっきりアンドキュメントな動作を利用してくれちゃってる、なんかムカつく。

268 :デフォルトの名無しさん:03/07/22 00:15
関数が成功すると、新しいタイマー ID が返ります。関数がタイマーの作成に失敗すると、0 が返ります。

の「新しいタイマー ID が返ります。」の正確な意味が知りたい。


269 :183(本物):03/07/22 00:15
>>207
お前全然わかってねぇな。どのビューから呼び出したって
>AfxGetMainWnd()->GetActiveView()
で取れるポインタじゃ同じビューしか操作できねーだろうが。
複数のフレームに同じビューがあり違うドキュメントを表示すること
だってあるだろ?ちったぁ考えろ。

>>209
ポインタ使ってPostMessageでもSendMessageでもすればいいじゃないか。

>>216 != 183
騙りまでして、必死だなwww

270 :デフォルトの名無しさん:03/07/22 00:16
というか日本語版にはCWnd::SetTimerのも::SetTimerのも戻り値はIDだと明記されてる。

271 :デフォルトの名無しさん:03/07/22 00:19
>>269
はい、バカが醜態晒しに来た。
>ポインタ使ってPostMessageでもSendMessageでもすればいいじゃないか。
これじゃ>>182の通りだろ。だから>>183は駄レスだって言われんの。

272 :デフォルトの名無しさん:03/07/22 00:20
::SetTimer()のプロトタイプは、

WINUSERAPI
UINT
WINAPI
SetTimer(
HWND hWnd ,
UINT nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc);

となっている。

273 :デフォルトの名無しさん:03/07/22 00:22
>>271
放置よろしこ

274 :デフォルトの名無しさん:03/07/22 00:23
>>269
おい、汎用性はどこ行った?(苦笑

275 :183(本物):03/07/22 00:23
>>271
>>195嫁。

276 :デフォルトの名無しさん:03/07/22 00:24
誰かインシデントを消費してSetTimerの動作を問い詰めてくれる神はいないのか?

277 :デフォルトの名無しさん:03/07/22 00:24
結論出そうに無いから、
UINT m_TimerID=SetTimer(1, ...);
if(m_TimerID)
{
  KillTimer(m_TimerID);
}
でいっとくかな・・・
テスト十分にして問題なければ、これでいいでしょ。


278 :デフォルトの名無しさん:03/07/22 00:25
>>275
その前に>>183を説明してみ。

279 :デフォルトの名無しさん:03/07/22 00:25
>>276
オレもそう思った(w


280 :デフォルトの名無しさん:03/07/22 00:28
>>276
インシデントを消費するに値する問題かどうか悩む〜。

281 :デフォルトの名無しさん:03/07/22 00:29
>>277
誰か背中を押してやれ(w


282 :デフォルトの名無しさん:03/07/22 00:29
>>269
おまえ・・・自分でPostMessageでもSendMessageでもすればいいと言いながら
「メッセージ投げればいい」と言う相手に対して「ひらめいたのはそれか?」って・・・
頭大丈夫かよ

283 :183(本物):03/07/22 00:30
>>278
182は「メインにユーザ定義メッセージを飛ばす」って
書いてますが。ダイアログを使って一意のビューとやりとりをするなら
ビューのポインタを渡してビューにメッセージを送るべき。

以上。

284 :デフォルトの名無しさん:03/07/22 00:30
>>200
スレッド境界かな。
なんせモーダルダイアログだから、何があっておかしくないよ。

285 :デフォルトの名無しさん:03/07/22 00:31
>>277
ドキュメントによればそれで問題ない、としか言えないよな。

286 :デフォルトの名無しさん:03/07/22 00:33
>>283
汎用性はぁ〜?

287 :デフォルトの名無しさん:03/07/22 00:34
SetTimer( hValidWnd, 0, 〜

のときは「ID=0の」タイマが作成されるみたいね。
実際、飛んでくる WM_TIMER もIDが0となってる。

よってIDに0を指定すればID=0のタイマができるが、その成功を
伝えるために戻り値は0以外となり、矛盾が生じるので0は指定
しないでねってことだな。

288 :デフォルトの名無しさん:03/07/22 00:34
>>285
よし、決めた。
と言うことで、みなさんありがと。


289 :デフォルトの名無しさん:03/07/22 00:34
>>283
ハンドルを使うとフレームだろうがビューだろうがダイアログだろうが渡せて汎用性が高いですよ(ニヤニヤ

290 :デフォルトの名無しさん:03/07/22 00:35
>>287
マジ?
目からうろこ。


291 :デフォルトの名無しさん:03/07/22 00:39
>>287
ほんとだ。ちなみにKillTimer(0)も機能する(w


292 :デフォルトの名無しさん:03/07/22 00:40
>>283
「メイン」に引っかかってたのか。そら悪かった。最初の質問にメインのウィンドウからって
書いてあると思ったがその後にViewとやりとりって書いてあるな。
だがポインタ渡すよりハンドル渡してメッセージ飛ばした方が汎用性は増す。
それこそメインだろうがビューだろうが。

293 :デフォルトの名無しさん:03/07/22 00:41
>>287によると、
UINT m_TimerID=SetTimer(0, ...);
if(m_TimerID)
{
  KillTimer(m_TimerID);
}
はKillTimer(m_TimerID)で失敗するね。

294 :_:03/07/22 00:43
http://homepage.mac.com/hiroyuki44/

295 :結論:03/07/22 00:43
>>223
そんな書籍は窓から投げ捨てろ

296 :デフォルトの名無しさん:03/07/22 00:44
>>293
KillTimer(m_TimerID)でタイマーは破棄されませんでした。
やっぱ、ドキュメント通りに使うのが混乱しないかも。

297 :デフォルトの名無しさん:03/07/22 00:45
>>295
SetTimer()だけのためにそんなことはできません(w


298 :デフォルトの名無しさん:03/07/22 00:47
>>295
オレは赤ペン先生になって修正しておいたよ。


299 :デフォルトの名無しさん:03/07/22 00:47
SetTimerに適当なことが書いてあるなら、他のところにも書いてあるかもよ。
ってゆーかその本の名前教えてくれよ。

300 :デフォルトの名無しさん:03/07/22 00:48
>>299
>>232

301 :デフォルトの名無しさん:03/07/22 00:49
>>299
see >>232

302 :デフォルトの名無しさん:03/07/22 00:49
>>300
うぉ、マジだ。
ずっといたつもりが見落としてた・・・

303 :デフォルトの名無しさん:03/07/22 00:51
みんなもうお疲れのようだ。今日はこのスレがんばったよ。

304 :デフォルトの名無しさん:03/07/22 00:54
SetTimer()か。身近にこんな罠があったとはね。みなさんおやすみ。

305 :デフォルトの名無しさん:03/07/22 00:56
>>302
訳者は気を利かせたつもりが、その矛盾に気が付かなかったと言うことか。

306 :_:03/07/22 00:58
http://homepage.mac.com/hiroyuki44/jaz09.html

307 :183(本物):03/07/22 01:22
>>292
いや、ここは「MFC限定」スレだ。だからハンドルがMFCのクラスで隠蔽されている場合には
極力ハンドルを使わないように回答するのが正解。
だからポインタを使用すべき。

308 :デフォルトの名無しさん:03/07/22 01:24
>>307
CWndポインタはスレッドをまたげないしCWnd::FromHandleなんか使って渡されてしまったら突然消滅してクラッシュもあり得る。

309 :デフォルトの名無しさん:03/07/22 01:26
>極力ハンドルを使わないように回答するのが正解。
は正解ではない罠

310 :183(本物) ◆bYdanalJ2c :03/07/22 01:31
>>216 == 307 だろ?
騙り必死だな。だが漏れは age てない。

311 :デフォルトの名無しさん:03/07/22 01:36
騙りかよ

312 :デフォルトの名無しさん:03/07/22 01:42
わかった。みんなでポインタ使えばいい。もう寝よう。

313 :デフォルトの名無しさん:03/07/22 01:44
>>183
ポインタの勉強が終わったら、マルチスレッドの勉強でもするといい。
ポインタは安全でもない(ぬるぽ->SendMessage()とか)し、万能でもな
い(CWndポインタはスレッドには渡せないとか)のが良く分かるであろう。

314 :216 = 307:03/07/22 01:46
SendMessage()のLPARAMでポインタを渡す。
これで丸く治まるよね。

315 :デフォルトの名無しさん:03/07/22 07:00
ああ、香ばしいニオイが……

316 :デフォルトの名無しさん:03/07/23 21:29
↓次の電波ドゾーw

317 :デフォルトの名無しさん:03/07/24 01:46
MFCを学習する前にATLをやったほうが効率がいいよな。

318 :デフォルトの名無しさん:03/07/24 01:49
ATLをやったらMFCにはもどれねー

319 :デフォルトの名無しさん:03/07/24 02:06
スレ違い

320 :デフォルトの名無しさん:03/07/24 06:02
MFCさえあればAPIなんかイラネ

321 :デフォルトの名無しさん:03/07/24 06:31
↑すごい電波を発見しました隊長!

322 :体長:03/07/24 09:29
    /\___/ヽ   ヽ
   /    ::::::::::::::::\ つ
  . |  ,,-‐‐   ‐‐-、 .:::| わ
  |  、_(o)_,:  _(o)_, :::|ぁぁ
.   |    ::<      .::|あぁ
   \  /( [三] )ヽ ::/ああ
   /`ー‐--‐‐―´\ぁあ

323 :デフォルトの名無しさん:03/07/24 13:57
>>320
MFCを使っていれば必然的にAPIも使っているわけだが。


324 :デフォルトの名無しさん:03/07/24 14:00
>>323
ネタニマジレス、アーハズカシハズカシ

325 :デフォルトの名無しさん:03/07/24 17:46
MFCで開発しながらAPIを直接叩く奴は敗北者

326 :デフォルトの名無しさん:03/07/24 17:56
もういいって。

327 :デフォルトの名無しさん:03/07/26 12:05
C♯やマナゲドC++とか出てますが、
ぶっちゃけ、MFCにまだ未来はありまつか?

MFCオンリーでやってきた漏れには心配でなりません。


328 :デフォルトの名無しさん:03/07/26 12:14
うるせーな、必要なら他のやれよ。自分で考えろタコ。

329 :デフォルトの名無しさん:03/07/26 16:31
未来はありまつか?
なんて聞いてるようじゃどのみちダメだとおもう

330 :デフォルトの名無しさん:03/07/26 16:51
>>327は「けけけ ◆rCmM5mBD26」。
ググったら分かるが相当に痛いw

331 :327:03/07/26 17:48
>>328
「私には分かりませんのでご自分でお調べになられてはどうでしょうか」と受け取りました。

>>329
MSは過去のものはあっさりと切り捨てるので怖いです。
「ダメ」というのは、何がダメなんですか?

>>330
人違いです。
ググってみましたが、ヒットしません。


いきなりMFCが捨てられるということはないですよね?
誤解のないように言っておくと、漏れはMFCを支持してるんですよ。


332 :デフォルトの名無しさん:03/07/26 17:57
もういいって。

333 :327:03/07/26 17:57
>>331は私ではありません。

334 :327==331!=333:03/07/26 18:03
普通に聞いただけなのに...
このスレ見てなかったんだけど、前にこんな荒らしでもあったのか?

なんというか、さすが2chという反応。
もういいでつ。


335 :333:03/07/26 18:12
>>334さん、勝手に変な事書かないで下さい。

336 :327:03/07/26 18:46
>>335
では、>>333 の名前が何で327?
そっちこそ、紛らわしいこと書かないで下さい。


337 :デフォルトの名無しさん:03/07/26 18:48
君全然おもしろくないよ

338 :183 ◆bYdanalJ2c :03/07/26 21:07
このスレには騙りが常駐してるからな。
トリップをつけることをお勧めする。

339 :デフォルトの名無しさん:03/07/26 22:33
>>338
トリップつけるほど大したこと書いてないくせに (´゚c_,゚` ) プッ

340 :デフォルトの名無しさん:03/07/26 23:02
どうせ電波がいないとレスが進まないわけだし
しばらくは183ネタで逝こうよ > ALL

341 :デフォルトの名無しさん:03/07/26 23:09
騙り煽りはJava&Del厨だろ?放置しろよ。

342 :デフォルトの名無しさん:03/07/28 02:25
CFtpConnection や CFtpFileFind あたりを使ってftpサーバーに
アクセスするアプリを作っているのですが、
あるサーバーのパス内になるファイル数を取得する方法があれば
教えてください。
ちなみに今は、
CFtpFileFind のFindNextFileで探して数えていますが、ロスタイム
大きいです
よろしくお願いします


343 :デフォルトの名無しさん:03/07/28 03:04
Visual C++ .NET Standard 2003
http://shop.microsoft.com/Referral/Productinfo.asp?siteID=11511

初心者ですし金もない学生なので↑をかって間違いないよな?
だれかアドバイスください。

344 :_:03/07/28 03:05
http://homepage.mac.com/hiroyuki44/jaz08.html

345 :343:03/07/28 03:06
それにしても、VC++にはstd.版しかないのか。
じゃあ一般的に言われてるPro.ってのはVS .NETのことなんだよな?
っていうか、VS .NETはVC++の10倍くらい高い。とても手が出ない。

346 :デフォルトの名無しさん:03/07/28 03:15
>>345
学生ならstdで十分じゃない?

347 :デフォルトの名無しさん:03/07/28 03:16
商品名 Visual C++.NET 2003 Standard アカデミック版
標準価格 オープンプライス
販売価格 7,580 円 
http://www.ascii-store.com/catalog.cgi?id=43997

商品名 Visual Studio .NET 2003 Professional アカデミック版
標準価格 オープンプライス
販売価格 21,980 円 
http://www.ascii-store.com/catalog.cgi?id=43990

348 :346:03/07/28 03:16
でいうか、アカデミック版買えば?

349 :346:03/07/28 03:18
>>347
ウフォッ いい男

350 :デフォルトの名無しさん:03/07/28 03:19
↑うわぁーやすっ!
こんなのがあるんだ。アカデミックだと質が劣ったりしない?

351 :デフォルトの名無しさん:03/07/28 03:40
Visual Studio .NET Academic - $99
http://msdn.microsoft.com/vstudio/productinfo/overview/academic/pricing/default.aspx

検索してみて↑が一番価格がよかったんだけど、大丈夫でしょうか?
パソコンは英語版なので、英語版のヤツを探してみました。

352 :デフォルトの名無しさん:03/07/28 04:04
ってか、>>347のリンクではProfessionalのアカデミック版としてるのに、
http://msdn.microsoft.com/vstudio/productinfo/overview/default.aspx
では、アカデミックとプロフェッショナルはそれぞれ別のバージョンとして
紹介されてるんだけど、どういうことだ?

間違いなければ、
http://msdn.microsoft.com/vstudio/productinfo/overview/default.aspx
↑のVisual Studio .NET 2003 Academic
http://msdn.microsoft.com/vstudio/productinfo/overview/academic/overview/default.aspx
ってやつに決定しようと思うんだが。

だれか教えてくれ

353 :デフォルトの名無しさん:03/07/28 08:09
ttp://www.microsoft.com/japan/msdn/vstudio/productinfo/overview/default.asp
日本のサイトにはアカデミックの記述がないな。

ところでここは MFC限定スレ なんだが……
↓で聞くべきではないのか?

VisualStudio.NET(MSDN Deluxe) Part10
ttp://pc2.2ch.net/test/read.cgi/tech/1053500463/l50

354 :デフォルトの名無しさん:03/07/28 12:20
アカデミック版だけ悪血ベーションがあるというのは本当でつか?

355 :デフォルトの名無しさん:03/07/28 18:02
>>354
マジ

356 :デフォルトの名無しさん:03/07/29 02:23
というわけで、仕切り直しで
さっさと342の質問に答えてやろうぜ


357 :デフォルトの名無しさん:03/07/29 02:36
>>356
じゃあ自分が答えろよ

358 :デフォルトの名無しさん:03/07/29 02:37
>>356
鯖にdirコマンド送れば一発だろうよ。

359 :356:03/07/29 03:45
すいません、素直に言います。ボク342です
直後に激しくスレ違いの学生クンに入られて災難です(^^;

>>358
それしか方法なさそうですか?
具体的にどうすればよいのですか?
CFtpConnection 、 CFtpFileFind あたりを駆使して可能ですか?

 

360 :343:03/07/29 04:09
>直後に激しくスレ違いの学生クンに入られて災難です(^^;
すまそ、わるかったな。w

361 :デフォルトの名無しさん:03/07/29 07:01
>>359
(゚∀゚)

362 :デフォルトの名無しさん:03/07/29 07:22
>>359
CSocketはどうか?

363 :_:03/07/29 07:29
http://homepage.mac.com/hiroyuki44/

364 : :03/07/29 08:24
>>359

CFtpConnection::Command() で "dir" でも送って、CInternetFile::ReadString() で
一行ずつ結果を取って、ファイルらしき行を調べてゆくのが良いと思う。

ちなみに #ifdef _WIN32_IE >= 0x0500 でくくられてるんで、IE 5.x 以降が必要。
コンパイルオプションに -D_WIN32_IE=0x600 とかつけること。

>>362
それやると客から「ftp のプロクシの設定が効かないんですけど...」とか言われて
激しく「対応してません・・・(恥;)」ってことになるから、Win32 ならおとなしく
Internet 関連の API 叩くのが吉だと思う。

365 :デフォルトの名無しさん:03/07/29 08:48
初心者スレでレスが付かなかったので、こちらで
お願いします。

SSE2で整数の内積演算のプログラミングをしたいのですが、
本がなくてさっぱりわかりません。
例えば、unsigned char a[8] b[8]との内積の和
a[0]*b[0]+a[1]*b[1]+....
をSSE2で書くと、どのようになるのでしょうか。
よろしくお願いします。
また、MMXで書いたものはあるのですが、
SSE2に直すことでさらなる速度アップは望めるのでしょうか。


366 :デフォルトの名無しさん:03/07/29 08:59
>>365
ここはMFCスレ、アセンブラスレに逝きなはれ

367 :デフォルトの名無しさん:03/07/29 16:25
>>366 そうか!ありがとうございます。
SSEはアセンブラでしたね!

368 :デフォルトの名無しさん:03/07/29 16:33
>>367
ハァ?
こやつには使えないに一票。

369 :デフォルトの名無しさん:03/07/29 16:39
つーかそれ以前の問題だよな…

370 :356:03/07/29 19:22
>>364
ありがとうございます
CInternetFile::ReadString() する前にOpenFile()する必要があると
思うのですが、その際の指定ってどうすればよいのですか?



371 :デフォルトの名無しさん:03/07/29 19:24
キキキタタタタ━━━((゜(゜∀゜)゜))━━━!!!!PART1
http://link.iclub.to/adalt/
http://link.iclub.to/amazon/
http://link.iclub.to/docomo/
http://link.iclub.to/google/

372 : :03/07/29 19:32
>>370
Open しない。

373 :デフォルトの名無しさん:03/07/29 19:53
>>370
MSのftpだとdirで取れるが、telnetで試したら
無理だったのでやっぱFindFileしないとだめかもしれん。

374 :デフォルトの名無しさん:03/07/30 12:36
質問失礼します。

VC++6.0 MFC にて、MDIのドット打ちツールを作成しています。
画像の変更をGUIにて実現したいのですが、diblookサンプル以外のやり方ってないでしょうか?
CPenを使って1ドットづつ描いてみたりもしたのですが、遅すぎてダメでした。
diblookサンプルの様に、小難しくなく、イメージとパレットを触りたいのですが。。。

375 : :03/07/30 15:24
>>373
dir がダメなら ls で良いと思うけど。でも確かにそこらを隠蔽してるのが
FindFile だからそっち使うのが良いような気もする。

376 :デフォルトの名無しさん:03/07/30 21:51
VS .netで、ダイアログにhtmlのselectタグみたいなものをつけたいな、と思って、
CComboBoxでつけてみました。
しかし、選択肢が2つあったとしても、プルダウンリスト(?)の高さが1行しかなく、もう一つの選択肢
を選ぶには、リストの右側にあるスクロールバーを押して、スクロールしないといけない状態です。
このリストで表示される行数を変えるにはどうすればいいでしょうか?

377 :デフォルトの名無しさん:03/07/30 21:55
リソースエディタ上でコンボボックスの↓ボタン押せ

378 :デフォルトの名無しさん:03/07/30 21:55
>>376
エディタ上でコンボボックスの矢印の部分をクリックするとプルダウン幅の設定ができる。

379 :378:03/07/30 21:58
>>378
ありがとうございます。
全然気付かなかったです(涙

380 :デフォルトの名無しさん:03/07/30 23:08
その質問て意外と初心者がはまるFAQなんだよな

381 :デフォルトの名無しさん:03/07/31 13:02
MFC で,新しく作ったスレッド(別のクラスのオブジェクト)に
メインスレッドのCStringオブジェクトを渡したいのですが,うまくいきません.
特別なことをする必要があるのでしょうか?

382 :デフォルトの名無しさん:03/07/31 13:05
超能力者募集中

383 :名無し@沢村:03/07/31 13:23
>>382
おまいの能力を超えてはいると思う

384 :デフォルトの名無しさん:03/07/31 13:28
>>382
381はマルチなので放置よろ

385 :デフォルトの名無しさん:03/07/31 19:33
>>381
つまり、マルチスレッドで質問だったんだ!
今回俺たちは全く無力だった… _| ̄|○

386 :デフォルトの名無しさん:03/07/31 20:39
今日もマルチたんで抜きます

387 :デフォルトの名無しさん:03/08/01 19:28
MFCはVSやVCなどのMS製品でしか使えませんか?

388 :デフォルトの名無しさん:03/08/01 20:29
vc6です

CTabCtrlの派生クラスでToolTIPを使いたいです。

作成時にTCS_TOOLTIPSを指定するところまではわかったのですが、
そのあと、TTN_GETDISPINFO を処理するハンドらを書くらしいのですが、
このハンドラをどのように宣言すればいいのでしょうか?

お願いします。

389 : :03/08/01 23:35
>>388

OnNotify で

LPNMTTDISPINFO lpnmtdi = (LPNMTTDISPINFO) lParam;
if (lpnmtdi->hdr.code == TTN_GETDISPINFO) {
 ...
}
てな感じか?

390 :388:03/08/02 00:58
>389

ありがとうございます。以下のようにしてできました。
ON_NOTIFY_EX(TTN_NEEDTEXTA, 0, OnToolTipNotify)
ON_NOTIFY_EX(TTN_NEEDTEXTW, 0, OnToolTipNotify)


391 :山崎 渉:03/08/02 02:03
(^^)

392 :デフォルトの名無しさん:03/08/03 00:59

VC6です。

 CSplitterWndで静的分割されているウインドウの、片方のペインの幅(縦2分割の場合)を固定に
したい場合、どのようにすれば良いのでしょうか?

393 :デフォルトの名無しさん:03/08/03 03:11
シリアルくれ・・・・・ボソ

394 :515:03/08/03 03:12
割れ厨でごめんなさい。。。

395 :515:03/08/03 03:13
マルチしてごめんなさい。。。
http://pc2.2ch.net/test/read.cgi/tech/1058815576/515n

396 :デフォルトの名無しさん:03/08/03 03:38
>>387
C++Builderでも使えると思う。
インストール時にMFC関連の項目があるし。
俺はVCLとWin32APIで足りてるのでMFC使ったこと無いけど。


397 :デフォルトの名無しさん:03/08/03 05:35

デスマーチなんてほんと昔の昭和初期の製糸工場並みの労働しています。
それをおかしいと思わないなんて一般知識や社会を知らない無能者の集まりではないでしょうか?
パソコンしか勉強していないんじゃないですか?
だから最下層の労働するはめになるんです。
頭良い人は家庭も仕事も充実しています。


398 :_:03/08/03 05:42
http://homepage.mac.com/hiroyuki44/

399 :デフォルトの名無しさん:03/08/03 06:05
XPスタイルのタブコントロールってグラデーションがかかってますよね。
チェックやラジオを表示するとそこだけ色が違って汚く見えます。
あれを解消する方法はあるんでしょうか?

400 :_:03/08/03 06:12
http://homepage.mac.com/hiroyuki44/jaz10.html

401 :デフォルトの名無しさん:03/08/03 08:32
MSDOSプロンプトの画面に表示されている内容を取得する方法はありますでしょうか?
例えばDOSプロンプト画面に
C:\WINDOWS\PROGRA~1\CDeX
と表示されているとして、
C:\WINDOWS\PROGRA~1\CDeX
という文字列を取得することは出来るのでしょうか?

402 :デフォルトの名無しさん:03/08/03 10:20
>>396
貴重な情報ありがとう。

403 :デフォルトの名無しさん:03/08/03 11:06
>>392
CSplitterWndの派生クラスつくっていじくる。


404 :デフォルトの名無しさん:03/08/03 12:27
>>392
最小サイズ指定するだけのほうがいいと思うが

405 :デフォルトの名無しさん:03/08/03 14:27
今現在最新のVC++は6.0ですか?
でちなみにいくらくらいします?

406 :デフォルトの名無しさん:03/08/03 14:48
>>405
申し訳ないですけど、自分でそれぐらい調べられないと。



407 :デフォルトの名無しさん:03/08/03 14:54
それぐらいパッパと答えられないの?

408 :_:03/08/03 15:01
http://homepage.mac.com/hiroyuki44/

409 :デフォルトの名無しさん:03/08/03 15:02
8000yen

410 :デフォルトの名無しさん:03/08/03 15:06
厨房出現

411 :405:03/08/03 19:42
>>409さんありがとうございます。
最高は6.0ですよね?

412 :_:03/08/03 19:43
http://homepage.mac.com/hiroyuki44/

413 :378:03/08/03 19:47
>>411
Visual studio .NetにVCも含まれてます。そっちが最新

414 :デフォルトの名無しさん:03/08/03 19:47
378って嘘(汗

415 :_:03/08/03 19:49
http://homepage.mac.com/hiroyuki44/hankaku02.html

416 :デフォルトの名無しさん:03/08/04 04:18
visual c++で書いたプログラムの中に
perlスクリプトを組み込みこむにはどうすれば良いのでしょう?


417 :_:03/08/04 04:42
http://homepage.mac.com/hiroyuki44/

418 :_:03/08/04 04:42
http://homepage.mac.com/hiroyuki44/jaz05.html

419 :デフォルトの名無しさん:03/08/04 11:39
>>416
Perl.net 使へ

420 :デフォルトの名無しさん:03/08/04 18:55
>>413
VS.Net買えばVCをwin98にインスコできるの?

421 :デフォルトの名無しさん:03/08/04 19:03
>>420
自分で調べるという事は知らない人ですか?

422 :デフォルトの名無しさん:03/08/04 21:24
しょうがないから自分で調べてやったぞ。
VS言語製品の登録ユーザーになれば無料でダウソできるというわけだ。

ところで、登録ユーザーにはどのようにすればなれますか?


423 :デフォルトの名無しさん:03/08/04 21:49
おまいら早く俺に答えないと俺がボーランド製品買うぞ。

424 :デフォルトの名無しさん:03/08/04 21:53
>>423
買えば?

425 :デフォルトの名無しさん:03/08/04 22:21
買えばだって。
もっとシャレの効いたレス返せねーのか? 藁藁

426 :デフォルトの名無しさん:03/08/05 01:09

VisualC++.NETでは、コメントデリミタの機能って無くなったんですか?
//{{AFX_MSG (ClassName)
//}}AFX_MSG      とかいうやつですが・・・
無いならそれに変わる様な機能ってありますか?
教えてください。


427 :デフォルトの名無しさん:03/08/05 01:32
CListCtrlでアイテムをソートなしで表示させてます。
この表示されたアイテムをドラッグアンドドロップで並んでいる場所を
入れ替えたいのですが、ドロップしたときのメッセージが見つかりません。
LVN_BEGINDRAGの対になるようなメッセージをとるにはどうしたら良いですか?
HDN_ENDDRAGはヘッダー関係らしくて駄目でした

428 :427:03/08/05 01:47
あ、アプリ全体としてはSDIでViewクラスの基本クラスはFormViewを選択しました。
それで出来上がったViewクラスでWM_LBUTTONUPを受け取ろうとしてみましたが
CListCtrlの上でマウスのボタンを離してもメッセージは来ませんでした・・・

429 :デフォルトの名無しさん:03/08/05 02:35
>>427
OLE使った方が楽だよ

430 :デフォルトの名無しさん:03/08/05 12:01
MFCのODBCについて質問させていただきます。
CRecordsetを使ってCSVの読込みを行うことはできたのですが、
レコードを修正(edit)・追加(addnew)しようとしたらUPDATE()時に
エラーダイアログが出力されました。
現状わかっているのはCSVファイルがリードオンリーになっている
ことだけです。
初めてODBCプログラミングするのでいまいち勝手がわからなくて・・・

下記は、勉強の為に参考にしたURLです。
ttp://www.alpha-net.ne.jp/users2/uk413/vc/VCT_ODBC.html
宜しくお願いします。

431 :デフォルトの名無しさん:03/08/05 12:20
>>430
で、何をしたいんだ、と。
リードオンリーを外してみたのか、と。

432 :430:03/08/05 12:37
>431
電波な質問をしてすみませんでした。

× CSVファイルがリードオンリーになっている
○ CSVファイルがリードオンリーでopenされている (らしい)

です。
CRecordset::openの引数を
(CRecordset::dynaset,NULL,CRecordset::none);
としてみましたがこれでもAddNewとEditの後にUpdateを掛けると
エラーメッセージが出力されてしまいます。

433 :_:03/08/05 12:40
http://homepage.mac.com/hiroyuki44/

434 :430:03/08/05 14:55
レコードを更新するとき
CanUpdateではエラーなし
Edit後、値を編集してUpdateを呼び出すと
「構文エラーまたはアクセス違反です。」と表示され失敗

レコードを削除するとき
Deleteにおいて
「更新または削除に失敗しました。」と表示され失敗

m_nDefaultType は snapshotになっています。
レコードの追加(AddNew)については成功していました。
どなたか解決法ご存知ではないでしょうか?

435 :_:03/08/05 15:26
http://homepage.mac.com/hiroyuki44/

436 :デフォルトの名無しさん:03/08/05 17:34
ダイアログボックスにパラメータを与えて
設定して、モーダル表示するプログラムを作っているのですが、


CTestDlgdlg;
dlg.SetParam(10,"test");//内部メンバ変数にコピーを取っている。
dlg.DoModal();
( このあと、OnInitDialog内部で、コピーを取った値を利用して初期化。
ここでないと、内部のコントロールクラスメンバを操作することができないから。)

という流れを、

dlg.DoModal(10,"test");
みたいな感じで記述したいのですが、

流れとしては、
・コントロールクラスメンバを全部適応(アタッチ)させる。
・各コントロールの初期化
・内部のデータの初期化(上記のコピー用のデータにあらず)
・モーダル表示

1メソッド内(または、1静的関数でもいいです。)で行いたいのです。

なにか、いい方法は、ありませんか?


437 :デフォルトの名無しさん:03/08/05 19:50
>>436
意味不明だが(質問をよく理解してないので聞き流してちょ)
コンストラクタで渡してしまうとか?
DoModalをオーバーロードするとか?

結局コントロール変数を使うのなら
OnInitDialog()のオーバーライドは必要になりそうだが・・・

438 :デフォルトの名無しさん:03/08/05 20:23
内部でDoModalした後に設定が必要なのだから

「無理」

が答えと思われ。

439 : :03/08/05 20:44
ウィザードでメンバ変数にマッピングして、普通にコンストラクタで
初期化すれば DDX が勝手にやってくれるよ>>436

コントロールで特殊な初期化処理が必要なら、DDX をカスタマイズすれば良いし。

440 :デフォルトの名無しさん:03/08/05 21:02
>>436
なんかよく分からんけど、最初モードレスでダイアログ作って、後でモーダル化
すれば、初期化のタイミングとか表示のタイミングとか自分の好きにできるよ。

  this->EnableWindow(FALSE);
  dlg.RunModalLoop(MLF_SHOWONIDLE );
  this->EnableWindow(TRUE);
モーダル化はこんな感じで。ヒントにならんかな?

441 :440:03/08/05 21:15
初期化のためだけにメンバ変数用意したくないって、やつかな?

dlg.Create(〜); //非表示で作成
dlg.SetParam(10,"test"); //引数を使ってコントール初期化
dlg.ShowWindow(SW_SHOW);
dlg.RunModalLoop(MLF_SHOWONIDLE );
dlg.DestroyWindow();

この一連の操作をメンバ関数か何かにして
dlg.InitAndDoModal(10,"test");
とかにすれば一行でいけますよ?

442 :デフォルトの名無しさん:03/08/05 23:38
バイナリファイルとか大量に読み込んで、それに基づきWORDとかEXCELとかのファイルを作るソフト
をつくりたいんですが、VCでofficeを操作するのってかなり大変でしょうか?
比較的簡単に出来るとしたら、参考になるページをご存知でしたら教えて下さい(英語可)

それとも、VBを一から勉強した方が楽でしょうか?


443 :デフォルトの名無しさん:03/08/06 03:01
大変ではない。面倒くさいだけ。

444 :デフォルトの名無しさん:03/08/06 03:16
MFCだからかどうかわかりませんが、デバッグを実行して作った
アプリが終了するときに
「スレッド 0xFFFA41B1 終了、終了コード 0 (0x0)」
とか出ますが、この終了コードが-1なのも一緒に出ることがあります。
これマイナスだとどこかで問題が起きているとかそういうことはあるんですか?

445 :436:03/08/06 09:13
>>440,441さん
>初期化のためだけにメンバ変数用意したくないって、やつかな?
そんな感じです。
なんとか、できそうです。
ありがとうございます。

446 :436:03/08/06 11:41
試してみました。
気持ちいいぐらいに、初期化→表示ができました。(*゚∀゚)=3ハァハァ

ですが、
現状だと親ウインドウにもフォーカスが移る(親のボタンも押せる状態)になっています。
完全なモーダル表示になっていないようです。

処理は、一応CDialog1が閉じるまで、
RunModalLoopより下(以下で言うDestroyWindow部分))には、進んでいないようです。
親ウインドウにフォーカスが移らないようにする方法って、
何かありませんか?また、これ以外の方法があったら教えて下さい。
↓ソース
/*初期化付DoModal */
BOOL CDialog1::InitAndDoModal(char* name,char* comment)
{
//this->Create(IDD);//2番目の引数略しても、メインウインドウが呼ばれるっぽ。
//↑IDDは、VCが勝手に元のリソースのIDを関連付してる。それを利用。

//TODO : ここで、独自の初期化。
m_edit1.SetWindowText(name);
m_edit2.SetWindowText(comment);

this->ShowWindow(SW_SHOW);//表示
this->RunModalLoop( MLF_SHOWONIDLE );//Modalループ
this->DestroyWindow();//破棄。
return TRUE;
}
使い方
CDialog1dlg;
dlg.InitAndDoModal("ぼるじょあ","(・3・)アルェー");
で、やっています


447 :デフォルトの名無しさん:03/08/06 12:13
親をEnableWindowで無効にする

448 :436:03/08/06 12:23
>>447
それでいけました。ありがとうございます。

[解決]

449 : :03/08/06 12:47
CSplitterWnd で アクティブなPaneが
移り変わった時を検出する方法ないですか?

450 :デフォルトの名無しさん:03/08/06 14:18
>>449
逆に中の人から知らせてあげてはどうか?

451 :449:03/08/06 19:38
といいますと?

メインのフレームの中に
CSplitterWndと、それに分割された2つのPane
CAWndとCBWnd(CWnd派生クラス)があったとします。

CAWndでアクティブになったことを検地する方法がある
ということですよね?どうすれば?

452 :_:03/08/06 19:45
http://homepage.mac.com/hiroyuki44/hankaku05.html

453 :デフォルトの名無しさん:03/08/06 20:38
CSplitterWndにGetActivePaneメソッドがあるからそれのソース見てアクティブペイントがどういう風に認識されているか確認してみれば?
もしメンバ変数を参照しているならその変数を設定している部分を探せばいいし。

MFCのイベント通知はクソッタレな部分も多いので最悪OnIdleでチェックということもありうる。

454 :デフォルトの名無しさん:03/08/06 21:25
.net 2003で、コントロールからのメッセージがOnNotify()でうまく捕らえられない
なぁ、と思って、それじゃあとメッセ-ジマップにON_NOTIFY()をみたら見事成功。
なんでかなーと思ったら、送られてくるメッセージが違いやがんの。
しかもMBCSの時だけ。UNICODEにするとOK。なんでや〜〜

455 :デフォルトの名無しさん:03/08/06 21:26
みたら -> いれたら でした

456 :デフォルトの名無しさん:03/08/06 21:56
アプリの動作中にカーソルを変更したいのですが、うまくいきません。
LoadCursorので得たハンドルでSetCursorしても変わらないのです。
ググってみたところPreCreateWindow()でcs構造体面罵を変更し
OnCreate()でSetCursorするか、アプリ動作中に変更するには
SetClassLongを使うことが分かりました。

しかしSetClassLongの1番目と2番目の引数に何を使えばいいか
わかりません。とりあえず
hCursor=LoadCursor(IDI_MYCURSOR);
SetClassLong(AfxGetApp()->m_pMainWnd->m_hWnd, GCL_HCURSOR, (LONG)hCursor)
としてみましたが。変わる気配は一向にありません。
一体どのようにしたらアプリ動作中に変更出来るのでしょうか?

あとVC6付属のリソースエディタで適当にアイコンを作って
そのIDをIDI_MYCURSORとしたのですがそれも良くないでしょうか。
でもIDC_SIZENSとかIDC_ARROWとかでもやっぱり変更できませんが・・・

457 : :03/08/06 22:00
WM_SETCURSOR のハンドラを書け。

458 :デフォルトの名無しさん:03/08/06 22:01
自分のアプリだったらウィンドウクラスにはNULLを入れといて、
WM_SETCURSORのハンドラでSetCursorするんでないの。


459 :449:03/08/06 22:08
>>453 やってみまつ

460 :456:03/08/07 00:51
WM_SetCursorのメッセージを受けるOnSetCursor()で
 SetClassLong(pWnd->m_hWnd, GCL_HCURSOR, (LONG)hCursor);
を行うことでシステムに登録してあるカーソルはLoadCursorで変更出来るようになりました。

続いてマウスでドラッグしているときのみ自作カーソルを表示させようとしたのですが
うまくいきません。Viewクラスのメンバm_bIsDragに、PreCreateMessage()で受け取ったメッセージ
によって、ドラッグ状態にあるかどうかを記録するようにしています。
 そして前述のOnSetCursor()でm_bIsDragがTRUEの時のみ
  hCursor=LoadCursor(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_MYCURSOR));
を実行してSetClassLong()するのですが、このLoadCursor()が失敗しているようです。
LoadCursorの最初の引数として、PreCreateWindow()のcs構造体メンバのコピーを
用いても失敗してしまいます。アイコンを作るのも「挿入」でコピー用のカーソルを挿入してから
それを変更してIDC_DRAGと命名しLoadCursorに使ってみましたがやはり失敗でした。
どうすれば自作カーソルをつかえるでしょうか

461 :デフォルトの名無しさん:03/08/07 00:59
なんで、WM_SETCURSOR中で
SetCursorでなく、SetClassLongなの?

462 :456:03/08/07 01:22
私もよくわかりませんが、SetCursorでは一瞬切り替わるだけで(瞬間瞬間だけちょっとみえる)
、SetClassLongを使うと指定し直すかアプリのウィンドウを越えない間は
希望通りの形になってます

463 :デフォルトの名無しさん:03/08/07 01:36
環境はWindowsXP+VisualStudio.NET2003で
CFileDialogをカスタマイズしようとしてるんですけど。
VC6でコンパイルするとどのOSでも一律

[普通のファイルダイアログ]
[カスタマイズ部分]

ってなるんですけど
.NETでコンパイルしたものはWin2000以降だと

[プレースバー][普通のファイルダイアログ]
[カスタマイズ部分]

となりWin98とかだと

[普通のファイルダイアログ]
[カスタマイズ部分]

となってしまいます。
プレースバーとはデスクトップとかマイコンピュータとか並んでるやつです。
Win2000等を想定してカスタマイズ部分を
たとえばプレースバーの幅も計算に入れて上の「ファイルの種類」ってところに
あわせて下にコンボボックス等を設けると
Win98で実行すると位置がずれてしまいます。
このプレースバーを出さない方法ってあるのでしょうか?
.NETで進めてきたプロジェクトなので今更VC6に戻れないので

464 :デフォルトの名無しさん:03/08/07 01:42
なんでWin98と2000を判定しないの?

465 :デフォルトの名無しさん:03/08/07 01:56
旧形式ファイルダイアログを表示する方法ならあるぞ。
filedialog.m_ofn.lStructSize = sizeof(OPENFILENAME_NT4);


466 :デフォルトの名無しさん:03/08/07 02:38
CListViewを使う為に、ウィザードでシングルドキュメント、windowsエクスプローラー形式で作成しました。

そして、CListView派生クラスの、PreCreateWindowにこれを追加。

cs.style &= ~LVS_TYPEMASK;
cs.style |= LVS_REPORT;

テスト用に、同クラスのOnInitialUpdateにこれを追加しました。

CListCtrl& pListCtrl = GetListCtrl();
LVCOLUMN lvC;
lvC.mask = LVCF_TEXT;
lvC.pszText= "名前";
pListCtrl.InsertColumn( 0, &myCLM );

pListCtrl.InsertItem( 0 , "犬" );
pListCtrl.InsertItem( 1 , "猫" );

この状態で実行しツールバーのスタイル変更ボタンを押すと、
スタイルが変更される事を想定していたのですが、変わりません。

何か方法を間違えているのでしょうか?

環境はwin2000にVC++.netです。


467 :デフォルトの名無しさん:03/08/07 02:43
>ツールバーのスタイル変更ボタン
のハンドラはどうした?

468 :466:03/08/07 02:46
>>467
CMainFrameクラスのOnViewStyle内にある処理だけでは駄目なのでしょうか?

469 :デフォルトの名無しさん:03/08/07 10:29
>>462
OnSetCursor内で
SetCursor(AfxGetApp()->LoadCursor・・・
その後すぐにreturn TRUE;
でどうよ。

470 :デフォルトの名無しさん:03/08/07 10:35
>>468
467が言ってるのは、
その「OnViewStyle内にある処理」を見せろって事じゃないか?

471 :デフォルトの名無しさん:03/08/07 14:03
>>468
いや、ウィザードが吐いたOnViewStyleのコードだけで動くはず。VC6ではそうだった。
おれもVC++.NET2002でテストしてみたが、たしかに動作がおかしいな。
pView->ModifyStyle(LVS_TYPEMASK, dwStyle); を
pView->SendMessage(LVM_SETVIEW, dwStyle); に変更するとOKなのが、また不思議。
自分でダイアログに配置したCListCtrlなら、ModifyStyleとLVM_SETVIEWのどちらでも
スタイルが変えられるのに。

472 :466:03/08/07 15:16
>>466
一箇所間違いが
pListCtrl.InsertColumn( 0, &myCLM ); → pListCtrl.InsertColumn( 0, &lvC); 

>>467
長いので省略して、
dwStyle に、LVS_REPORTやLVS_SMALLICON等のスタイルがセットされ、これがコールされます。
pViewはCListView派生クラスのポインタです。

pView->ModifyStyle(LVS_TYPEMASK, dwStyle);

>>471
Visual Studio .NET 2003 "free online"
http://www.gotdotnet.com/japan/freeonline/
で同じ事を試してきました、結果、なんの問題も無くスタイルが変更され動作しました。

VC++.net2002の不具合なのかなぁ。
困ったなぁ・・・6.0に戻るか、2003にするか

473 :デフォルトの名無しさん:03/08/07 17:04
pView->GetListCtrl().ModifyStyle(LVS_TYPEMASK, dwStyle);

にしてみてはどうか?
かわらんだろうけど念のため

474 :名無し@沢村:03/08/07 17:12
>>472
ヌヒよ、>>471
> pView->SendMessage(LVM_SETVIEW, dwStyle); に変更するとOK
と言っているだろ? それでいいではないか。

475 :466:03/08/07 17:50
>>474
まぁそうなんですが、気持ち悪いので、

.net2002で生成したソースを2003に持っていってビルド、実行しても不具合ありだったので、
2002と2003で生成されたソースを比較してみました。

変更箇所がポツポツと、
そのなかで一箇所、2003のCListView、OnStyleChanged内で、Default();がコールされてる。
2002にも追加してみました、問題なく動く・・・

とりあえず解決、皆様、お手数かけました。


それにしても、ウィザードのバグじゃないかこれ?



476 :456:03/08/07 23:48
>>469
出来ました出来ました!!
なるほど、return TRUE; してなかったから直後に親ウィンドウによって
書き換えられてたんですね

477 :デフォルトの名無しさん:03/08/11 18:29
教えてください。
[XP] VC++ 6.0(SP5) でソース修正中 [ツール]-[コントロールの登録]すると
[RegSvr32]
c:\xxxxxx\xxx.exe は読み込まれましたが、DllRegisterServerエントリポイントが
見つかりませんでした。
c:\xxxxxx\xxx.exe は.DLL .OCXではない可能性があります
とエラーが出ます

VC++ 6.0 のみ立ち上げて[ツール]-[コントロールの登録]すると
LoadLibrary("")に失敗しました - 指定されたモジュールが見つかりません
となります。

VC++を再インストールしてもだめなのですが解決できるでしょうか?


478 :デフォルトの名無しさん:03/08/11 21:44
質問です。
VS.NET Win2000です。

ダイアログボックスにTreeControlをくっつけて、OnInitDialogに
以下のようなソースを加えました。

BOOL CMyTree::OnInitDialog() {
CDialog::OnInitDialog();
//
CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE1);

pCtrl->InsertItem("test1");
pCtrl->DeleteAllItems( );
pCtrl->InsertItem("test2");
//
return TRUE;
}

"test2"が残ると思ったのですが、キャプションの無い
空の項目がひとつ出来てしまいます。
以降、複数回InsertItemを行っても全て空の項目が出来ます。
DeleteAllItems( );をコメントアウトすれば
正しく二つの項目が残ります。

これは何故でしょうか。


479 :デフォルトの名無しさん:03/08/12 02:14
>>478
試してみた。CTreeCtrlにTVS_NOSCROLLスタイルが付いてるとそうなりますね。
なんだこりゃ?仕様?バグ?

480 :デフォルトの名無しさん:03/08/12 05:33
画面にRGBを1ずつずらして点を打つプログラムで

int i=0,j=0;

CPen penCol(PS_SOLID,1,RGB(0,0,0));
CPen* oldPen=pDC->SelectObject(&penCol);

for(i=0;i=255;i++){
pDC->MoveTo(i,0);
for(j=0;j=255;j++){
penCol.CreatePen(PS_SOLID,1,RGB(i,j,0));
pDC->LineTo(i+1,j+1);
}
}
pDC->SelectObject(&oldPen);

としてみましたが動いてくれません。
どこがおかしいのか教えてください。

481 :478:03/08/12 10:18
>>479
おお SCROLLプロパティをいじったら期待通りの挙動になりました。
原因はよくわかりませんが。

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

482 :デフォルトの名無しさん:03/08/12 16:47
なぁ、CDialogからdocを見るにはどうするのがMFC的には綺麗なんだ?

483 :デフォルトの名無しさん:03/08/12 17:00
>>482
GetParentFrame()->GetActiveDocument()

484 :デフォルトの名無しさん:03/08/12 17:17
>>480

for(i=0;i=255;i++){
 pDC->MoveTo(i,0);
 for(j=0;j=255;j++){
  CPen penCol(PS_SOLID,1,RGB(i,j,0));
  CPen* oldPen=pDC->SelectObject(&penCol);
  penCol.CreatePen(PS_SOLID,1,RGB(i,j,0));
  pDC->LineTo(i+1,j+1);
  pDC->SelectObject(oldPen);
 }
}

>penCol.CreatePen(PS_SOLID,1,RGB(i,j,0));
>pDC->LineTo(i+1,j+1);
CreatePen()とかするたびAPIのCreatePenがよばれてHPENが作られるので
現在SelectObject()で選択されているペンの色を変えるわけではない


485 :484:03/08/12 17:20
>  penCol.CreatePen(PS_SOLID,1,RGB(i,j,0));
この行、いらない

486 :デフォルトの名無しさん:03/08/12 18:31
> for(i=0;i=255;i++){
> for(j=0;j=255;j++){

これは突っ込まんのか?(w

487 :デフォルトの名無しさん:03/08/12 18:40
というか、突っ込めない部分がほとんど無いわけで。

488 :デフォルトの名無しさん:03/08/12 18:41
>>486
GoodJob!
>>480
動かないときは、どう動かないのか書こうね。

489 :デフォルトの名無しさん:03/08/12 23:50
MDIでフレームウィンドウのクライアント領域を取得したいのですが、
GetClientRect()だとツールバーなどの部分も含まれてしまいます。
実際の表示領域(子ウィンドウの表示領域)だけを取得しているような
サンプルやメソッドはありませんか?

490 :デフォルトの名無しさん:03/08/13 00:49
>>489
MDIフレームウィンドウのクライアント領域は
常にMDICLIENTクラスのウィンドウで覆われてるから
それ(m_hWndMDIClient)の位置を調べればいい。

491 :489:03/08/13 01:21
>>490
ありがとう。明日以降に試してみます。

492 :デフォルトの名無しさん:03/08/13 02:15
ウインドウを常に最前面にするにはどーすればいいですか?

493 :デフォルトの名無しさん:03/08/13 02:17
CWnd::ShowWindow()


494 :名無し@沢村:03/08/13 02:19
>>492
SetWindowPos()

495 :デフォルトの名無しさん:03/08/13 02:26
http://endou.kir.jp/marimo/link.html
★最高でした!!(^0^)★最高でした!!

496 :デフォルトの名無しさん:03/08/13 08:51
>>483
ありがd

497 :デフォルトの名無しさん:03/08/13 10:13
ダイアログのEditBoxの内容をプログラムで変える場合ってどうすればいいんだろ。
ダイアログクラスのOn〜〜でm_Editの値変えても何も変わらんぽ。
ってか、そもそもEdit使うのが悪いのか?

498 :デフォルトの名無しさん:03/08/13 11:08
>>497
じゃ、SetSel, ReplaceSel とかは?

499 :デフォルトの名無しさん:03/08/13 12:12
>>497
m_Editの型をCEdit(もしくはその派生)ではなく、値の型(CStringなど)にしているなら、
Updateする必要がある。

500 :デフォルトの名無しさん:03/08/13 13:48
なるほど。UpdateDataでメンバ変数とダイアログを合わせてるのか。
よーく理解できた。サンクス

で、500ゲトー!|(´ー`)/

501 :デフォルトの名無しさん:03/08/13 14:43
CSpinButtonCtrlでマウスボタンをずっと押してると、
OnDeltaposSpinが自動的に連続して呼ばれると思うんですけど、
なぜか20回くらい呼ばれた時点でそこでストップしてしまいます。
1度マウスボタンを離してもう一度クリックすると、また20回程度呼ばれ・・。
Range変えてもダメでした。何が考えられると思いますか?

502 :デフォルトの名無しさん:03/08/13 16:00
>>501
SetAccel()で数秒後に止まるように設定されてる説。
UDACCEL uda[2] = { {0,1}, {2,0} }; //最初は+1ずつ、2秒後に増加停止
pSpin->SetAccel(2, uda);
とか。


503 :デフォルトの名無しさん:03/08/13 19:01
ソレダ!初期状態として設定してやったら見事に直りました。
どうもありがとうございます。

504 :デフォルトの名無しさん:03/08/13 19:11
SDIなんですが、最小化した時にタスクバーからタスクを消したくて
以下のコードを書いたんですがうまくいきません。
タスクバーから消えてくれないんです。
どーすればいいんでしょうか?

void CMainFrame::OnSize(UINT nType, int cx, int cy){
CFrameWnd::OnSize(nType, cx, cy);
// TODO : ここにメッセージ ハンドラ コードを追加します。
if(nType==SIZE_MINIMIZED){
long style=GetWindowLong(m_hWnd,GWL_EXSTYLE);
if(!(style&WS_EX_TOOLWINDOW)){
style |= WS_EX_TOOLWINDOW;
SetWindowLong(m_hWnd,GWL_EXSTYLE,style);
}
}
}


505 :デフォルトの名無しさん:03/08/13 20:53
>>504
ShowWindow(SW_HIDE); //←コレと
SetWindowLong(m_hWnd,GWL_EXSTYLE,style);
ShowWindow(SW_SHOW); //←コレを追加

506 :デフォルトの名無しさん:03/08/13 21:27
ダイアログの中のボタンやスタティックコントロールの位置を
ダイアログのクライアント領域の左上座標を0,0とした場合の位置として
取りたい場合はどうすれば良いんでしょうか?

507 :デフォルトの名無しさん:03/08/13 21:31
POINT pt={0,0};
::ClientToScreen(Btn,pt);
::ScreenToClient(Dlg,pt);

508 :デフォルトの名無しさん:03/08/13 21:33
>>507
サンクス!!
早速調べてみまつ

509 :デフォルトの名無しさん:03/08/14 11:22
SDIで最初のウィザードで印刷サポートさせていなくて、
後から印刷と印刷プレビューを付けたそうと思い、
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
をviewのメッセージマップに付け足したんですけど、
実行してみると、
プレビュー選択で「コマンドの実行に失敗しました」
印刷選択で「印刷ジョブは開始できませんでした」
と出てきます。
メッセージマップだけじゃだめですか?

510 :デフォルトの名無しさん:03/08/14 12:41
どうしてそういうエラーになるのか、デバッガで追えよ。

511 :504:03/08/14 13:08
>>505
あ、ありがとうございます。
そっか、それなら
SetWindowLong(m_hWnd,GWL_EXSTYLE,style);
もいらないっぽい事に気付きました。
勉強になりました。

512 :デフォルトの名無しさん:03/08/14 18:20
ふと思ったのですが、MFCの関数群(Afxなになに)って
どんなネームスペースで宣言されているのですか?
もしかしてグローバル?
だとしたらなんでAfx名前空間とかで宣言しないんでしょ。

513 :デフォルトの名無しさん:03/08/14 20:38
>512
ネームスペースというものが無かった頃のなごりでしょ

514 :512:03/08/14 21:09
>>513
なるほど

515 :デフォルトの名無しさん:03/08/14 22:35
質問です。
VC++5.0(MFC)で開発しています。

ある処理中は、アクセラレータキーを無効にしたいと考えております。
関連付けたIDが、メニューアイテムであればそのアイテムをEnable(False)
にする事で、アクセラレータも無効になるのですが、
関連付けたIDが、メニューアイテム以外の場合は、どのように、
無効にしたら良いか教えて下さい。

516 :デフォルトの名無しさん:03/08/14 23:32
>>515
フラグで

517 :山崎 渉:03/08/15 15:20
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

518 :デフォルトの名無しさん:03/08/15 20:43
今、MFCのコントロールから派生させたクラスを作っています。
親ダイアログを監視して、親ダイアログが移動・サイズ変更されると
それに対してリアクションをする というものです。

現在、SetWindowsHookExで監視しているのですが、
static領域に管理変数とフック用コールバック関数があるため、
このクラスが複数になると、最後に登録されたものしか反映されなくなります。

これを回避するにはどういった方法があるのでしょうか?


開発環境:Win2K VC++6.0


519 :デフォルトの名無しさん:03/08/16 00:06
親ダイアログ側でWM_MOVE, WM_SIZEを捕まえて
対象窓に送る。

520 :デフォルトの名無しさん:03/08/16 17:38
いくらなんでも下がりすぎ

521 :デフォルトの名無しさん:03/08/16 21:43
CToolBarで、ボタンを押すたびにビットマップの絵を変えたいですが、(トグル動作)
どうすれば良いでしょう?
AppWizardが作ってくれたCMainFrameのm_wndToolBarでの話です。
16x15の各アイコンは、リソースエディタで見るとToolBarとして横に並んだ格好で作られていますが、
この末尾(右端)にアイコンをひとつ追加してみたのですが、
例えば左から3番目のアイコンとこれを、状態に応じて入れ替えて表示ってできますか?
(末尾のは表示しないで。)


522 :デフォルトの名無しさん:03/08/16 22:04
コーポレイトソフトウェアていうサポセンの馬鹿が
PGに喧嘩売ってます。

http://money.2ch.net/test/read.cgi/haken/1057486349/287

腹立ちました。
みんなでやっつけにいこう。

523 :うふふのふ:03/08/17 14:24
CDocumentの派生クラスのSerialize関数でのファイルへの書き出しについて
なんですが、通常のシリアル化ではなくて、ファイル名とデータを与えれば、
ファイルにセーブしてくれるという便利な関数があるとします。

その関数を利用したいのですが、Serialize関数に渡されたCArchiveインスタンスが
ファイルを開いてしまっているため、その関数で書き込むことができません。
また、CArchiveのCloseをよんでファイルを閉じてしまうと、Serialize関数を抜けた
ところでプログラムが異常終了してしまいます。

この場合、どうすればよいのでしょうか?

524 :デフォルトの名無しさん:03/08/17 14:38
>>523
OnOpenDocument()をオーバーライドして、
その中で、元々の CDocument::OnOpenDocument()を呼ばずに、
(ClassWizardでOnOpenDocumentを追加すると、自動的にこのコードが入るけど、
呼ばないように、その行を削除する。)
代わりに、自前の関数を呼べばよいと思われ。

元々の CDocument::OnOpenDocument()では、SetModifiedFlagもいじってるから、
そのset/resetも自前でやるよろし。


525 :デフォルトの名無しさん:03/08/17 14:48
>>521
自己レスだけど、出来たので一応報告。
UPDATE_COMMAND_UIのハンドラで、m_wndToolBarの中の、
CToolBarCtrlを参照して、その中のCImageListをReplace()で書き換えてやる。
こんな感じ。

CToolBarCtrl &tbc = m_wndToolBar.GetToolBarCtrl();
// 現状のCImageListを参照して、
CImageList* pImgList = tbc.GetImageList();
// pImgListの3番目のIconを差し替える
CBitmap bitmap1;
if(toggle_sw)
bitmap1.LoadBitmap(IDB_BITMAP_A);
else
bitmap1.LoadBitmap(IDB_BITMAP_B);
pImgList->Replace(2, &bitmap1, NULL); // 3番目は、0baseで2番目
tbc.SetImageList(pImgList);
tbc.Invalidate(); // 表示し直し

差し替えるbitmapは、ToolBarに追加して用意するのではなく、
別々のbitmapリソースとして用意する。

以上、誰かのお役に立てば。

526 :デフォルトの名無しさん:03/08/17 16:00
質問です。
Visual Studio NetでHTMLを開くと、なんか編集できそうな
感じなんですが、このソフトでWeb製作できるのでしょうか?
なんか中途半端な感じなんですけどね・・・。


527 :デフォルトの名無しさん:03/08/17 16:29
>>526
やってみ。

528 :うふふのふ:03/08/17 16:46
>>524
どうもー。丁寧なレスありがとう。そんな方法があったとは!!!

529 :デフォルトの名無しさん:03/08/17 17:06
>>527
やってみたんですが、どうもハイパーリンクつけたり
画像をインポートしたりとかそういった機能がないような
気がしたので・・・

530 :518:03/08/17 23:57
>>519
いや、あくまでも"監視"する方法をとりたいのです。
つまりコントロールを追加するだけでOKなように作りたかったのですが・・・
他も検索してみましたが、そういうのは無さそうでしたので諦めることにします。

ども、ありがとうございました。

531 :デフォルトの名無しさん:03/08/18 20:37
>>530
かなり遅れて メッセージフック というキーワードを晒してみる

532 :デフォルトの名無しさん:03/08/19 03:40
>>530
オレも昔やってみようと思ったことがあったが、

正直_

533 : :03/08/19 08:06
>>530

親ウィンドウをサブクラスしちゃうのが常套手段だと思うけど。。。

534 : :03/08/19 20:52
MFCでダイアログベースのアプリを作っています。
ウィザードで出来上がったダイアログには、お決まりの
「OK」「キャンセル」のボタンのみのものになってますが、
このボタンを削除した場合、InitInstance()にある
以下のコードは削除してかまわないのでしょうか?

if (nResponse == IDOK)
{
// TODO: ダイアログが <OK> で消された時のコードを
// 記述してください。
}
else if (nResponse == IDCANCEL)
{
// TODO: ダイアログが <キャンセル> で消された時のコードを
// 記述してください。
}

// ダイアログが閉じられてからアプリケーションのメッセージ ポンプを開始するよりは、
// アプリケーションを終了するために FALSE を返してください

535 :デフォルトの名無しさん:03/08/19 21:01
>>534
単にOK、キャンセルを無効化したいって事ならOnOKとOnCancelをオーバーライドすれ

536 :デフォルトの名無しさん:03/08/19 22:58
MFC と コマンドプロンプトをデバッグ文字列表示のため、
同時に使いたいのですが、何か方法はありませんか?


537 :536:03/08/19 23:16
エントリポイントシンボルいじったらできました。thx

538 :デフォルトの名無しさん:03/08/20 03:19
GetDlgItem()で取得したコントロールへのハンドルって
ヘルプには一時的なものと書いてあるけど、どこまで一時的なの?
GetDlgItemを呼んだ関数から出ると、もう使えないのかな。
試しに別の関数で試してみても同じだけど単なる偶然?

539 :_:03/08/20 03:27
http://homepage.mac.com/yamazaki8

540 :デフォルトの名無しさん:03/08/20 11:10
ハンドルじゃなくてポインタだベ。CWnd::GetDlgItemならば。


541 :デフォルトの名無しさん:03/08/20 11:11
あ、HWND返すのもあるのか。HWNDの方は一時的じゃないよ。

542 :デフォルトの名無しさん:03/08/20 14:03
>>538
CWnd*を返すやつなら、確かアイドルループに入るまで有効。
マルチスレッドにして、そのポインタ渡して使ったりすると結構な確率であぼん。

543 :デフォルトの名無しさん:03/08/20 14:35
ちゃんとCWndオブジェクトと関連づいている物なら、これまた一時的では無いけどね。

544 :デフォルトの名無しさん:03/08/20 15:24
mciでmidiを連続再生させたいのですが、MM_MCINOTIFYが送られてきたときに巻き戻して再生すればいいことがわかりました。
MM_MCINOTIFYはclasswizardで処理できないのでしょうか。
メッセージマップに書くとあったのですが、よくわかりません。
どこで処理するのでしょう。
再生は○○view.cppのコンストラクタ、closeはデストラクタでやっています。


545 :デフォルトの名無しさん:03/08/20 15:55
> MM_MCINOTIFYはclasswizardで処理できないのでしょうか。

Yes

ON_MESSAGE 使え。

546 :デフォルトの名無しさん:03/08/20 16:38
自分で作ったクラスからViewクラスの関数を呼び出すにはどうすればいいでしょうか。
 AfxGetApp()->m_pMainWnd->SendMessage(WM_USER, 0, (LPARAM)iData);
なんてやってみてもViewクラスのPreTranslateMessageでは wParam も lParam
も0になっていて使えません。m_pMainWndをViewクラスにキャストするのかとも
思いましたが、Viewクラスのヘッダをインクルードしようとすると、ビルド時に
構文エラーが連発状態になってしまいます。

547 :デフォルトの名無しさん:03/08/20 16:57
>>549
Viewをメインウィンドウにする特殊なことしてなきゃCMainFrameがm_pMainWndになってるはず。
CMainFrameはCFrameWndなので、ビューを取得するメソッドが用意されてるのでそれを使う。
インクルードでエラーになるのは、順番が悪い。
メッセージ送るというやり方自体は悪くないが、上記の理由から見当違いのウィンドウに送っている。

548 :デフォルトの名無しさん:03/08/20 17:12
ダイアログに貼り付けたピクチャボックスより大きい画像を表示するために、
ピクチャボックスにスクロールバーを付けたいのですがどうしたらいいのでしょうか

549 :546:03/08/20 19:50
>>547
フォームビューから派生したSDIのViewなんですが、これはViewをメインウィンドウ
にしてることになりますか。一応インクルードエラーは回避できました。それで
CMyAppView *pView=(CMyAppView*)(
                  (CFrameWnd*)(AfxGetApp()->mpMainWnd)
                       )->GetActiveView();
としてこのpViewを使ってSendMessageをしてもやはりPreTrancelateMessage
では他のパラメータが0になってしまいます。

550 :546:03/08/20 20:03
あ、長ったらしく書かなくても
CMyView* pView = (CMyView*)AfxGetMainWnd()->GetActiveView();
で良いのね・・・

551 :デフォルトの名無しさん:03/08/20 22:25
>>548
スクロールバーを貼り付けて自分で制御

552 :デフォルトの名無しさん:03/08/20 22:42
>>549

自分のスレッド内のウィンドウに対するSendMessageは、直接
ウィンドウプロシージャの呼び出しになるのでPreTranslateMessageは
呼ばれていないはず。

553 :546:03/08/21 00:14
>>552
なるほど。確かにツリーコントロールなどにアイテムを追加したりするだけで
WM_USERのメッセージが飛んできてたりしましたが、受け取ったメッセージが
自分でSendしたものという訳では無かったのですね。

元ネタの疑問はわざわざメッセージを使わないでも、Viewクラスのポインタを
得られたのだから既に解決してましたね。逝ってきます。


554 :デフォルトの名無しさん:03/08/21 01:41
Visual C++ 2003でlibファイルのプロジェクトの項目がなくなったようなのですが
どうやったら作れるのでしょうか?

555 :554:03/08/21 05:16
プロジェクトのプロパティから変更できました。


556 :デフォルトの名無しさん:03/08/21 10:47
VC6で簡単なHTMLパーサを作ろうと思って、WebBrowser使おうと思いました。
で、CHtmlView使うサンプルを見付けたのですが、AppWizardで作る時に、基本クラスのところにCHtmlViewが出て来ません。
基本クラスのタブには
CFormView
CListView
CRichEditView
CScrollView
CTreeView
CView
しかありません。
何かインストール忘れしてるのでしょうか?


ちなみに取り敢えずCViewで作って後からCHtmlViewに書き換えても、BEGIN_DISPATCH_MAPマクロで

error C2509: '_GetBaseDispatchMap' : このメンバ関数は、'COC2View' クラス内で宣言されていません。

と怒られます。その部分のソースはこれです。

BEGIN_DISPATCH_MAP(COC2View, CHtmlView)
DISP_FUNCTION_ID(COC2View, "onclick",
DISPID_HTMLDOCUMENTEVENTS_ONCLICK,
OnClick, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()
BEGIN_INTERFACE_MAP(COC2View, CHtmlView)
INTERFACE_PART(COC2View, DIID_HTMLDocumentEvents, Dispatch)
END_INTERFACE_MAP()




557 :556:03/08/21 10:51
追記
GetBaseDispatchMapはサンプルにはなく、MSDNにも載ってませんでした。

558 :デフォルトの名無しさん:03/08/21 13:46
>>556
使ってるのがどのパッケージだか知らないけど、CHtmlViewだけじゃなくてCEditViewもないってんならなんか壊れてるな。
ていうか、BEGIN_DISPATCHなんとかも要らないし、CViewを書き換えだけでもコンパイル通るぞ。

まあ、HTMLパーサに(MS?)WebBrowserは必要ないし、
WebBrowser使うのにCHtmlView使う必要も無いわけだが


559 :556:03/08/21 15:10
VCはエンタープライズなんですが、一回再インストールしてみます。

あと最終的にやりたいこととしては、クライアント領域をDHTMLでデザインしてロジック部分をVCで、ということなんです。
クリックとかドラッグした部分をHTMLパーサで解析して動作を決める、と。
CHtmlViewのイベントだとリンクタグしか取れないみたいなので。
他に簡単な方法があったらお願いします。

126 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)