トップページ⇒tech
1001コメント291KB

■MFC相談室 mfc11.dll■

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/

関連リンクは >>2-10 の辺り。
0002デフォルトの名無しさんNGNG
過去スレ
■ VisualC++(MFC限定)相談室 MFC9.dll■
http://pc2.2ch.net/test/read.cgi/tech/1062098350/
■ VisualC++(MFC限定)相談室 MFC8.dll■ (スレタイ壊れているけど前スレ)
http://pc2.2ch.net/test/read.cgi/tech/1056584836/
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
■ VisualC++(MFC限定)相談室 MFC6.dll■
http://pc2.2ch.net/test/read.cgi/tech/1039607377/
■ 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
0003デフォルトの名無しさんNGNG
>>1
Z!
0004デフォルトの名無しさんNGNG
まえすれ
>>972
Thanks!
これでOKザウンス!
0005デフォルトの名無しさんNGNG
捕手しときます
0006デフォルトの名無しさんNGNG
MFCってもうすぐなくなるそうですが、本当ですか?
0007デフォルトの名無しさんNGNG
>>6
本当です。
0008デフォルトの名無しさんNGNG
MFC42.DLL
   シニ

で命運尽きたと見るべきだろう
0009デフォルトの名無しさんNGNG
MFCは永久に不滅です
0010デフォルトの名無しさんNGNG
最初からMSの提唱プログラミング技術は信用していない。
0011デフォルトの名無しさんNGNG
「の」の位置が変になった。

最初からMS提唱のプログラミング技術は信用していない。
0012デフォルトの名無しさんNGNG
CP/Mのパクリ
UNIXのパクり
CORBAのパクリ
SmallTalkのパクリ
Javaのパクリ

オリジナルは??
0013デフォルトの名無しさんNGNG
無い。
0014デフォルトの名無しさんNGNG
COMは何のパクリ?
0015デフォルトの名無しさんNGNG
MS-DOS
0016デフォルトの名無しさんNGNG
話の流れ断ち切るようですみませんが質問させてください

.NETの開発環境やブラウザのSleipnirとかで使ってる
アイコンの背景の変わるツールバーってどうやって実装するんでしょう?
スタイル設定とかで駄目なん?

0017デフォルトの名無しさんNGNG
>>16
MFCを継承していじりたおす。
0018デフォルトの名無しさんNGNG
ダイアログを使ってて、気になることがひとつあるのですが、
×ボタンでアプリケーションを終了させると、
「コード 20 (0x14) で終了しました。」
で、終了して、タスクバーから終了させると、
「コード 61536 (0xF060) で終了しました。」
と、表示されます。

0で終了していないので、どこかにエラーが潜んでいるのかと思うのですが、
どうやって調べたらよいでしょうか?

検索してもそれらしい情報がなくて、
ヘルプでも、0でなければエラーがあるって事しか書いてないので、
どうやったらいいのかと。。。

どなたか知ってる方お願いします。
0019デフォルトの名無しさんNGNG
>>18
Escキーで終了すると0x1bで、Enterキーで終了すると0x0dになるはずですが。
これはちっともエラーではございません。
0020本田NGNG
>COMは何のパクリ?

CORBA
0021デフォルトの名無しさんNGNG
クライアントがインプロセスサーバーの関数を直接呼べるのはCOMだけなのでは?
0022デフォルトの名無しさんNGNG
こんにちは
初歩的な質問ですが、

VisualC++で新しいMFCプロジェクトとしてMDIを作るとき、
初期状態のコードで下記の部分がありますが、

>myappli.cpp
BEGIN_MESSAGE_MAP(CmyappliApp, CWinApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
// 標準のファイル基本ドキュメント コマンド
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
// 標準の印刷セットアップ コマンド
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()

ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)のコマンド(メニュー)を選ぶと自動的にMDIウィンドウが作成されますが、
このMDIウィンドウを作成するコード(ソース)がどこにも記述されてないのに、どうしてMDIウィンドウが作成されるのでしょうか?
また、ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)も同じく、ファイルを開くDialogが出てきますが、
このコモンダイアログを表示するという記述がされている部分がありません。

これらのコード(ソース)は、どこに記述されてるのでしょうか?
0023デフォルトの名無しさんNGNG
>>22
VCをインストールしたディレクトリ下のMFCってとこにソースがある。
その中をgrepしてみれば?
0024デフォルトの名無しさんNGNG
Attachってどういうものなんでしょう?
0025デフォルトの名無しさんNGNG
>>22
CWinAppの初期化コードの中

cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;

とするとでてこない。この辺が関係してる。
0026デフォルトの名無しさんNGNG
質問:

プロジェクトの新規作成でMFCのMDIを作ったのですが、
そのMDIをSDIに変更したいと思いして、
部分部分を修正したんですが、
どうしてもエラーダイアログ「空のドキュメント作成に失敗しました。」と表示されて、
MainFrameが作成されず、アプリケーションが終了してしまいます。
何故でしょうか?

修正箇所は、
CMDIFrameWnd → CFrameWnd

MultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_system_mfcTYPE,
RUNTIME_CLASS(Csystem_mfcDoc),
RUNTIME_CLASS(CChildFrame), // カスタム MDI 子フレーム
RUNTIME_CLASS(Csystem_mfcView));
      ↓
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(Csystem_mfcDoc),
RUNTIME_CLASS(CMainFrame), // メイン SDI フレーム ウィンドウ
RUNTIME_CLASS(Csystem_mfcView));

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
       ↓
       if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

0027デフォルトの名無しさんNGNG
819 名前:デフォルトの名無しさん[sage] 投稿日:04/06/27(日) 14:46
MFCを使ったダイアログを
スタティックライブラリで実現できるんでしょうか?

DLLで出来るのはわかってるんですが。

820 名前:デフォルトの名無しさん[sage] 投稿日:04/06/27(日) 14:50
>>819
Prof 以上ならできる。

821 名前:デフォルトの名無しさん[sage] 投稿日:04/06/27(日) 15:21
>>820
リソースは
リンクするメイン側に置くのですか?
0028デフォルトの名無しさんNGNG
>>26
気になったのでちょっと調べてみたよ
Error: Trying to create object which is not DECLARE_DYNCREATE
アウトプットに以下のメッセージが出て失敗してたので
mainfrm.hのDECLARE_DYNAMICをDECLARE_DYNCREATEに
mainfrm.cppのIMPLEMENT_DYNAMICをIMPLEMENT_DYNCREATEに
それぞれ変えればOKだったよ
つーか、新規に作ったSDIと見比べればOKかと・・・・

0029デフォルトの名無しさんNGNG
int argc, char *argv[]
のように、外部ファイルドロップで起動した時、
ドロップしたファイル名を取得するにはどうすれば良いですか?
0030デフォルトの名無しさんNGNG
>>29
Wizardが吐いたソースならCHogeApp::InitInsatance()の中に
 CCommandLineInfo cmdInfo;
 ParseCommandLine(cmdInfo);
ってコードあるでしょ。そのあたりで調べてみれば?
あと、__argcと__argvとか。
0031デフォルトの名無しさんNGNG
>>30
助かります!調べてみます!
0032デフォルトの名無しさんNGNG
>>29
文字列で受けるなら
CString cmdstr = GetCommandLine();

__argc変数を使うなら
for(int i = 1; i < __argc; i++){
 CString cmdstr = __argv[i];
}

どちらかというと後者の方が扱いやすいね
0033デフォルトの名無しさんNGNG
ツールバーを作ろうとしているのですが、

//Buttonの作成
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50, 150);
m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);

img.Create(IDB_HOTBUTTON, 22, 0, RGB(255, 0, 255));
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
img.Detach();
→img.Create(IDB_COLDBUTTON, 22, 0, RGB(255, 0, 255));
m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
img.Detach();

矢印部分でデバッグエラーが出てしまいます。
なぜなのかがわかりません。
Createの戻り値を見ても、「1」と出てるのでエラーはないと思われますが。
0034デフォルトの名無しさんNGNG
Createの戻り値が見れると言うことは、
そこではエラーが出ていないのでは?
003533NGNG
>>34
すいません。
今、どうにか解決できました。
大変申し訳ございませんでした。
0036デフォルトの名無しさんNGNG
CEditでJaneDoeのDoe部分みたいに
文字に色つけたりフォント変えたりリンク踏めるようにするのはどうすればいいんですか?
今はリッチエディットでやってるけど98とXPだとdllのバージョンが違うし
微妙に重かったり、選択の文字色反転がイヤだったりで、改造したいんですよ。
0037デフォルトの名無しさんNGNG
無理
0038デフォルトの名無しさんNGNG
>>36
codeguruとかにヒントになるソースがあったはず
0039デフォルトの名無しさんNGNG
CComboBoxでCBS_SORTを動的につけたり外したりって無理でしょうか?
SetWindowLongでできなかったんですが…
0040デフォルトの名無しさんNGNG
MFCで作ったアプリは、MFCのDLLを添付しないと
実行することはできないのでしょうか?
自分が作ったExeのみで配布することはできないでしょうか?
0041デフォルトの名無しさんNGNG
>>39
1. ResetContent
2. スタイル付け替え
3. AddString
でもダメ?
すでにあるアイテムのソート/非ソートをスタイル変更で
切り替えてくれるような器用な造りにはなっていないと思う。
けど、これはAPIスレ用の話題だな。
>>40
MFCをスタティックリンクすれば。
0042デフォルトの名無しさんNGNG
>>40
VC6以前のVCでビルドしたものならDLLの心配はしなくていい
ほとんどのwin32環境でDLL持ってるのが当たり前になってるから

VC7以降なら注釈を付けてDLLのインストールが必要なことを書いておくか
同梱するかした方がいい
0043デフォルトの名無しさんNGNG
>>40
MFCのスタティックライブラリを使用にする
004439NGNG
>>41
駄目でしたorz
APIスレに移動してみようと思います。ありがとうございました。
0045デフォルトの名無しさんNGNG
>>40
スタティック ライブラリで MFC を使用する
0046デフォルトの名無しさんNGNG
ダイアログベースでボタンをつくってそのボタンをクリックすると
メニューの開くと同じ動作させるにはどうすればいいでしょうか?
0047デフォルトの名無しさんNGNG
>>46
CMenu
0048デフォルトの名無しさんNGNG
>>46
「開く」のメニュー項目と同じIDのボタンを
0049デフォルトの名無しさんNGNG
>>47 48
できました

ダイアログに開くからえたビットマップをダイアログのピクチャーボックス
に表示するにはどうすればいいのでしょう?
0050デフォルトの名無しさんNGNG
・ダイアログから得たのでないビットマップをピクチャーボックスに表示する方法を調べる
・それをダイアログから得たビットマップファイルの場合に応用する
0051デフォルトの名無しさんNGNG
>>41
>>42
>>43
>>45
ありがとうございます。
スタティックは知っていたのですが、
結局Exe以外にも添付しなきゃならないとか何とか・・・・
ってどこかのHPで書いてあって、
結局駄目なのか?と思ってたので。。

一応、どのWindowsでも動かないとまずいって言うので、
(95は除外してもよさそうなのですが)
困ってたんです。
環境はVC6なので、大丈夫かと思うのですが。
0052デフォルトの名無しさんNGNG
ちなみにVC.NETスタティックリンクで
作ったexeを検証したところ
Win98 WinME Win2000 WinXP (by VirtualPC)
で動いてます
0053デフォルトの名無しさんNGNG
>>52
ついでにランタイムライブラリもスタティックリンクにしとけよ
0054デフォルトの名無しさんNGNG
Formベースで作ったプログラムを作って、出来たクラスがCXXXView、CXXXDoc、(その他)とした時
CXXXView.h 内で CXXXDoc.h を
CXXXDoc.h 内で CXXXView.h を
それぞれインクルードするとコンパイル出来ないのですが、そう言うものなのでしょうか?
インクルードする順番も一応変えてみたりしたのですが、無理でした。
この方法が無理ならば、DocとViewで相互に呼び出したいときはどうしたらいいのでしょうか?
0055デフォルトの名無しさんNGNG
>>54
CView::GetDocument()
CDocument::GetFirstViewPosition()
CDocument::GetNextView()

DocからViewは普通はポインタを使って直接呼び出すのではなく
CDocument::UpdateAllViews()でドキュメントの変更を通知する。
あとはCView::OnUpdate()で。
0056デフォルトの名無しさんNGNG
ていうか、相互に呼び出したいだけなら.hでインクルードする必要ない
0057デフォルトの名無しさんNGNG
ダイアログにラジオボタンを付けて
それにコントロール変数を追加したいんですが
VC6の時は、グループ先頭を「グループ」にチェック入れて
int変数を追加できたんだけど
VC7.1だと先頭のGroupをtrueに設定して
コントロール変数を追加しようとすると
BOOLしか追加できないみたいなんです
intで追加できないんでしょうか?
0058デフォルトの名無しさんNGNG
>>54
ちょい工夫すれば容易にできる話だが・・・
だが、そーゆーPGはやめておけ。
0059デフォルトの名無しさんNGNG
予め決められたハングル文字を表示したいのですが、
ソースにハードコーディングしたら駄目らしく、
かといってストリングテーブルにいれたら???となってしまいます・・・
文字セットはUnicode文字セットを使用しているので、
エディットボックス間のコピー等は上手く行くのですが・・・

どなたかお知恵を貸して下さい
0060デフォルトの名無しさんNGNG
つかおまいの環境、ハングル入ってるのか?
0061デフォルトの名無しさんNGNG
>>60
WinXPなんで、言語のあたりをいじると、ハングルIMEが使えます。
けど、OCNの翻訳サイトで単語訳してコピペする予定です
0062デフォルトの名無しさんNGNG
最新のでも開発環境そのものはUNICODE対応していないんだっけ?
006359NGNG
>>62
やっぱVC++じゃ駄目ですかね・・・・orz
何故かVBとVC#はすんなり出来てくれたんですが、
どーしてもネイティブじゃないと嫌なもんで・・・
0064デフォルトの名無しさんNGNG
>>59
今AppWizard見てみたのだが、リソースに使用する
言語ってコンボがあるが、それには日本語、英語しか
ないからOSもVCもハングル版買わないといかんのでは?
0065デフォルトの名無しさんNGNG
wchar_t a[] = L"\uac00\uac01\uac02\uac03";
MessageBox(NULL, a, L"韓国語", MB_OK);

少なくともこういうのは通るし動くんで、
・ソースはUTF-8とかでハングルで直接書く
・プリプロセッサとして、UTF-8なソースをShift_JISなソースに書き換える
(リテラルのユニバーサルキャラクタへの置き換え)物を作る
でなんとかなるんじゃ。リソースはどうにもなんないかもだけど。
006659NGNG
>>64
そこには「韓国語」っていうのもあるんですが、
コード生成時に何やらエラーが出て止まります。
やはり環境が揃ってないと無理なんでしょうかね・・・
レスくれた方、どうもありがとです。
もうちっとVC++で粘ってみます。

と、リロードしてみたら!
>>65
これは、素晴しい!
なんとかなりそうです。感激!

0067デフォルトの名無しさんNGNG
>>59
MSDNの「Unires サンプル : Unicode リソース ファイルの使用」
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcsample/html/vcconuniressampledemonstratesuseofunicoderesourcefiles.asp
は?
006859NGNG
>>67
サンクス!
国際化対応のサンプルがいろいろ参考になりました!
一度リソースファイルを外部エディタでUnicode保存すると、
VC.NETのリソースエディタから編集がきかなくなる事が分かりました。
(VC.NETのリソースエディタがUnicode未対応の為)

#define KOREAN_1 L"\uD55C\uAD6D\uC5B4"     //韓国語
#define JAPANEASE_1 L"\u65E5\u672C\u8A9E"   //日本語
#define ENGLISH_1 "ENGLISH"

CString ss;
ss = KOREAN_1;

の様に使う事で、多言語対応する事ができました。
0069デフォルトの名無しさんNGNG
MessageBoxを使うとプログラムが停止します。原因がわかりません、、、
どなたか教えてください。
//App.cpp
#include <afxwin.h>
#include "App.h"

CMainWin::CMainWin()
{
Create(NULL, "sample");
}
afx_msg void CMainWin::OnPaint()
{
//CPaintDC dc(this);
}

afx_msg void CMainWin::OnLButtonDown(UINT nFlags, CPoint point)
{
MessageBox("abcde");//ここで停止(応答なし)
}
BEGIN_MESSAGE_MAP(CMainWin, CFrameWnd)
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
END_MESSAGE_MAP()

BOOL CApp::InitInstance()
{
m_pMainWnd = new CMainWin;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return (TRUE);
}
CApp App;
0070デフォルトの名無しさんNGNG
続き
//App.h
class CMainWin :public CFrameWnd {
public:
CMainWin();
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP()
};

class CApp :public CWinApp {
public:
BOOL InitInstance();
};
//EOF
OnPaintメッセージハンドラにCPaintDC dc(this)を記述すると問題なく動作
します。理由がどうしてもわかりません。
007169NGNG
書き忘れました、環境はVC++6.0です。
0072デフォルトの名無しさんNGNG
実は全然別のところが問題とか。
0073デフォルトの名無しさんNGNG
>>69
メンバ関数版じゃなければ表示されるんでない?<MessageBox()
AfxMessageBox()だっけ?
0074デフォルトの名無しさんNGNG
.NET 2003はユニコードに対応しているよ。
ファイルの保存でユニコードで保存してやると
ちゃんと保存される。
0075デフォルトの名無しさんNGNG
>>69
ほんとだね
これはなかなか興味深い
ちょっと調べてみるか
007675NGNG
まず、OnPaintメッセージがきたときに、ディフォルトの動作を行わないせいで
何時までたってもウインドウが無効領域のままになる
なのでOnPaintの無限ループのような状態が起きている
これのせいで、MessageBoxがメッセージを受け取れないみたいだね
WM_PAINTのディフォルト処理を入れなきゃウインドウズプログラムはだめだってことで
007775NGNG
飯行くので急いで書いたのでむちゃくちゃな文章になってるな・・・
ちゃんと書くと
WM_PAINTメッセージってシステムがこの領域は無効な領域(描画が必要な領域)
だと判断したから発生させるメッセージ(よく再描画するのにInvalidateを呼び出すが
これは、アプリ側で無理やり無効な領域にしているってこと)
このメッセージを受け取ったアプリ側は、適切な描画処理をするもしくは
ウインドウズディフォルトの処理に任せる
このとき使用されるAPIがBeginPaint EndPaint、MFCならCPaintDC
このAPIもしくはクラスを使用した場合、無効領域がクリアされるため
再び無効領域が出来るまでになるまでWM_PAINTが発生されることは無い

69の作ったプログラムでは、WM_PAINTメッセージのハンドラで何も処理をしない為
何時までたってもその領域が無効であるとシステム判断するのでWM_PAINTを繰り返す
WM_PAINTは優先度の高いメッセージなので、この処理が完了しないと他のメッセージは
受け取れない、メッセージボックスはWM_INITDIALOGなど一連のメッセージを受け取って
処理をしない限り動けないので何時までたってもそのメッセージを受け取れない
つまりプログラムが停止しているわけではなく、OnPaintメッセージでループしている

説明下手ですまんが、大体のニュアンスは分かっていただけたかな?
0078デフォルトの名無しさんNGNG
>>68
多言語リソースは.rc2の方に書いておけば、リソースエディタは影響受けない。
もちろん、逆にそこの部分はリソースエディタの支援をまったく受けられなく
なるんだけど、C(++)ソース中にユニバーサルキャラクタで書き込むよりは
可読性があっていいんじゃないかと。
ちなみにユニコードで保存したrc2ファイルは、テキストファイルとして
VisualStudioで編集できる。
007969NGNG
75さんとても丁寧な説明ありがとうございます。
WM_PAINTメッセージが送られ続けているということですね。

Windowsプログラムはまだやり始めたばかりでわからないことが多いですが
とても楽しいです。
これからもがんばっていこうと思います。
本当にありがとうございました。
0080デフォルトの名無しさんNGNG
ダイアログボックスにCAD図形みたいなものを描画するときって、
何かいいコントロールとかってありますか?
ピクチャーコントロールって、こういうときに使うのでしょうか?
0081デフォルトの名無しさんNGNG
>>80
俺はこういう時に使ってる
0082デフォルトの名無しさんNGNG
>>80
ダイアログボックスに貼り付けると、IDがIDC_STATICとなって、
普通のスタティックテキストと扱いが同じなんだよね。
で、どうやって使わせようとしているのかの意図が読み取れなくて???
0083デフォルトの名無しさんNGNG
藻前が何を言おうとしているのか読み取れねーよ!!!
0084デフォルトの名無しさんNGNG
自分でIDを変えるんだよ
0085デフォルトの名無しさんNGNG
教えてください。いまあるアプリケーションで縦のスクロールバーを他のアプリケーションから
スライドさせてそのアプリケーションの表示をスクロールさせたいのですが、
スクロールバーそのものの位置は更新できるんですけど表示はスクロールしません。
どうやればよいのでしょうか?ちなみに今は
void CXXX::foo()
{
    SCROLLINFO si;
    si.cbSize = sizeof(SCROLLINFO);
    si.fMask = SIF_ALL;
    ::GetScrollInfo(m_hScroll, SB_CTL, &si);//m_hScrollはスクロールバーのHWND

    SCROLLINFO tmpsi = si;
    tmpsi.fMask = SIF_POS;
    int pos = si.nPos;
    while(pos < si.nMax)
    {
        tmpsi.nPos = pos;
        ::SetScrollInfo(m_hScroll, SB_CTL, &tmpsi, TRUE);

        //キャプチャ処理

        pos += si.nPage;
    }
}
という感じです。
0086デフォルトの名無しさんNGNG
>>85
InvalidateRect()してみるとか?
0087デフォルトの名無しさんNGNG
アクティブなアプリが他のアプリだから画面更新されんってことか?
プロセス間通信はイベントオブジェクト以外苦手じゃ
0088デフォルトの名無しさんNGNG
SetScrollPosは「スクロールバーの情報を書き換えるだけ」なので、
それじゃアプリにスクロール要求は出ない。
他アプリをスクロールさせるってのはやったことないけど、
単純にWM_xSCROLLを送ればいいんじゃなかろうか。
0089デフォルトの名無しさんNGNG
AfxBeginThreadで作ったスレッドの中からAfxMessageBoxを呼ぶと
MessageBoxがダイアログの中央ではなく、画面の中央に表示されて
しますのですが、ダイアログの中央に出す方法はありませんか?
環境はVC++.NET 2003です。

/* スレッド作成 */
m_Thread = AfxBeginThread(func, (LPVOID)this, THREAD_PRIORITY_NORMAL);
/* スレッド関数 */
static UINT func( LPVOID pParam )
{
CHogeDlg *pHogeDlg;

pHogeDlg = (CHogeDlg*)pParam;
pHogeDlg->Hogehoge();

return 0;
}
/* 実行部分 */
int CHogeDlg::Hogehoge( void )
{
AfxMessageBox("Hoge",(MB_OK | MB_SETFOREGROUND | MB_ICONEXCLAMATION | MB_TASKMODAL),0);
}
009085です。NGNG
みなさんありがとうございます。>>88さんのおっしゃるとおり、
親にWM_VSCROLLを送ることで実現できました。
0091デフォルトの名無しさんNGNG
>>89
普通はどっちなんだっけ?
ともかく、ダイアログ関係を中央に出そうとするのはCenterWindowの仕業だから、
そこにブレークポイントをかけて、しかるのちに対策を考えればいいかと。
0092デフォルトの名無しさんNGNG
>>89
そのスレッドでダイアログの情報を持ってないのが原因だろうから、
何らかの方法でCWnd*を渡してメンバ関数版を使えばいいんでないかな。
0093デフォルトの名無しさんNGNG
>>89
試していないけど、CHogeDlgがCDialogを継承
しているならのメンバ関数のメッセージボックスを
呼び出せばいいんじゃないの?
0094デフォルトの名無しさんNGNG
>>89
>ダイアログの中央に出す方法はありませんか?
方法はある。 WM_INITDIALOG
もっと簡単な方法が知りたいってことか?
どんくらいまでわかるのかを書かないと
それこそ基本中の基本から説明せにゃならん。
もちろん、それは万単位が相場で只ではできない。
0095デフォルトの名無しさんNGNG
MDIでフォームビューを選んだとき、フォームのダイアログのサイズを
MoveWindow()とかSetWindowPos()でサイズを変えようとすると
必ず落ちますが(DEBUGビルド時)、これって許されないのでしょうか。
CChildFrameのサイズに合わせて大きさを変えたいのですけど。
009695NGNG
>>95
簡単にいいますと、フォーム内のダイアログテンプレートのサイズを
変更するにはどうしたら良いのか、ということです。
単純にGetDlgItem()ではダメですよね。NULLが返ってきてしまいます。
009789NGNG
>>91,92,93,94
回答ありがとうございます。
とりあえずスレッド作成元のCWnd*をグローバル変数に設定して、
スレッド内からMessageBoxを呼び出す方法と、直接メンバ関数の
MessageBoxを呼び出す方法を試しましたが、結果は同様でした。
なお作成元のスレッドでAfxMessageBoxを呼び出した場合には、ダイアログの
中央に表示されます。
>>94
当方組み込み向けのCが本職で、Windowsプログラムはほとんど経験がありません。
スレッド内でメッセージボックスを表示させることはWindowsプログラムではほとんどしな
いことなんでしょうか?
0098デフォルトの名無しさんNGNG
>>97
俺もあまり詳しくはないが、そこまでMessageBoxにこだわる必要はないのでは?
メッセージ出力用のダイアログクラスを作成して、そのクラスに親の位置を渡せば良いのでは
ないのかな
ダイアログクラスなら、OnInitDialog()で表示位置やサイズを変更すると簡単なんだけど。
意図していたことと違うかもしれないが、暫定的にしておいて、他のもっと重要なところに
パワーをかけた方が良いと思うよ
0099デフォルトの名無しさんNGNG
>>97
スレッドにはメッセージループを持つスレッドと、持たないスレッドがある。
WM_INITDIALOGはメッセージなわけだが・・・
0100デフォルトの名無しさんNGNG
>>97
Windowsでは、ウインドウはどれかのスレッドに属している、
つまりスレッドがウインドウを保持しているといっていい。
そして1つのウインドウは複数のスレッドに共有されることは無い。
ウインドウには親子関係があるがこれは同一スレッド内においてのみ有効
スレッドがウインドウを作った場合親ウインドウに別のスレッドのウインドウを
指定しても無効になる
メッセージボックスの場合、内部的にCenterWindowが呼ばれるわけだが、
親ウインドウがいないもしくは無効な為、ど真ん中に表示されてしまう
どうしてもと言うなら、試したこと無いので出来るかどうかわからないが
見えない親ウインドウをスレッド元のウインドウサイズにあわせて作って
おいてメッセージボックスを呼び出すとか
0101デフォルトの名無しさんNGNG
>>96
つまり、スクロールバーを表示させたくないってこと?
0102デフォルトの名無しさんNGNG
>>96
一応調べてみたらこういうのあったけど
ttp://www.codeproject.com/docview/resizableformview.asp
0103デフォルトの名無しさんNGNG
CStringArrayのサンプルプログラムが欲しいです。
参考ページでもいいのでお願いします。
0104デフォルトの名無しさんNGNG
>>103
別スレだけど
http://pc5.2ch.net/test/read.cgi/tech/1087929711/969
でCの宿題の回答にCStringArray使ってるね
0105デフォルトの名無しさんNGNG
>>104
コンパイルすらできない俺って・・・_| ̄|○
VC7ですが、助けてくださらんか?
01061/2NGNG
>>105
長くなって申し訳ないが、969さんのコード全部転載させてもらいますた。
あくまで例として載せてくれたみたいなので、宣言が抜けてたりしたのを
追加しただけです。

#include <afxwin.h>
#include <io.h>
#include <iostream>
using namespace std;

CStringArray arDstFileList;
CStringArray arSrcFileList;

void Read(CString& csFile)
{
CStdioFile readFile;;
CString csRead;
readFile.Open(csFile,CFile::modeRead);
CString csDstFile;
CString csSrcFile;
while (readFile.ReadString(csRead)){
csDstFile = csRead.Mid(0,csRead.Find(":"));
csSrcFile = csRead.Mid(csRead.Find(":") + 1,csRead.GetLength());
arDstFileList.Add(csDstFile);
arSrcFileList.Add(csSrcFile);
}
readFile.Close();
}
01072/2NGNG
void Move()
{
// ファイル有無(書き込み権チェック)
for (int i = 0;i < arSrcFileList.GetSize();i++){
if (0 != _access(arSrcFileList.GetAt(i),6)){
throw new CFileException();
}
}
// ファイルの移動
for (i = 0;i < arSrcFileList.GetSize();i++){
if (0 == ::MoveFile(arSrcFileList.GetAt(i),_T("C:\\temp\\") + arDstFileList.GetAt(i))){
throw new CFileException();
}
}
}

main()
{
try{
Read(CString("C:\\list.dat"));
Move();
}
catch(CException* pE){
pE->Delete();
cerr << _T("ERROR") << endl;
}
}
0108105NGNG
>>106
VCを初めて3日目なんで、こういうコードを載せてもらった場合、
どうやってスケルトン?(でしたっけ)を作るかわかりません。
MFCアプリケーションで作ればいいのでしょうか?
0109105NGNG
>>106
サンプルコードありがとうございました。
お礼が遅れて、すみません。
0110デフォルトの名無しさんNGNG
>>105
上のコードだとMFCとは言ってもMFCの中の
CStringArrayを使うだけで、中身はコンソールプログラム
だから(簡単に書くとコンソールプログラムはmainから
始まり、ウィンドウズプログラムはWinMainから始まる)
とりあえず、Win32コンソールプロジェクトで作成する。
で、CStringArrayを利用するにはMFCをリンクする必要が
あるのでプロジェクトのプロパティで「MFCの使用」を
「共有DLLでMFCを使用する」または「スタティックライブラリ
でMFCを使用する」に設定する。
始めて3日だと、リンクとかDLLとかスタティックとか言われても
わけわからないだろうけど、MSDNにも情報があるのでこつこつ
やってちょ。
0111105NGNG
>>110
がんばってコンパイルはとおりましたが、エラーが出て実行できませんでした。
もっと勉強します。
0112デフォルトの名無しさんNGNG
スプラッシュウインドウとしてメッセージを表示させるだけの
ダイアログにスタティックウインドウを貼り付けただけのウインドウを作りました
CWinApp::InitInstance中で作成、表示させようとするとウインドウ自体は
表示されるのですがスタティックコントロールのメッセージが表示されません。
メッセージはInitInstanceの関数を抜けたあとなら表示されるので
ただ単純に再描画の為のメッセージを受け取れていないだけだと思うのですが
InitInstance中にメッセージポンプ入れるなど色々試してみましたが思うように
表示されません。

今は、別スレッド化してメッセージの表示は出来ていますが
出来たら単一スレッドで動かしたいです。何かよい方法をご存知の方いらっしゃったら
教えてください

0113デフォルトの名無しさんNGNG
質問なのでage
0114デフォルトの名無しさんNGNG
>>113
これはダメかもわからんな
0115デフォルトの名無しさんNGNG
>>105
そっかぁ。もっと簡単な例だせばよかたーYO。
ごめん。
MFCの配列クラスはCStringArrayとかCUIntArrayとか
いっぱいあるけど、テンプレートというのを覚えると、
CArray<CString>、CArray<UINT> とCArrayクラステンプレート
だけ覚えると何でも作れるようになるYO。
その場合でもよく使うのは、Add、GetAt、GetSizeとかで
その他のも使ってるうちに覚えてくる。

#include <afxwin.h>
#include <stdio.h>

int main(void)
{
CStringArray ar;
ar.Add("あ");
ar.Add("い");
ar.Add("う");

printf("配列の要素数は %d コです。\n", ar.GetSize());

for (int i = 0; i < ar.GetSize(); ++i) {
printf("配列の %d 番目の 要素は %s です。\n", i, ar.GetAt(i));
}

return 0;
}
0116デフォルトの名無しさんNGNG
つーか始めて三日でなんでCStringArrayなのか分からない。
まずCString、そのうちCArrayって感じだと思うが。それぞれの
概念が理解できていれば、Arrayの仲間についても自然と分かる
はずだし。
0117105NGNG
>>115
ありがとうございます。
なんとなく、わかりました。
何でも作れるようになる・・・素晴らしい言葉ですね。
頑張ってマスターします。
今後とも宜しくお願いします!
0118デフォルトの名無しさんNGNG
素直にvector使おうよ…
0119デフォルトの名無しさんNGNG
>>118
MFCで作っている限りにおいてはvectorを使用するよりも
CStringArrayのほうが利点が多い
0120デフォルトの名無しさんNGNG
漏れもMFC使ってる分にはSTL使わないなぁ
0121105NGNG
>>118
vectorを使うとCStringArrayよりいいのでしょうか?
0122デフォルトの名無しさんNGNG
>>121
CString使うなら、CStringArrayで問題ない。
0123151NGNG
>>122
逆にstringだとvectorですか?
0124デフォルトの名無しさんNGNG
MFCでコンテナとして使うだけならデバッグ性能やシリアライズが出来る
CStringArrayが良い
アルゴリズム使う場合はstlだけどね
0125デフォルトの名無しさんNGNG
該当するものがなければvectorなり使うしかない。
0126デフォルトの名無しさんNGNG
>>125
該当するものとはどういう意味ですか?
0127デフォルトの名無しさんNGNG
ちなみに、VCでstl使うならstlportの方が良いよ
0128デフォルトの名無しさんNGNG
スレッドを使うプログラムを作ったのですが、
スレッドからダイアログにメッセージをセットしようとするとアサートします。
スレッドが怪しいのですが、
UINT thread(LPVOID pParam)で作って
CTestdlg;

として、dlg.GetDlgItem(IDC_EDIT1)->SetWindowText(msg);

では駄目なのでしょうか?
どうすればセットできますか?
0129デフォルトの名無しさんNGNG
>>127
だったらBoostでいい
0130デフォルトの名無しさんNGNG
>>129
俺も使ってるけどねboost
ただ敷居がちと高い
0131112NGNG
もう少し詳しく書いてくれたら教えるよ
0132デフォルトの名無しさんNGNG
>>128だった
0133デフォルトの名無しさんNGNG
>>110
便乗で申し訳ありませんが、
1.「共有DLLでMFCを使用する」
2.「スタティックライブラリでMFCを使用する」

1.2はどうちがうのでしょうか?
0134デフォルトの名無しさんNGNG
>>129
boostはstl実装じゃないじゃん。
0135デフォルトの名無しさんNGNG
libをリンクするか、dllを使うかの違い。
0136デフォルトの名無しさんNGNG
>>132
ダイアログベースでスレッドをコールするようにしているのですが、
そのクラスへ Cクラス dlg
として、dlg.GetDlgItem(IDC_EDIT1)->SetWindowText(msg)とすると
アサートします。
コンパイルは通るのですが。
0137デフォルトの名無しさんNGNG
>>136
ワーカスレッドで作ってるから。
0138デフォルトの名無しさんNGNG
>>137
他にどんな方法があるのでしょうか?
0139112NGNG
>>136
う〜ん、わからんw
まずスレッドを生成している場所はどこ?
生成方法は?
0140112NGNG
ついでにそのダイアログクラスは、元のダイアログなの
関係が上手くつかめない
0141デフォルトの名無しさんNGNG
>>138
ユーザーインターフェイススレッド
0142デフォルトの名無しさんNGNG
>>139
生成場所はダイアログで実行される関数内です。
CWinThread *p_thread = ::AfxBeginThread(Thread, this);
こんな感じでThread関数を呼び出します。
UNIT Thread(LPVOID pParam)
ワーカスレッドを真似てみたのですが。。怪しいです
0143デフォルトの名無しさんNGNG
>>140
ダイアログは一つです。クラスも一つです。(スレッドはクラスの宣言をしてません)

>>141
聞いたことはありますが、使ったことはありませんでした。
ちょっと調べてみます。
0144デフォルトの名無しさんNGNG
あーなるほど
スレッドに元のダイアログのポインタを引数として渡して
そこからダイアログの子ウインドウに何かやっているってことか
0145デフォルトの名無しさんNGNG
アサートしているのはどこ、GetDlgItemのウインドウハンドルがNULLとかかな?
0146デフォルトの名無しさんNGNG
>>144
そんな感じでしようとしてましたができませんでした。
0147デフォルトの名無しさんNGNG
生成場所のダイアログで実行される関数って何?
0148デフォルトの名無しさんNGNG
使用で
「マルチスレッドに対応すること」
と書かれていた場合、どんな風に実装すればいいのでしょうか?
0149デフォルトの名無しさんNGNG
またすごい質問がきたな。w
0150デフォルトの名無しさんNGNG
>>145
多分そうです。ウィンドウハンドラがNULLです。
0151138NGNG
>>147
OnOK()です。
0152デフォルトの名無しさんNGNG
>>148
同時に同じリソースにアクセスされても整合性が取れる実装ってことだね
ライブラリなんかを作る場合、その部分をしっかり作っておかないと不味い
0153138NGNG
ユーザインタフェーススレッドはこのコール方法で合っていますか?

CSubThread *pThread = (CSubThread*)AfxBeginThread(RUNTIME_CLASS(CSubThread),THREAD_PRIORITY_NORMAL, 0, 0);
pThread->m_bAutoDelete=FALSE;
pThread->ResumeThread();

これでCWinThreadの派生クラスを作成しましたが、これでよいのでしょうか?
複数のスレッドにするにはその数分クラスを作成しないといけないのですか?
0154デフォルトの名無しさんNGNG
OnOkか・・・ちなみに、そのコントロールは存在しているよね
0155138NGNG
>>154
はい。デフォルトのまま置いてあります。
0156デフォルトの名無しさんNGNG
>>153
言っておくけどユーザインターフェーススレッドはそのスレッドでウインドウを
マネージしたい場合(メッセージキューを作って云々ってことね)に
作るスレッドなので138の今回の目的のためには使えないんじゃないかと思う

なぜならユーザスレッドとワーカスレッドなんてのはMFCの上だけで存在するものだし
多分もっと根本的な問題だと思うけど
0157デフォルトの名無しさんNGNG
まさかとは思うけど
OnOKの実装ってそのままにしていない?
CDialog::OnOKのディフォルトって内部でEndDialogを呼び出すけど。。。
0158デフォルトの名無しさんNGNG
>>155
たぶんソース張ってもらったほうが早いんで、ソース張ってくれます?
スレッドの部分だけでいいんで。
0159デフォルトの名無しさんNGNG
ちなみに今ダイアログでこんなの作ってみたが問題なく動いたよ
UINT ThreadFunc( LPVOID lpVal )
{
CThreadTEstDlg *pDlg = (CThreadTEstDlg *)lpVal;
pDlg->GetDlgItem( IDC_EDIT1 )->SetWindowText( "テスト" );
return 0;
}

void CThreadTEstDlg::OnOK()
{
// TODO: この位置にその他の検証用のコードを追加してください
CWinThread *pThread = AfxBeginThread( ThreadFunc, this );
//CDialog::OnOK();
}
0160158NGNG
>>159
漏れも試したら普通に動いたんで、なにか根本的に間違えてると思う。
0161138NGNG
こんな感じです。

void CTestDlg::OnOK()
{
threadflag = 1;

CWinThread *p_thread = ::AfxBeginThread(Thread, this);
//CDialog::OnOK();
}

UNIT thread(LPVOID pParam)
{
CTest dlg;
CString msg;

while(threadflag){
// 処理
//msgにメッセージを格納
}

dlg.GetDlgItem(IDC_EDIT1)->SetWindowText(msg);
}

threadflagがグローバル変数のフラグで
こいつは本当はMutexLockとかしてもう少し複雑に処理してますが、
流れはこんな感じです。
0162デフォルトの名無しさんNGNG
あぁ、やっぱり。。。。
0163デフォルトの名無しさんNGNG
>CTest dlg;
ここ
0164デフォルトの名無しさんNGNG
いやな予感はしていたが・・・
0165デフォルトの名無しさんNGNG
じゃ、後はよろしく
俺は寝ます・・・
0166138NGNG
>>162-163
直りました。。
ありがとうございました。
0167デフォルトの名無しさんNGNG
>>106
これをstl使って書いたコードが見たいのですが、誰か書いてくれませんか?
0168デフォルトの名無しさんNGNG
>>167
>115のでもいいなら...

#include <vector>
#include <string>
#include <stdio.h>
using namespace std;

int main(void)
{
vector<string> vec;
vec.push_back("あ");
vec.push_back("い");
vec.push_back("う");

printf("配列の要素数は %d コです。\n", vec.size());

for (int i = 0; i < vec.size(); ++i) {
printf("配列の %d 番目の 要素は %s です。\n", i, vec[i].c_str());
}

return 0;
}
0169つづきNGNG
string、vectorがSTLで定義されているクラスです。
for文のところは
int i;
vector<string>::const_iterator iter;
for (i = 0, iter = vec.begin(); iter != vec.end(); ++iter, ++i) {
printf("配列の %d 番目の 要素は %s です。\n", i, iter->c_str());
}
でもOK。これはSTLのイテレータという機能を使った方法。(イテレータは自分で勉強してちょ)

0170デフォルトの名無しさんNGNG
>>168
深夜にありがとう。
がんがりまっす
0171デフォルトの名無しさんNGNG
>>106
これさー、datのSTARTとENDそのまま読み込むからエラーになるんだよ。
そりゃ、コンパイル通っても実行はできんさw
0172デフォルトの名無しさんNGNG
質問です
CDialogBar上に、スピンボタンを配置しました
CDialogBarは、派生クラスを作らないとMSDNにあったのでコントロールのハンドリングは
すべてCMainFrame上に持ってきています。
このようにすると、スピンコントロールがどうしてもEnableになりません
これはどういうことでしょうか
環境はVC6sp6です
017397NGNG
メッセージボックスっぽいものを自作することで
解決しました。
回答をくれた皆さんありがとうございました。
0174デフォルトの名無しさんNGNG
>>172
CDialogBar::OnUpdateCmdUIをオーバーロードしないとあかんらしいです。
うちはVS.NETだけど、たぶん同じだと思います。
0175デフォルトの名無しさんNGNG
MFCでコマンドライン引数を渡したいです。

m_lpCmdLineを使うのはわかったのですが、サンプル欲しいです。

渡したいコマンドライン引数は
「xxx.exe -a:c:\hoge.txt -b:c:\poko.txt」
MFCのダイアログベースで制作しているアプリです。
引数を他のcppファイルで受け取って、変数に入れて使用したいです。

宜しくお願い致します。

0176デフォルトの名無しさんNGNG
>>174
回答ありがとうございます
つまり、CDialogBarを派生させないといけないと言うことですね

問題のおきているソースは、かなりでかいプロジェクトでCDialogBarのほとんどの
コマンドハンドラーはCMainFrameに記述されています。
そのためCDialogBarの派生クラスに持っていくのは結構手間がかかってしまいます。

ためしに新規にダイアログバーを持つSDIアプリを作ってみたところスピンコントロールは
問題なくEnableになっていました。
MFCのソースを解析してみたところ、通常ボタンコントロール以外はGet(DLGC_BUTTON以外)
Enableになるように見受けられるのでもう一度どういう原因でDisableになるか調べてみようと思っています
0177デフォルトの名無しさんNGNG
途中で送信してしましました

・・・・
問題なくEnableになっていました。
MFCのソースを解析してみたところ、ジェネリックボタンコントロール以外は
(WM_GETDLGCODEの戻り値がDLGC_BUTTON以外)
Enableになるように見受けられるのでもう一度どういう原因でDisableになるか
調べてみようと思っています

0178デフォルトの名無しさんNGNG
ついでだから回答w
>>175
MFCの場合引数はCCommandLineInfoを継承したクラスを生成して
ParseParam関数をオーバーライドして引数を解析するというのが一般的です。
(といいつつあまり一般に利用されていないけど)
今回の引数は形式がウインドウズの標準と違うため、独自に文字列の
切り離しなどを入れるしかありません-をオプションの識別子としているのであれば
-を取ってコロンを境に前後に文字列を分ける等の処理を入れれば良いでしょう

さてそれを他のcpp(多分他のクラスということでしょうか)に渡すのであれば
ab切り出したそれぞれの文字列変数(CStringなど)を別のクラスに渡せばいいと思います
0179デフォルトの名無しさんNGNG
>>175
>>32
0180デフォルトの名無しさんNGNG
すいません。
ちょっと質問です。

今、巷の普通の本屋さんで売っているWindowsプログラムの本は大体Visual C++の
本です。
それでそういう本には、「ウイザードで勝手に作られるんで、カスタマイズしたいときは
ここをいじってください」としか書いてなくて、なぜそこをいじればいいのか、プログラムが
どういう流れになっているのか全く分かりません。

結局、SDKの方が分かりやすいと思い、まずはそっちをやることにしました。
みなさんはどうやってMFCを勉強されたのでしょうか?
もっと良い入門書があるのでしょうか?
0181デフォルトの名無しさんNGNG
>>180
どの関数がどのクラスのメンバか意識するようにしたら理解できた。
関数名しか書いてなくても、クラス名::関数名 っていうようにして憶える。
0182デフォルトの名無しさんNGNG
>>180
> それでそういう本には、「ウイザードで勝手に作られるんで、カスタマイズしたいときは
> ここをいじってください」としか書いてなくて、

まずはそこから始めて、具体的な成果物を作らないことにはモチベーションが
持続しないと思うが。体系なんてものは大きすぎてなかなか理解できるもので
ないし、とにかく何か動くものを作れるようになることが先。手段は後で良いんだ
よ。まず「何を作りたいか」、「どういう動きをさせたいか」が大切。それに沿って
どうすれば良いかを調べていく。経験を重ねれば、下層にあるものがだんだん
見えてくるし、それからシステムの学習に入ればいい。

もちろん、CやC++の基礎がないようなレベルだったら話は別。そういった
言語レベルの基礎知識は身に付いてないとVCプログラミングは難しい。
0183デフォルトの名無しさんNGNG
>>180
そんなあなたに
翔泳社の標準講座MFC ハーバートシルト著
0184デフォルトの名無しさんNGNG
>>180
MFC→ウィザードが生成したものをいじる
SDK→猫からソースパクっていじる

結局同じ
0185デフォルトの名無しさんNGNG
>>180
食わず嫌いせずとりあえず一番高いものに食いついて、消化できなくて吐き出して、
高い金払って食って吐いて、高い金払って食って吐いて、
食って吐いて、食って吐いて、食って吐いて……と繰り返しあがき続けていたら、
いつの間にかMFCでもSDKでも問題なく使えるようになり、物も食えるようになっていた。

しかし、そこに行き着くまでに消費した書籍代は…… _| ̄|○
0186デフォルトの名無しさんNGNG
本来、クラスライブラリはその中の構造に関する知識を必要としな
いものだ。したがって
>なぜそこをいじればいいのか
>プログラムがどういう流れになっているのか
なんて気にするな。
と考える俺は少数派だと自覚しております。
0187デフォルトの名無しさんNGNG
>>185
途中で降りたらベット丸損だぞ
本と同じ重さの札束を狙う大博打ってとこを忘れんな
0188デフォルトの名無しさんNGNG
void hoge(void)
{
  CPen myPen;


  myPen.DeleteObject(); ←これいるんですか?
  Delete myPen;      ←これもいるんですか?
}

CPenってスコープ外れる時に、この辺やってくれないの?
0189デフォルトの名無しさんNGNG
>  Delete myPen;      ←これもいるんですか?

こんなのいれたらコンパイルとおらねぇよ。
0190デフォルトの名無しさんNGNG
>>189
myPen.DeleteObject();
これ、必須ですか?
0191デフォルトの名無しさんNGNG
msdnより、

1.スタック フレーム上にグラフィック オブジェクトを定義します。CreatePen など、それぞれの型固有の作成関数を使って、オブジェクトを初期化します。コンストラクタでオブジェクトを初期化することもできます。
 1 段階で作成する方法と、2 段階で作成する方法については以下に説明します。
2.オブジェクトを現在のデバイス コンテキストに選択し、前に選択した古いグラフィック オブジェクトを保存します。
3.現在のグラフィック オブジェクトを使い終わったら、古いグラフィック オブジェクトをデバイス コンテキストに選択し直して、状態を復元します。
4.フレームに割り当てられたグラフィック オブジェクトは、スコープからはずれたときに自動的に削除されます。

これ見て意味わからんかったら再度質問しろ。
0192デフォルトの名無しさんNGNG
>>188
その変数がスコープ内で使い切りになっていて、デストラクタによる削除で
間に合う場合は、DeleteObject()が不要。ただしDeleteObject()を書いても
悪くはない。

デストラクタに任せるか、明示するかの違い。あるいはそれぞれその必要が
あるかどうか場合によって選択する。

>Delete myPen;
は?
0193デフォルトの名無しさんNGNG
>>191
>>192
ありがとう、謎が解けました。
これで熱帯夜も眠れそうです。

Delete myPenは立ち読みした時に載っていて、
「え?そんなんまで書くんだ・・・」
と記憶していたもんで・・・
0194本田NGNG
>復刊リクエスト投票
>MFCインターナル
>著者名 G. シェパード/S. ウィンゴ=著、玉井 浩=訳
>出版社 アジソン・ウェスレイ・パブリッシャーズ・ジャパン
ttp://www.fukkan.com/vote.php3?no=24811

興味のある方は投票お願いします。
0195デフォルトの名無しさんNGNG
>>188
MFCってよりC++の根本的な理解が足りないだけじゃないんですか?
0196デフォルトの名無しさんNGNG
>>193
deleteはnewしたときだけ
0197デフォルトの名無しさんNGNG
>>195
CDCとCClientDCのデストラクタの違いについて
C++の根本的な理解で説明してくれ
0198デフォルトの名無しさんNGNG
CDC::~CDC()
{
    if (m_hDC != NULL)
        ::DeleteDC(Detach());
}

CClientDC::~CClientDC()
{
    ASSERT(m_hDC != NULL);
    ::ReleaseDC(m_hWnd, Detach());
}
0199デフォルトの名無しさんNGNG
CPenから話が飛んでますよ
0200デフォルトの名無しさんNGNG
>>198
それがMFCのお話だ
0201デフォルトの名無しさんNGNG
っていうか、C++理解していれば、
わざわざここに質問するようなことではないのだが。
単なる仕様だろ。
0202デフォルトの名無しさんNGNG
そのMFCの仕様が分からないから、ここに質問したのだと思われ・・・
0203デフォルトの名無しさんNGNG
仕様ならヘルプに書いてあるよ。
>構築時に Windows の GetDC 関数を呼び出し、
>破棄時に ReleaseDC 関数を呼び出します。
0204デフォルトの名無しさんNGNG
>>202
ヘルプも見ないで質問する人、どう思います?
0205デフォルトの名無しさんNGNG
>>204
ヘルプを見れない環境ですが、何か?
0206デフォルトの名無しさんNGNG
>>205
これか
http://www.itmedia.co.jp/news/articles/0407/07/news061.html?nc30
0207デフォルトの名無しさんNGNG
これから先は、

ヘルプに書いてある事質問禁止

でお送りします
0208デフォルトの名無しさんNGNG
ム板ってヘルプみたいなもんだろ。違うか?
0209デフォルトの名無しさんNGNG
>>208
C++の根本的な理解が足りない人
0210デフォルトの名無しさんNGNG
>>209
C++ と何の関係が?
0211デフォルトの名無しさんNGNG
>>210
>>195に聞いてくれ
0212デフォルトの名無しさんNGNG
もうさ、BCBにしとけって
マジおすすめ
0213デフォルトの名無しさんNGNG
BCBの何がいいのかマジわからんぞ
つか、WindowsアプリではVC最強!
0214デフォルトの名無しさんNGNG
そんな恥ずかしい事、ageて言わないでくれ・・・
0215デフォルトの名無しさんNGNG
>>214
>>213は事実ですが・・・
0216デフォルトの名無しさんNGNG
MASMは?
0217デフォルトの名無しさんNGNG
名刀のような名前ですね。
0218デフォルトの名無しさんNGNG
>>213
はげ同
BCBは使えるが、VC++は使えないなんて香具師は
まず、仕事回してもらえないだろうね
0219デフォルトの名無しさんNGNG
仕事は回ってこないが、意固地な友達が増えるという利点がある。
0220デフォルトの名無しさんNGNG
スレ違いな話はそろそろやめれくれや
0221デフォルトの名無しさんNGNG
ヘルプが見れない環境って、
その時点で仕事放棄してるのと同じだ...orz
0222デフォルトの名無しさんNGNG
>>221
少なくても、本人の仕事環境に対する意識はゼロといえるだろう。
ヘルプが見れない環境のくせに、ここで得意になって質問されてもね。
車でガス欠しちゃうくらい恥と思わなきゃ。
0223デフォルトの名無しさんNGNG
え?VC++ってヘルプ無いの?!!!
最弱〜 orz
0224デフォルトの名無しさんNGNG
>>222
まともに答えられないくせに上級者気取りか。
おめでてーな。
0225デフォルトの名無しさんNGNG
2chできる環境ならオンライン版の
MSDNライブラリが見られるはず。
0226デフォルトの名無しさんNGNG
レスればレスるほどに恥ずかしさが増してくるよ。
VC++ぐらい1人でインストールしなさいって。
そうすりゃヘルプぐらい見れるから。
0227デフォルトの名無しさんNGNG
釣られまくりだな
0228デフォルトの名無しさんNGNG
趣味でやっていますが…
0229デフォルトの名無しさんNGNG
全部自演ですよ?
0230デフォルトの名無しさんNGNG
ところで226みたいな奴はこのスレに何を期待してるんだ?
0231レスるNGNG
レスる
0232デフォルトの名無しさんNGNG
ヘルプは読み方が分からないってのもあるからねぇ。
日本語かどうかじゃなくて、書いてある言葉そのものが読みきれないっていうか。

その辺をうまく要約してくれる神を求めて、ここに書いてることもあるでしょ。
0233デフォルトの名無しさんNGNG
MFCを使ったOOPのやり方について解説している本あるいはサイトがあったら教えてくれませんか?
0234デフォルトの名無しさんNGNG
>>233
こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0235233NGNG
すいません、まとはずれな質問しましたか??各クラスの役割がいまいち
よく分からないんですが・・・。
0236デフォルトの名無しさんNGNG
>>235
まとははずして無いと思います、
まともな回答者を待ちましょう
0237デフォルトの名無しさんNGNG
>>235
ところでヘルプは読んだか?ヘルプは?
0238233NGNG
>>237
一応読みました。OOPの勉強はしたのですが、いざMFCで実現しようとすると、どのように
したらよいか、ってのが分かりません。例えば、CWinAppっていうのはコントローラなのか、
とか、ドキュメントクラスはなんなのかってことです。ほかには、画面を次々と切り替えて
行くとき、それぞれの画面のクラスを作成するのか?とかよく分かりません。作成すると
したら、それを切り替えるたり、生成したりするのはどのクラスでするべきなのか、とかです。
0239デフォルトの名無しさんNGNG
つまり、まだC++使う時期じゃないと思うのですよ。
自分で試行錯誤、いろいろやりながら覚えていく手間を惜しむのなら、
はじめからやめたほうがいいと思います。
0240デフォルトの名無しさんNGNG
でたな。上級者気取りのオッサン
0241デフォルトの名無しさんNGNG
>>240
さぞ悔しかったんだろう
ほっといてやれ
0242デフォルトの名無しさんNGNG
お前ら、まだやってんの?寝たら?
0243233NGNG
>>239
いや、ある程度実践的なプログラムの作成はこなしたんですが。いまだにどうすべきか、
ってのが分からずだましだましプログラミングしてる状況です。

あと240ではないです。
0244デフォルトの名無しさんNGNG
>>243
>>239みたいな変な奴に気を使う必要はないよ。
0245デフォルトの名無しさんNGNG
>>233
実践的なプログラムの作成をこなせてるのなら
今のままでも問題ないのでは?
0246デフォルトの名無しさんNGNG
なんだ。趣味のプログラムか。
0247デフォルトの名無しさんNGNG
まさか仕事中に、「ドキュメントクラスってどうやって使うのですか?」
なんて聞いてまわったりしてないよね... orz
0248デフォルトの名無しさんNGNG
>>246
また上級者気取りのレス。いい加減にしろ。
0249本田NGNG
>これから先は、
>ヘルプに書いてある事質問禁止
>でお送りします

BCBはMFCが付いていてもヘルプがない、冷たいこと、言わんといて。


0250デフォルトの名無しさんNGNG
225 :デフォルトの名無しさん :04/07/09 04:06
2chできる環境ならオンライン版の
MSDNライブラリが見られるはず。
0251中級者気取りNGNG
ドキュメントクラスなんて、あれよ。ただのクラス。
ちょっと規模がでかくなりそうなんで、
描画用(ビュークラス)とデータ処理用(ドキュメントクラス)
に分けてみっか!てな感じ
0252デフォルトの名無しさんNGNG
>>251
そういうことじゃないんですが・・・、なんていったらいいんでしょうか?それ、
曖昧なんですよね・・・。その説明じゃ役に立たなかったというか・・・。
0253デフォルトの名無しさんNGNG
>>252
どうわからないのか説明できないのなら教えようが無いな。
0254デフォルトの名無しさんNGNG
>>253
例えば、商品注文システムを考えると、商品注文クラス(商品の1回での注文を表すクラス)というのが
ありますよね?それをドキュメントクラスの子クラスとするのか、それとも、そのクラスのオブジェクトを
保持するのがドキュメントクラスなのか、とかです。
0255デフォルトの名無しさんNGNG
>>254
分離独立です。
関連性もたせちゃダメ
0256デフォルトの名無しさんNGNG
>>255
ということは、そのクラスのオブジェクトを保持するのがドキュメントクラスってことですか??
0257デフォルトの名無しさんNGNG
>>238
OOPなんて言葉に縛られず、ひとつひとつのクラスの使い方を確実にマスターしてくことでしょうな。
100個も覚えられれば、そのうちピーンと何かがひらめいてくるだろう。
一度ひらめいてしまえば、クラスなんて覚えなくてもヘルプ片手にプログラムできるようになる。

その辺の話は、知るより感じなければならない部分なので、他人に聞いても解決しないよ。

0258デフォルトの名無しさんNGNG
仮想リストコントロール内でのアイテム選択変更に
SetItemState(nIndex, LVIS_SELECTED, LVIS_SELECTED | LVIS_FOCUSED);
とやっても選択が変わってくれないんですけど、これは使えませんか?
仮想LCだと選択についてもやり方が別になってますか?
0259デフォルトの名無しさんNGNG
>>254も>>256も全部不正解
0260デフォルトの名無しさんNGNG
>>250
ケータイから2chにアクセスしていますが、何か?
0261デフォルトの名無しさんNGNG
ドキュメントクラスってのはMVCでいうModel部分。
データ管理部分のクラス。

で、データをドキュメントクラスに持たせるか、派生クラスに持たせるかなんてのは
自分の好きにすればいい。
0262デフォルトの名無しさんNGNG
>>260
何か?
じゃねーよ。ばか。
0263デフォルトの名無しさんNGNG
>>262
ケータイから2chにアクセスしています。
ケータイで使えるヘルプのURLを教えて下さい。
0264デフォルトの名無しさんNGNG
ここで釣られまくってる香具師はプロとして失格だね。
0265デフォルトの名無しさんNGNG
どいつもこいつもC++の根本的な理解が足りないだけだな
0266デフォルトの名無しさんNGNG
よく釣れるな・・・この釣堀は
0267デフォルトの名無しさんNGNG
>>264
プロって、2chのプロか?
それなら失格で大いに結構!!
0268デフォルトの名無しさんNGNG
>>267
おまえはプログラマとして失格だな
ただのグラマ
0269デフォルトの名無しさんNGNG
プロのグラマーって、ゲームセンターあらしであったネタだな。
0270デフォルトの名無しさんNGNG
釣られてる香具師ってコンプレックスのかたまりなんだと思う。
もっと冷静になって、自分をもっと知るべきなんだろうね。
まあ、オチケツ、と言っておこう。
0271デフォルトの名無しさんNGNG
厨房の行動

  ・負けそうになると「釣れた!」という

--某所より転載
0272デフォルトの名無しさんNGNG
>>263
http://www.microsoft.com/japan/msdn/library/
0273デフォルトの名無しさんNGNG
>>272
FOMAで見てみましたが、どうやらケータイには対応していないようです。
0274デフォルトの名無しさんNGNG
見れない人はMSDNサブスクリプションの年間契約をしてください。
0275デフォルトの名無しさんNGNG
FOMAをモデム代わりにして、PCのブラウザでアクセスすればいんじゃないの?
0276デフォルトの名無しさんNGNG
>>275
ケーブル持ってないです。
それにパケット代で死んでしまいます。
0277デフォルトの名無しさんNGNG
つまり見る資格無しってことですよ。
そんな心がけでプログラマーは笑ってしまいます。
いや、私じゃなくて世間一般的に言ってです。
0278デフォルトの名無しさんNGNG
>>277
自称上級者たちに笑われても
痛くも痒くもありません。
0279デフォルトの名無しさんNGNG
>>276
プログラマってそういう仕事だよ。そのくらい金出してやれ。
将来得るに違いない能力が、つまらん制限のおかげで身に付くのが遅れるのは哀しいだろ?
0280デフォルトの名無しさんNGNG
今頃わかった!・・・
わざとやってんだろ?おまえら!
そうやって、暇だったら、プログラムの一つでも
作れってこった
0281デフォルトの名無しさんNGNG
もちろんわざとです。
ヘルプをどうしても見れない事にしたい奴を
からかってるだけです。
0282デフォルトの名無しさんNGNG
>>281
と、いうことにしたいのですね :-P
0283デフォルトの名無しさんNGNG
>>281-282
ホント、仲いいのな。
0284デフォルトの名無しさんNGNG
CStdioFileの派生クラスで、ファイルをオープンしたあとGetLength()実行すると
そこでAssertionがかかるんだけど何ででしょうか。GetPosition()でもかかってしまします
0285デフォルトの名無しさんNGNG
その質問で答えられたら超能力者
0286デフォルトの名無しさんNGNG
>>284
ファイルのオープンに失敗してるから
0287デフォルトの名無しさんNGNG
ASSERT出たときに、ファイル名と行数が出てこない?
そこを読めば?
0288284NGNG
>>285-287
原因が判明しますた
オープンしたのは基底クラス型の面罵変数だったのに、派生クラスのGetLength()を
直接呼んだのが間違いでした。オーバーライドしておくべきでした_| ̄|○
0289デフォルトの名無しさんNGNG
ヘルプを読んでもわからないはずだ...orz
0290本田NGNG
>どいつもこいつもC++の根本的な理解が足りないだけだな

C++は仕様が複雑すぎるので、だれも根本的には理解できそうに無い。
0291名無しさん@そうだ選挙に行こうNGNG
>>265
どいつもこいつもに、あんたも含まれるのか?
含まれない人なら当然、「根本的な理解」とは何かが言えるよな。
0292名無しさん@そうだ選挙に行こうNGNG
まあ、100%理解してて記憶にもあってありとあらゆる記述ができるという人間は、
世界でも片手ぐらいしかいないんじゃないか?
実際使うときは、そんな必要はまったく無いのだが。
0293名無しさん@そうだ選挙に行こうNGNG
100%知ってると……あれだよ、TVチャンピオンC++選手権に出られる。
0294名無しさん@そうだ選挙に行こうNGNG
とりあえず何の疑問も持たずに
>>188 見たいなソース貼っちゃうようではまずい。
0295名無しさん@そうだ選挙に行こうNGNG
>>294
CPenがデストラクタ処理あるはずなのに
この記述には意味があるのか?
と疑問を持ったから貼った・・・とは解釈できんのか?
0296名無しさん@そうだ選挙に行こうNGNG
>>294
そーとーしつこいな
0297名無しさん@そうだ選挙に行こうNGNG
質問したい者だけが質問し
答えたい者だけが答える
これで好かろう
あとはガタガタ言うな
0298名無しさん@そうだ選挙に行こうNGNG
>>295
まずいのはそこではなく
new してないのに delete してるところだろ
しかも Delete になってるし。
C++の基本が全然理解できてない。
0299名無しさん@そうだ選挙に行こうNGNG
>>296
>>291 が聞きたがってるんでしょうがない
0300名無しさん@そうだ選挙に行こうNGNG
>>298
#define かも知れんぞ
0301名無しさん@そうだ選挙に行こうNGNG
僅かでもMFCを外れると興奮する人がいるスレはここですか?
0302名無しさん@そうだ選挙に行こうNGNG
いえ根本的な理解が足りないと言われて
粘着になってしまった人がいるスレです。
0303名無しさん@そうだ選挙に行こうNGNG
>>302
と、いうことにしたいのですね :-P
0304名無しさん@そうだ選挙に行こうNGNG
>>301-302
おまえらガキだな・・・いつまでやってんだよ
いい加減、よそでやろうね
0305名無しさん@そうだ選挙に行こうNGNG
>>298
そうそう、MFCとかCPenとかの理解じゃなくて、
先ず、自動変数に関して理解していないってところから
議論を始めなきゃならんということでしょ。
つまり、C++わかっちゃいねーなと...orz
0306名無しさん@そうだ選挙に行こうNGNG
まさか、スタックとかヒープとか知らないでプログラムとか組んでるとか?
末恐ろしいな…ガクブル
0307名無しさん@そうだ選挙に行こうNGNG
>>304
こんなのスルーできないようでは
アンタもガキですから!残念!
0308名無しさん@そうだ選挙に行こうNGNG
ここ見てる暇あったら選挙行って来い。
まだ1時間はあるぞ。
0309名無しさん@そうだ選挙に行こうNGNG
投票したらその場で.NET2003とか当たるようにすれば
もっと投票率上がるんじゃないか。
一度に10回ぐらい投票してやってもいいぜ。
0310名無しさん@そうだ選挙に行こうNGNG
ここ最近ageてるやつ妙にバカっぽいな。
0311名無しさん@そうだ選挙に行こうNGNG
というか、自己顕示欲が強いんだろ。

みんな、俺に注目してくれぇぇぇぇぇ!!!!!!
0312デフォルトの名無しさんNGNG
>>298
>>193の書き込みによると「Delete myPen;」は本に書いてあったらしいね。
本当に書いてあったのならその本も晒し者だな。
0313デフォルトの名無しさんNGNG
>>307
おまえも(r
0314デフォルトの名無しさんNGNG
>>305
まったくだよ、C++を全然理解してない奴が
MFCに手を出すもんじゃないよな...orz
0315デフォルトの名無しさんNGNG
>>314
そのうちnewってコンストラクタで勝手にやってくれないの?
とか言い出すよ。きっと
0316デフォルトの名無しさんNGNG
>>314
また上級者気取りのレス。キモすぎ。
0317デフォルトの名無しさんNGNG
MFCを使える程度にC++を理解してることがそんなに上級者なのか?
本当にそう思ってるなら本気でC++の入門書読んでからここに参加した方がいいよ。
0318デフォルトの名無しさんNGNG
>>317
んだ
0319デフォルトの名無しさんNGNG
と言うわけで、次のご相談どうぞ
↓
0320デフォルトの名無しさんNGNG
自称上級者がウザイのですが、どうすればいいですか?
0321デフォルトの名無しさんNGNG
次の方どうぞ
↓
0322デフォルトの名無しさんNGNG
だからMFC使える程度の理解なら上級者じゃなくていいっつの。
入門書でいいっつってんだろ。とにかく読んでから来いや。
0323デフォルトの名無しさんNGNG
自称上級者と、自称初心者は仲良く入門書を読んでくること
喧嘩しちゃだめですよ
0324デフォルトの名無しさんNGNG
相手を上級者と言うことが至高の煽りだと思っている人がいるようです。
0325258NGNG
悪い流れの中に落としちゃったみたいなので引っ越すよ・・・
0326デフォルトの名無しさんNGNG
>>324
だよな・・・煽りまでも幼稚だよな・・・アホとしか言い様ないよな..orz

あと、「自称上級者」って何だよw
上級者自称してる奴なんていつでてきたよ?w
0327デフォルトの名無しさんNGNG
>>326
あんたみたいなのがいると、燃料の落とし甲斐があるよ
0328デフォルトの名無しさんNGNG
今日はC++の本、何ページまで読んだの?
ここに来るのは本を全部読んで、
MFCのヘルプも見れる環境にしてからにしたほうが良いと思うよ。
でないと、話にならないですから。
0329デフォルトの名無しさんNGNG
取り敢えず、new delete の章はじっくり見た方が良さそうだ
自分の恥ずかしさに気が付くと思うよ
0330デフォルトの名無しさんNGNG
っていうか、質問するときの最低限のマナーとして、
最低条件とか決めてテンプレにでも載せたらいいんじゃないでしょうか。
たとえば、
・C++の基礎は勉強済み。
・MFCのヘルプを見れる環境を持っている。
は必要ではないでしょうか。
何でもかんでも教えて君は、本人の怠慢だと思いますので。
0331デフォルトの名無しさんNGNG
>>329
コンストラクタ、デストラクタ、クラスの関数への参照渡しと
そうでないときの引数の違いとか、最初に勉強したとき理解できなくて
そのままってこともありますものね。
ある程度経ってまた勉強しなおすと、目からうろこってことも多いです。
0332デフォルトの名無しさんNGNG
いまだにMFCは使ってるけどCStringを使わず、
char*ばかり多用している人もいるんですよね。
LPCSTRの存在の本質を本当にわかっている人は
いったいどれだけいるのだろうかと思います。
0333デフォルトの名無しさんNGNG
STL使ってない人って結構多いよね。
初めて使ったときは、こんな便利なもの!!って感動したけど。
CObList使う以前に<list>で間に合っちゃうなんてことも
結構あるんですけどね。
0334デフォルトの名無しさんNGNG
>>330

>・C++の基礎は勉強済み。

初歩ではなく基礎ならば
これを守れる香具師は皆無と思われ

基礎: ISO/IEC14882:2003
応用: MFC


>・MFCのヘルプを見れる環境を持っている。

ここにアクセスできる以上、
全員がクリアしていることが自明
(MSDNオンライン)
0335デフォルトの名無しさんNGNG
>>334
携帯でアクセスしてるなんてつわものもいるみたいですよw
ヘルプ見れないぞゴルァって切れてたしw
0336デフォルトの名無しさんNGNG
まあ、CやC++の質問はそれぞれの専用スレがある訳だし
最低限MSDNを調べ、それでも解決できない様であれば、
このスレに質問しに来なさい。
その時は、快く面倒見ようじゃないか。
0337デフォルトの名無しさんNGNG
>>335
それは明らかに釣りだろ?
0338デフォルトの名無しさんNGNG
>>335
死ね自称上級者
0339デフォルトの名無しさんNGNG
>>333
そりゃ、STL も RTTI も MFC より後でできたやつだからね
0340デフォルトの名無しさんNGNG
>>338
あなたでしたかw
こんなに簡単に釣(ry
0341デフォルトの名無しさんNGNG
まぁ俺が学習した順番は
MFC → API → C++ → C
な訳だが。
0342デフォルトの名無しさんNGNG
自らの不勉強さを恥にも思わず、ただ切れるだけの人って、
ものすごく人生で損しているように感じます。
考え方をちょっと方向転換すれば、
とても幸せになれるのになって思います。
ぶちギレたら誰も教えてくれなくなりますものね。
世渡り上手も自分を向上させるコツのひとつです。
0343デフォルトの名無しさんNGNG
多分>>338はまだまだ人生経験、社会勉強が足りないんだと思われる。
サラリーマンなら参考書ぐらい言えば買ってくれるものです。
会社があなたを認めているのならですけど...orz
0344デフォルトの名無しさんNGNG
>>342
おまえの中では不勉強の奴=切れてる奴
という図式が成り立ってるのか?
それはちょっと短絡すぎるぞ。
面白半分で煽り入れている奴の方が多いんじゃないかな?
おまえ以外の人はとっくに気がついている訳だが・・・
0345デフォルトの名無しさんNGNG
>>342
一日の長ってやつを定量的に認識できない香具師はまだまだ青いね
0346デフォルトの名無しさんNGNG
>>342
俺には両方切れている様に見えたんだが、
何故勉強不足の者だけが切れているかの様な
結論に至ったのかお聞かせ願いたい
0347デフォルトの名無しさんNGNG
>>346
そのくらい自分でぐぐって調べろ
0348デフォルトの名無しさんNGNG
>>347
おいおい、なんだそりゃ?
0349デフォルトの名無しさんNGNG
>>348
上級者なら他人に聞くな。自分で調べろ。
0350デフォルトの名無しさんNGNG
不勉強=問答無用でアホ(C++不適合)
他称上級者=煽りに乗せられて荒らしに油を注ぎ、アホ(2ch不適合)
荒らし=なんと言うか、うんこ
静観者=正解
俺=まあ、アホ

と言うわけで、MFCの相談の方どうぞ
↓


0351デフォルトの名無しさんNGNG
静観者=アホ
見ない人 or 見るのをやめた人 = 正解
0352デフォルトの名無しさんNGNG
>>350
これ、どうやって使うんですか?
http://www.family.co.jp/rel/r_010614.html
0353デフォルトの名無しさんNGNG
>>352
塗る
0354デフォルトの名無しさんNGNG
自らの努力をまったくせず、ただの教えて君質問は
わかる人にはわかるよ。それってスルー。
不幸にも釣られちゃう人が多いのも事実みたいだけど。
0355デフォルトの名無しさんNGNG
>>354
なんだ?まだ興奮冷めやらないのか?
0356デフォルトの名無しさんNGNG
>>342
俺には両方切れている様に見えたんだが、
何故勉強不足の者だけが切れているかの様な
結論に至ったのかお聞かせ願いたい


0357デフォルトの名無しさんNGNG
>>354
不幸な人ですね
0358デフォルトの名無しさんNGNG
スルーできない香具師、大杉...orz
0359デフォルトの名無しさんNGNG
>>356
いい質問だが、それはあなたの国語力に依存するので
なんと言っていいのやら。
0360デフォルトの名無しさんNGNG
MFC・C++云々じゃなくて、スルーを覚えてから2chに来よう
0361デフォルトの名無しさんNGNG
>>358
>>360
お前もスルー覚えてこいよ。
0362デフォルトの名無しさんNGNG
不勉強=荒らし= >>188 =アホ
0363デフォルトの名無しさんNGNG
そこでBCBですよ奥さん
0364デフォルトの名無しさんNGNG
うんこ
0365デフォルトの名無しさんNGNG
>>363
BCB=うんこ

>>364
うんこ
0366デフォルトの名無しさんNGNG
>>363
BCBでMFC使おうとしてヘルプ見れないとか
言い出す奴いるからうんこ。
0367質問ですNGNG
void hoge(void)
{
  CPen myPen;


  myPen.DeleteObject(); ←これいるんですか?
  Delete myPen;      ←これもいるんですか?
}

CPenってスコープ外れる時に、この辺やってくれないの?
0368デフォルトの名無しさんNGNG
おまえら早く寝なさいっ!
オレモナー
0369デフォルトの名無しさんNGNG
だからもう、何もかも自分でググれよ、脳無し
0370デフォルトの名無しさんNGNG
>>367
だからコンパイルが通らない(ry
0371デフォルトの名無しさんNGNG
>>370
(ry の意味がねーだろ!!w
0372デフォルトの名無しさんNGNG
ここは本当によく釣れるインターネットですね
0373デフォルトの名無しさんNGNG
暇人ばっかり
0374デフォルトの名無しさんNGNG
見苦しいぞオッサン
0375デフォルトの名無しさんNGNG
こんな事してばっかりいるから
いつまでたってもBCBに追いつけないんだよ…
とマジレスしてみる
0376デフォルトの名無しさんNGNG
なんで急に釣りが増えたんだ
0377デフォルトの名無しさんNGNG
だって入れ食いなんだもん
0378デフォルトの名無しさんNGNG
厨房丸出しだね。どっちも。
0379デフォルトの名無しさんNGNG
暑さで逝っちゃいそうだからね...orz
0380デフォルトの名無しさんNGNG
っていうか、クーラー無しでがんばってる香具師いる?
0381デフォルトの名無しさんNGNG
自分の部屋にはクーラーありませんが。
0382デフォルトの名無しさんNGNG
ちょっと意味が違うorz
0383デフォルトの名無しさんNGNG
>>332
やっぱりCString便利だよね?
0384デフォルトの名無しさんNGNG
CString::LoadString()は重宝しています。
0385デフォルトの名無しさんNGNG
自作関数の引数にchar*となっているところをLPCSTRに書き換えてみろ。
CStringも渡せるぞ。すごいだろ。
0386デフォルトの名無しさんNGNG
char*とLPCSTRは違うけどな。
0387デフォルトの名無しさんNGNG
違うから意味がある。
0388デフォルトの名無しさんNGNG
LPCTSTR
0389デフォルトの名無しさんNGNG
ピクチャーボックスにファイルから選らんだビットマップを貼り付けたいのですが
どのようにすればいいのでしょうか?
0390デフォルトの名無しさんNGNG
えららんだ
0391デフォルトの名無しさんNGNG
>>390
糞レスはいりません。
0392デフォルトの名無しさんNGNG
(LPCSTR)(LPCTSTR)cstring; ってできるんだよね
0393デフォルトの名無しさんNGNG
>>392
出来るけど、UNICODEビルドではどうなっても知らないよ。
0394デフォルトの名無しさんNGNG
キャストは万能とか思ってる人多いなぁ
0395デフォルトの名無しさんNGNG
ヘ_ヘ
ミ・・ ミ ということにしたいのですね?
( ° )〜
0396デフォルトの名無しさんNGNG
質問です。

MFCを使わない標準DLLがあります。で、その中で機能追加のためスタティックライブラリを使おうとしてるんだが、
そのスタティックライブラリがMFCを使っています。
とりあえずヘッダはやりくりしてどうにかコンパイルはできましたが、リンク時に「DllMainは既に・・・」というエラーがでます。

MFC自体が持ってるDllMain?と標準DLLが持っているDllMainが衝突したりといった問題などあるように見えますが、
そもそもこういうことって出来ないんでしょうか?

0397デフォルトの名無しさんNGNG
1行目あたりから意味がわからん
0398デフォルトの名無しさんNGNG
>>397 それは君の読解力に問題ありかと
0399デフォルトの名無しさんNGNG
>>397
しつもんです。
0400282NGNG
>>395
ここんとこ急にフェミ猫のコピペが各スレで増殖し出したな。
俺に触発されたのか? :-P
0401デフォルトの名無しさんNGNG
>>396
そのスタティックライブラリをDLL化してそれを呼び出す
という逃げ方もあります。
0402デフォルトの名無しさんNGNG
>>396
スタティックライブラリの出来が悪くて、なぜかその中にDllMain()という関数があるんじゃないの (w
0403デフォルトの名無しさんNGNG
Document/View スタイルじゃないやり方(CFrameWnd + CWinApp)で、CWinAppにOnKeyDown等を加えてもメッセージが来ないんですが何故でしょうか?
Document/View スタイルだと動くんですが・・・。
0404デフォルトの名無しさんNGNG
コマンドルーティング
0405396NGNG
>>401
まぁそれが妥当かとは思うんですが、とりあえずファイル増やしたくないなぁと。

>>402
ん、、てことは普通はできるってことですかね?
まぁDllMain以外にもスレッドとかソケットあたりが変に混ざりそうでいやなんだけど、もうちょいもがいてみます。
0406403NGNG
>>404
サンクス。コマンドールーティング参考になりました。
しかし、間抜けでした。てっきりフレームワークで生成されるCChildViewクラスってAbout dialogのことだと思い込んでいて無視していたんですが、実はこれが入力メッセージを受け取る肝心なクラスだったんですね。
あーやだなこんな調子で今更MFCを覚えるの鬱。.NETって、あくまでも中間言語インタープリタだから、x86ネイティブコードという観点からいくとMFCの代替になりませんよね?
0407デフォルトの名無しさんNGNG
呼び出したメニューのIDを引数で渡してくれるメニュー用COMMAND関数を
作るにはどうしたらいいんでしょうか?
0408デフォルトの名無しさんNGNG
ON_COMMAND_RANGE
0409デフォルトの名無しさんNGNG
>>408
うぉー!ありがとう。解決しました。
0410デフォルトの名無しさんNGNG
最近やっとMDIの勉強始めたばっかで初心者的質問なのだが、、

今MDIの画像ビューア作ってるけど画像を選択して子ウィンドウが表示されたときに
クライアントの大きさを画像サイズといっしょにしたい。
で自分なりに調べたが
CMyDocument::OnNewDocument
↓
CMyView::OnInitialUpdate
↓
CChildFrame::ActivateFrame
画像データはOnNewDocumentで取得。
最後のフレームのところでSetWindowPlacementか使ってフレームの大きさを
決めたいわけだ。

で、、どうやったらフレームからドキュメントみえるんだ? ビューにも画像データのポインタ
渡してるからビューでもいいけど、、。

誰か助けて_| ̄|○
0411410NGNG
間違えた、、、
×CMyDocument::OnNewDocument
↓
○CMyDocument::OnOpenDocument
0412410NGNG
連書きすまん、、自己解決
CFrameWnd::GetActiveDocumentなるまんまの関数があった、、、。
もっとヘルプみます_| ̄|○
0413デフォルトの名無しさんNGNG
ヘルプを見ないで質問しちゃう奴は
C++を理解してないも同然
0414デフォルトの名無しさんNGNG
また出たよ。自称上級者が・・・ (;´Д`)
0415デフォルトの名無しさんNGNG
解答できない質問されるのがよほど悔しいのかね
0416デフォルトの名無しさんNGNG
じしょう 【自称】

(名)
(1)実体はどうあれ、自らこうだと称すこと。
0417デフォルトの名無しさんNGNG
>>416
まさに、ピッタシデナイノ
0418デフォルトの名無しさんNGNG
で、誰か自称したのか?
0419デフォルトの名無しさんNGNG
>>418
明言しなくても、言外に表れている。
それくらい解れよ。
0420デフォルトの名無しさんNGNG
>>419
自称知ったか君
0421デフォルトの名無しさんNGNG
荒らそうと必死だな
0422デフォルトの名無しさんNGNG
.aviをフォームの背景として再生するために
 CAnimateCtrl m_animate;
 //...
 m_animate.SetWindowPos(HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
 m_ctrl.BringWindowToTop();
という風にCAnimateCtrlのオブジェクトを一番下に、その他のコントロールを上の方に
持っていこうとしてるんだけど、直ぐにアニメーションが最前面になってしまいます。

何かうまい解決策はないもんでしょうか?
0423デフォルトの名無しさんNGNG
>>419
だからそれ、自分が上級者だと勘違いしているだけなんだから自称って言わないってば。
0424731NGNG
(Win32スレに誤爆したのでこちらに書き込みます。)
MFCフレームワークで、CWinApp, CMainFrm, CChildView という派生クラスを使う事を強要されますけど、どこにどういう機能を置けばいいのかいまいちピントきません。
リアルタイムでレンダリングするスクリーン、キー入力、パラメータ入力用のダイアログがあるので,
CWinApp -> OnIdle() レンダラーアップデート, CChildViewへの描画。
CChildView -> OnKeyUp(), OnMouseMove()等
CDialog -> CMainFrm::hoge->SendMessage(...) で入力パラメータを送る。
CMainFrm -> SendMessage(...)でクラス間のデータ受け渡し。
っていう感じでやっているんですが、クラスが保持している別クラスインスタンスへのポインタがprotectedになっていたりするので、SendMessage()のバケツリレーみたいになったりして、2度手間3度手間が多くて疲れます。
「プロはこうやる」っていうのがあったら教えてください。
0425デフォルトの名無しさんNGNG
>>424
CDocumentが出てきてないようだが、使ってないの?
0426デフォルトの名無しさんNGNG
>>424
プロはめんどくさいのでウィザードの吐いたコードいじって使います
0427デフォルトの名無しさんNGNG
プロはめんどくさいのでそもそもMFCを使いません
0428デフォルトの名無しさんNGNG
プロはSDKだけでプログラミングするなんて
非効率なことはしません。特別な事情がない限り。
0429デフォルトの名無しさんNGNG
ネタにマジレスすんな
0430本田NGNG
>「プロはこうやる」っていうのがあったら教えてください。

図書館で、
「MFCによるWindows95プログラミング」か「MFCによるWindowsプログラミング」
を借りて読んでください。
0431デフォルトの名無しさんNGNG
SDKだけでも、
こういうのを使えば素早く開発できます。


APPのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。

基本的なWin32システムを支援します。

最強のACライブラリー
ttp://www.geocities.jp/osoftjp
0432デフォルトの名無しさんNGNG
ネタなので放置な。
0433デフォルトの名無しさんNGNG
こういうことをMSがやったものがMFC
0434デフォルトの名無しさんNGNG
>>433
こういうこと、って?
0435デフォルトの名無しさんNGNG
MFCでお勧めの本ってある?
0436デフォルトの名無しさんNGNG
>>435
ttp://www.amazon.co.jp/exec/obidos/ASIN/1874416478
0437デフォルトの名無しさんNGNG
効率って削減したらダメじゃないか?
0438デフォルトの名無しさんNGNG
using namespace std; ・・・(1)

なんてことをすると、MFCのテンプレートのCArrayなどを使うときに問題がでますが、
using namespace std; する前の状態に戻すときは std の部分になんと書けばいいですか?
0439デフォルトの名無しさんNGNG
CTabCtrlについて教えてください。

VisualStudioにあるような平らなタブを作成したくて、CTabCtrlを継承してクラスを作成
SubClass化してDrawItemをオーバライドしたのですが、
DrawItem内では、TabCtrlの枠の描画はOS?依存らしく自前で描画が出来きないようです。

このようなタブをMFCを利用して作りたいときはどの様にすれば、よろしいのでしょうか?
ご教授いただきたく思います。

0440デフォルトの名無しさんNGNG
>>439
codeguruやcodeprojectに行けばあったと思う。
探してみて。
0441デフォルトの名無しさんNGNG
>>440
codeprojectにありました。
会員登録? して試してみたいとおもいます。
どうもありがとうございました。
0442デフォルトの名無しさんNGNG
>>436
この本初めてみたけどいいの?
USサイトではいいみたいだけど。。。
0443デフォルトの名無しさんNGNG
MFCはもうだめぽ
0444デフォルトの名無しさんNGNG
質問です
MFCを使用して、MSCommで通信を行っているのですがどうにも
解決できない問題に遭遇しました
当初Windows2000を使用していたのですが、WindowsXPに
もってきて動かすと受信がうまく出来ません。
受信部にイベントOnCommを使用しているのですが、2000だと問題なく受け
とれる受信イベントがXPでは受け取れません
RThreshなどはソフトで設定していて、値も正常に入っています
ポートオープンで失敗していることもありません
どなたか、同様の現象がでて、対応された方いらっしゃいますか?
開発環境は VC6+SP6です
0445デフォルトの名無しさんNGNG
日本人の書籍とアメリカ人の書籍を読み比べた結果、導き出された結論。

Windowsプログラミングを知り尽くしているのがアメリカ人。
Windowsプログラミングを知ったかしているのが日本人。

マイクロソフトの仕様変更を先読みしたプログラムを書くのがアメリカ人。
マイクロソフトが仕様変更したときに「仕様変えんな ゲイツ氏ね!」と泣くのが日本人。

MFCの不具合に文句を言い、不具合を修正して使うのがアメリカ人。
MFCの不具合に文句を言うだけで何も出来ないのが日本人。

MFCを一から教える書籍を売るのがアメリカ人。
Appウィザードで作成したテンプレートにコントロールを追加するだけの子供騙し書籍を売るのが日本人。

オリジナリティに溢れたMFCの書籍を売るのがアメリカ人。
他人からパクったネタを適当に並べただけの書籍を売るのが日本人。


やっぱ 日本人の書籍だけでは不十分。
どれもこれも同じようなものばっかりなんだもん(藁
0446デフォルトの名無しさんNGNG
↑みたいなこと必死に書くから日本人は馬鹿にされるんだな
0447デフォルトの名無しさんNGNG
>>445
著者の一人だが褒められて嬉しい
0448デフォルトの名無しさんNGNG
>>445
> MFCを一から教える書籍を売るのがアメリカ人。
> Appウィザードで作成したテンプレートにコントロールを追加するだけの子供騙し書籍を売るのが日本人。

入門用としてはやったことがすぐカタチになる後者の方がおすすめ
0449デフォルトの名無しさんNGNG
>>448
神頼み的な思想を植えつけない細心の注意が必要
0450デフォルトの名無しさんNGNG
CFrameWnd すら使うかどうか
習得パス設計との緊密なマッチングで決めること
TABオーダーでバグられた位でグラつく知識はダメ
0451デフォルトの名無しさんNGNG
MFCはダメなライブラリの見本
0452デフォルトの名無しさんNGNG
>MFCの不具合に文句を言い、不具合を修正して使うのがアメリカ人。

文句言うより他あたるのがアメ公
0453デフォルトの名無しさんNGNG
>>444
素直にAPIでやって下さい。
0454デフォルトの名無しさんNGNG
アメリカ人はコレ使うと決めたら他の選択肢捨てるよね
0455デフォルトの名無しさんNGNG
俺アメリカ人だけど、MFC自体捨てたよ
今はBCBで、バリバリ快調っす
0456デフォルトの名無しさんNGNG
面接で渋られたときのゴネ方が内容的にまるで違う
0457デフォルトの名無しさんNGNG
>>456
どんなの?
0458デフォルトの名無しさんNGNG
日本人:イオナズン
アメリカ人:ダディクール
0459デフォルトの名無しさんNGNG
>>445
アメリカ人向けの糞本は翻訳されないだけだろ
そんなのに著作料と翻訳料払うぐらいなら日本人に直接書かせる罠
0460デフォルトの名無しさんNGNG
原書読めば笑えるのも呆れかえるのも、いっぱいある。
0461デフォルトの名無しさんNGNG
VC.NET2003(MFC)の質問です。
ダイアログを作る時にエディットボックスなどと関連付けするメンバ変数を作ろうとしているのですが、
うちの環境ではなぜかメンバ変数追加ウィザードが動作しません。
手動でメンバ変数を書いた場合にエディットボックスどうやって関連付けすればいいのでしょうか?
0462デフォルトの名無しさんNGNG
>>461
アイテムをダブルクリックして駄目なら駄目なんだろ。
0463デフォルトの名無しさんNGNG
>>461
ダブルクリックするとエディタが開いてチェンジイベントの記述になります。
0464デフォルトの名無しさんNGNG
VCがおかしい→再インスコ
ウィザードがおかしい→テスト用プロジェクト作ってみる
手動がいい→サンプルをまねる
0465デフォルトの名無しさんNGNG
CList の入れ子ってできないでしょうか.
CList< CList< int, int >, CList< int, int > > みたいな.
0466デフォルトの名無しさんNGNG
VS.NET2003で新しいプロジェクト作成でMFCアプリケーションを作成したら、
ダイアログバーも生成されたので、リソースエディタでエディットコントロールを2つ
追加してコンパイルすると、ダイアログバー上にエディットコントロールが2つあって、
文字の入力等は問題なく出来るのですが、TABキーでフォーカスの移動をしようと
しても、1つ目のエディットコントロールにしか移動しません。

リソースのタブストップには両方ともチェックが入っているのですが、どうすれば
フォーカス移動が出来るようになるのでしょう?
0467デフォルトの名無しさんNGNG
>>466
タブオーダーは設定したのか?
0468466NGNG
>>467
設定してもだめ。

というか、設定してなくても、普通のダイアログならリソースエディタで貼り付けた
順に初期設定されてるから、意図したとおりにならずとも何がしかの順で移動して
くれると思うのですが、TABキーでは頑なに1つめのエディットコントロールから
離れようとしません。

クリックしてやるとちゃんと2つ目のエディットコントロールにフォーカス移動するん
ですが。

なんか、追加のコードがいるんでしょうか?
0469デフォルトの名無しさんNGNG
>なんか、追加のコードがいるんでしょうか?

普通はいらない。

というか、普通にウィザードでMFCアプリ作ってもダイアログバーなんか付いてこないと思うんだが。
0470466NGNG
>>469
プロジェクト作成時にReBarを使う設定にすると付いてくるようです。

んで、解決しました。ダイアログバーに割り当てられてるダイアログリソースの
ControlプロパティがデフォルトではFalseになっていたのでした。

プロジェクト生成時にこれくらいはTrueにしておいてほしかった・・・orz
0471デフォルトの名無しさんNGNG
あー、そういうのがあるのか。2003はインストールしただけでほとんど使っていないので気付かなかった。
それにしても、2003のリソースエディタのプロパティは使いにくいなあ。
無理矢理ダイアログバー作ろうといじってて、なかなかダイアログスタイル設定できずに苦労した。
何だよ「子」って
0472デフォルトの名無しさんNGNG
スレが汚れるので.NETの話題はお控えください。
0473デフォルトの名無しさんNGNG
>>472
スレのレベルが下がるので、VisualStudio.NETと.NET Frameworkを
混同している人はカキコを控えて下さい。
0474デフォルトの名無しさんNGNG
VC++.NETはMFC的には機能ダウンしてるしな
0475デフォルトの名無しさんNGNG
>>474
ウッソー?
機能アップしてるだろ。
例えばCStringはstd::basic_stringのようにテンプレートクラス化されて
使いやすくなってると思う。
0476474NGNG
>>475
書き方が悪かった。ライブラリじゃなくてIDEまわりね。
0477デフォルトの名無しさんNGNG
MFCライブラリはもろもろ良くなってるね
CStringはウニとS-JIS混在できるしね
IDEは.NETと共通化したから非共通部分が落とされたね
0478デフォルトの名無しさんNGNG
先輩にMFCをするより、SDKでガイガリやったほうがいいのができるっていわれたんだが、本当?
0479デフォルトの名無しさんNGNG
いいのができるかどうかは関係ない。
APIだけで作っても駄目な物は駄目
0480デフォルトの名無しさんNGNG
その先輩はMFC使えない、C++わからないだけってパターンが多い。
0481デフォルトの名無しさんNGNG
MFCって何から勉強すればいいんだ?
0482デフォルトの名無しさんNGNG
自分が必要とするところから。
0483デフォルトの名無しさんNGNG
習うより慣れろ。
0484デフォルトの名無しさんNGNG
CListView でレボートビューにした場合、ラベルを改行して
複数行で表示したいのですが、可能でしょうか。
0485デフォルトの名無しさんNGNG
Owner Drawでやるしかないんじゃない?
0486デフォルトの名無しさんNGNG
マルチします。すみません。
C++BuilderXでGUIアプリを作成する場合には
MFCは使えるのでしょうか?
また、フォームエディタは使用できるのでしょうか?
0487デフォルトの名無しさんNGNG
CListView で Owner Draw を使うのにはどうすればいいのでしょうか。
教えて君で申し訳ないです。
調べても調べがつかなかったもので。。
0488デフォルトの名無しさんNGNG
>>487
CodeGuruに行くとそういうサンプルが少なくとも二つは見つかるよ。
#つーか、見つけた。
OwnerDrawじゃなくてCustomDrawの手法ならGoogleで国内サイトを探すだけでいろいろ出てくると思う。
0489デフォルトの名無しさんNGNG
今から始めるならMFCはやめて.NETにしたほうがいい?
0490デフォルトの名無しさんNGNG
>>488
ありがとうございます。
とりあえず、CodeGuruから調べてみたいと思います。
0491デフォルトの名無しさんNGNG
俺はCodeProjectの方が好きだな・・・
0492デフォルトの名無しさんNGNG
CodeGuruはリニューアルしてから見づらいな・・・
0493デフォルトの名無しさんNGNG
>>489
「今から始める」という意味が「学習を始める」だったらMFCで良い。
「長大なプロジェクトを起こす」という意味なら.netを考慮する価値はあるかも。

つまりちょこちょこ作って今すぐ広い環境で動かすならMFCだな。
0494デフォルトの名無しさんNGNG
>>493
あー。まだ厨房なんで将来的なことも考えていただければ幸いです。
0495デフォルトの名無しさんNGNG
>>494
んじゃまず、ハードの基礎やってから、アセンブラ逝け。1年たったらまた恋。
0496デフォルトの名無しさんNGNG
漏れは、SDK だけでアプリ作れない香具師の MFC アプリは信用しないなあ。

……「アセンブリが解らない香具師のアプリは信用しない」と同じレベルかゴメンorz
0497デフォルトの名無しさんNGNG
何でもそうだが、知ってるやつ見えてるやつから見ると、知らないやつ見えてないやつは、危なっかしく感じる。
知らないやつ見ててないやつ自身は、なんの恐れも不安もない。
0498デフォルトの名無しさんNGNG
えーと、分裂症の方でしょうか?
0499デフォルトの名無しさんNGNG
SDKやってMFCすれば〜
0500デフォルトの名無しさんNGNG
MFCだかVBだか知らないんだけど、例えば某USB機器に付属してるソフト。
起動してすかさず他アプリケーションを前面に持って来て、
そのソフトが完全に起動し終わったのを確認してウィンドウをアクティブにすると
フッと、ウィンドウ上のボタンのフォーカスが切り替わる。
細かい事だけど、何やってんだよ (;´Д`) 怖いよ
0501デフォルトの名無しさんNGNG
レベルが低くて本当にこれから始めるっていうならなおさら、あんまり先のことは
考えずに、今できることをやって経験を積んでおくことを薦める。先々どうするかは
自分で経験して判断できるようになってから決めればよい。何もできないうちに
後のことを言っても始まらないからね。

現在一般に出回ってるシステム環境や、ツール、学習面での文書のこと考えたら
いきなり.netはやりづらいと思う。どうせ最初は小さいものしか作れないんだし、
何かしら使える機能のあるものを気軽に作って、プログラムすることの手順に慣れ
るのが先だろう。
0502489NGNG
一応Delphiとかはいろんなページ見ながらやってたんだけど
他の言語に移行したくなったんで、.NETかMFCがいいかなーと思ったたけです。
別にJavaやSDKでもいいんですが、アセンブラは必要なんでしょうか?
0503デフォルトの名無しさんNGNG
そんな「なんとなく」が理由なら自分で好きなのやれ。
0504デフォルトの名無しさんNGNG
>>502
必要って何のために?

仕事で必要かどうかは内容次第で、
具体的な就職先と配属先が決まらないと何とも言いようがない
けど、そんな理由に引きずられるだけな若手は「うちへ欲しい」タイプじゃない
泥縄方式のおんぶに抱っこで何ができるか甚だ疑問だからだ

言語であろうとデバイスあろうと、
特定のブツに対するマニュアル的な知識は泥縄でも徹底的ならそれでいい
もっと根本的なことで、こういう分野を切り開いていくことに対して
自発的な意思で行動しているか否かが肝心要の核心だ

で、アセンブラの話に戻ろう
アセンブラやってみたいか? 意味ねえと思うか?

おまえが答えるしかないことだ
0505489NGNG
>>504
アセンブラはやってみたくないけど、意味はあるとおもう。
既存の高級言語を使う場面とアセンブラを使う場面はどう違うのか説明してくれ。
0506デフォルトの名無しさんNGNG
>>505
特定のCPUの、特有の機能を使うとき
例: 特権命令

コードサイズまたは実行速度に定量的な条件があるとき
例: PIC
0507デフォルトの名無しさんNGNG
>>505
続き

既にアセンブラベースで進行中のプロジェクト
例: (軍機のため言えません)
0508デフォルトの名無しさんNGNG
最初にDelphiやると他のものが使えなくなってしまう。
そういう意味では最初に学ぶのはDelphi以外が良いと言うことになるのかも知れない。
0509デフォルトの名無しさんNGNG
>>502
> 一応Delphiとかは

「とか」ってなんだよ・・・
なんかこういう書きぶり続くとどうでも好きにすればとしか言いようないな
0510デフォルトの名無しさんNGNG
普通にCかC++から初め野菜って事で
0511デフォルトの名無しさんNGNG
>>508は典型的なマニュアル頭な人に多い症例
0512デフォルトの名無しさんNGNG
ここMFCのスレなのにDelphiの話題ばっかりで大丈夫?
他のスレで同じことするとスレ違いとかうるさく言われるのにね。
0513デフォルトの名無しさんNGNG
>>512
代理発言はしてやらない
0514デフォルトの名無しさんNGNG
今更言語談義が始まって呆れてる最中。
0515デフォルトの名無しさんNGNG
>>505
>アセンブラはやってみたくないけど

賛成も反対もする筋合いにないからどっちとも言わないが、
はっきりした意思があるなら邪念は捨てろ
0516デフォルトの名無しさんNGNG
卒業年次生にもなって何屋に【なる】のか決まってないなら
それはそれですることがあるはずだ
0517デフォルトの名無しさんNGNG
MFCなひとは、なんでDelphierや初心者言語話に、普通に答えてんの?
そこはスレが荒れるとこでしょ。やっぱMFCに愛着無いからかね。
0518デフォルトの名無しさんNGNG
単に楽をするためのライブラリィ程度しか考えていないよ、俺は
それと、暇つぶしにレスしているだけ
0519デフォルトの名無しさんNGNG
暇つぶしでスレ違いレスすんなタコ
0520デフォルトの名無しさんNGNG
Cスレで聞こうと思ったのでつが荒れてたので
こちらでおながいします。
MFCを使っているとoperator newをオーバーロード
して、デバッグのときにはメモリリークを検出してくれるので
助かっているのですが、MFCを使用しない場合は
みなさんどうしてますか?
自力でnewをオーバーロードしてるのでつか??
0521デフォルトの名無しさんNGNG
つーか、スレ違いな話題はスールしろよ!
0522489NGNG
>>508
父親にCから始めろと言われ、本を買ってくれたのでCから始めました。

他スレとか見てるとMFCの雲行き怪しげなので.NETにしときます。
スレ違いな質問してすみませんでした。
0523デフォルトの名無しさんNGNG
>>520
そんなギミックに頼るハメになる前に単体テストしとく
0524デフォルトの名無しさんNGNG
>>520
メモリリークを検出するソフトを使う
0525デフォルトの名無しさんNGNG
VC6とVC7の違いについて解説しているページはありませんか?
例えば、VC6のメモリウィンドウは、 VC7ではココにある…etc

最近学習を始めたのですが、VC6のMFC関連のHPを見ていると
どうもVC7と操作性?が違っていて、勉強が進みません。

大変お手数ですが、ご教授をお願いします。

0526デフォルトの名無しさんNGNG
>>524
どんなんあるんか教えろや
0527デフォルトの名無しさんNGNG
>>525
これ俺も欲しい
0528デフォルトの名無しさんNGNG
BoundChecker
Purify
0529デフォルトの名無しさんNGNG
>>520
ここのことでつか?
ttp://mikata.curiocube.com/progtips/ch24_newhandler.html
MFC使わなくても…
0530デフォルトの名無しさんNGNG
MFCのクラス(というかメソッド?)がスレッドセーフか否かはどこで調べれば良いでしょうか。
MSDNには特に記述が無いようですが…
0531デフォルトの名無しさんNGNG
>>530
LIBもDLLもシングルとマルチがある
(つまりマルチならクラス全てマルチ)
0532デフォルトの名無しさんNGNG
MFCで作ったプログラムってMFCランタイムがないと
動かないんですか?
(つりではないです。お願いします)
0533デフォルトの名無しさんNGNG
>>532
スタティックリンクすれ
0534532NGNG
>>533
ありがとうございました!
0535デフォルトの名無しさんNGNG
>スタティックリンクすれ

この一言でわかっちゃうってことは、釣りだろw
0536デフォルトの名無しさんNGNG
VC++のコンパイルエラーなど出す「出力ウィンドウ」のように単純に
1行づつメッセージを出力するためにはどのような手法を使うのが一般的なのでしょうか?
0537デフォルトの名無しさんNGNG
>>536
リストコントロールとか
書き込み禁止のエディットコントロールとか
スクロールビューとか
0538520NGNG
遅れますたm(__)m

>>523
単体テストでリークバグを検出したいのでつよw

>>524-528
やっぱ市販製品でつか...(マニーが...orz

>>529
うーんちょっと違いまつ。メモリ確保失敗というより
リークの検出をしたいでつ。。。


みなさんどうもありがとうございますた。
とりあえず慎重にPGして、ひと山あててBoundsChecker
買うですw
0539デフォルトの名無しさんNGNG
COleDataSource::DoDragDrop() を呼ぶ前に CacheGlobalData() を
2種類のデータ形式で呼び出すと、最初はうまく動作するんですが
一定時間後に E_OUTOFMEMORY で COleDataObject::GetGlobalData() に
失敗するようになります。GetGlobalData() を2度呼び出すのは
間違ってるでしょうか?
0540530NGNG
>>531
ありがとうございます。マルチスレッド版DLLならばスレッドセーフ、ということですね。
http://66.102.7.104/search?q=cache:UuuMyILAJXsJ:www.sabamiso.net/yoggy/tdiary/%3Fdate%3D20030822+cstring+%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%82%BB%E3%83%BC%E3%83%95&hl=ja&lr=lang_ja
など、少し調べた限りではMFCってスレッドセーフじゃない、みたいに書かれているページがいくつかありましたので…

(ちなみに使用したかったのはCFileでした。)
ありがとうございました。
0541デフォルトの名無しさんNGNG
>>520
んなもん買わないでも_CrtSetDbgFlag使えばいいんじゃねーの?
0542デフォルトの名無しさんNGNG
ちょっとよろしいですか?
あるディレクトリ以下のファイル名一覧を取得したいんですが、サンプルをコピーしてみて、できたのですが。
日本語のファイル名だけ取得できませんでした・・・。
CFileFindって日本語は駄目なんでしょうか?
0543デフォルトの名無しさんNGNG
>>542
shiftJISのダメ文字が混じってるだけでは?
ttp://www.kent-web.com/pubc/jcode/
0544デフォルトの名無しさんNGNG
>>543
どうやらそのようでした。ありがとうございました!
0545デフォルトの名無しさんNGNG
すみません。>>530-531あたりを見て思ったのですが、
マルチスレッドのDLLを使えばMFCだろうとCのstrtok関数だろうと全てスレッドセーフになり、
シングルのDLLを使う場合は、スレッドセーフであることが保証されていないので自分で同期取らないといけない、
という理解で良いのでしょうか?

私はてっきりマルチスレッドにするときは何が何でもマルチスレッドDLLを使って、
その上で、スレッドアンセーフなものは自分で同期をとるプログラミングをしなさい、
ということかと思っていました…
0546デフォルトの名無しさんNGNG
スレッドセーフなライブラリは、ちゃんと使えば、スレッドセーフになる。
どんな使い方でもスレッドセーフになるって、魔法のライブラリかよ。
「バグのないライブラリを使うと、バグのないプログラムになる」が否なのに同じ。
0547デフォルトの名無しさんNGNG
当然、スレッドセーフでないライブラリは、マルチスレッドで使うと危険。
ちゃんと同期をとって使っているつもりでも、内部処理や内部エリアで同期がとれていない。
0548デフォルトの名無しさんNGNG
>>545
MFCは同期クラス(CMutexとか)以外はスレッドセーフじゃなかった気がする。
心配ならソース見てみれば?
0549デフォルトの名無しさんNGNG
>>548 はスレッドセーフの言葉の意味自体すら知らない
0550デフォルトの名無しさんNGNG
For size and performance reasons, MFC objects are not thread-safe at the object level, only at the class level.
0551デフォルトの名無しさんNGNG
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_Multithreading.3a_.Programming_Tips.asp
0552デフォルトの名無しさんNGNG
まとめ

シングルスレッド用ライブラリ スレッドセーフではない(マルチスレッドでは使用不可)
マルチスレッド用ライブラリ クラスレベルでスレッドセーフ(マルチスレッドで使用可)

同一オブジェクトに対する別スレッドからのアクセスの同期は
同期オブジェクトを使ってプログラマがとる
0553デフォルトの名無しさんNGNG
CAsyncSocketを使用して書いていますが
どーやって接続先、自分のIPアドレスとポート番号を取得できますか?
0554デフォルトの名無しさんNGNG
>>552
同期クラスは例外で、オブジェクトレベルでスレッドセーフ。
0555デフォルトの名無しさんNGNG
>>552
MFCにシングルスレッド用ライブラリなど存在しない。
シングルスレッド用とマルチスレッド用(スレッドセーフ)があるのはCランタイムライブラリ。
0556デフォルトの名無しさんNGNG
>>553
IPだけでなくネームアドレスも使えるだろ?
ポートは使用するサービスによって決まるもんなんだからあらかじめ決めて動作
させるのがネットワーク・アプリ書くときの前提になると思うが。

何がしたいのか、キミのネットワークの仕組みについての理解度がどれくらいか
よく分からないね。
0557デフォルトの名無しさんNGNG
>どーやって接続先、自分のIPアドレスとポート番号を取得できますか?

自分の方は GetSockName(), 先方は GetPeerName で取れます。
IPv6 対応はそれぞれ GetSockNameEx, GetPrrtNameEx。
0558デフォルトの名無しさんNGNG
指がずれたな(w
0559デフォルトの名無しさんNGNG
>>558
接骨院へ
0560デフォルトの名無しさんNGNG
MFC version 6.0 (still mfc42.dll) Visual C++ version 6.0 シングルスレッド用DLLあり
MFC version 7.0 (mfc70.dll) Visual C++ .NET なし
0561デフォルトの名無しさんNGNG
> 同期クラスは例外で、オブジェクトレベルでスレッドセーフ。
そりゃそうだろ(藁)
0562デフォルトの名無しさんNGNG
>>561
CEvent::SetEventの呼び出しを
Win32の生のクリティカルセクションで同期するバカが実在したりするから
世の中は面白い。
0563デフォルトの名無しさんNGNG
てか、同期クラスはただのラッパーだし
0564デフォルトの名無しさんNGNG
質問です
CDialogBar上にボタンを配置して、それを条件に合わせて、
有効無効の変更を行いたいのですが、何処で行えば良いでしょうか?

MFCのソースを追っている限りでは、コマンドハンドラが存在すると常に有効に
なってしまうように見受けられますが・・・

0565デフォルトの名無しさんNGNG
>>564
コマンドマップに EnableCommandUI だかなんだかを追加するんじゃなかったかな。
0566デフォルトの名無しさんNGNG
>>564
CDialogBar m_wndDlgBar;
....
CButton *pBtn=(CButton *)SubclassDlgItem(IDC_BUTTON1, &m_wndDlgBar);
pBtn->EnableWindow(FALSE/TRUE);

では、だめかな?
0567564NGNG
>>565
>>566
返答有難う御座います
CMainFrameのコマンドマップに
ON_UPDATE_COMMAND_UP( IDC_BTN_XXX, OnUpdateBtnXXX )
を手動で入れてそこで処理させることで実現できました
0568デフォルトの名無しさんNGNG
>>562
すみません、解説お願いします。
(理解できてません…)
0569デフォルトの名無しさんNGNG
>>568
1.「MFCで提供されているクラス、同一のインスタンスへのアクセスはスレッドセーフではない」という話をどこかから聞きつける。
2.そうかそうか、と言って、以下のようなコードを書く

とあるスレッド
EnterCriticalSection( &csEvent1 );
event1.SetEvent(); // スレッドセーフじゃないのでクリティカルセクションで保護
LeaveCriticalSection( &csEvent1 );

別のスレッド
EnterCriticalSection( &csEvent1 );
HANDLE hEvent = (HANDLE)event1; // スレッドセーフじゃないのでクリティカルセクションで保護
LeaveCriticalSection( &csEvent1 );
WaitForSingleObject(, INFINITE);

実際にはもちろんこんな必要はない。
0570デフォルトの名無しさんNGNG
MFCで全角スペースをトリミングしたいのですが
自分でロジック組む以外ないですかね?
0571デフォルトの名無しさんNGNG
ロジックとか言うほどのもんかよ
0572デフォルトの名無しさんNGNG
>>571
君の言うロジックの定義は?
0573デフォルトの名無しさんNGNG
定義とか言うほどのもんかよ
0574デフォルトの名無しさんNGNG
>>573 説明出来ないのか ( ´,_ゝ`)プッ・・
0575デフォルトの名無しさんNGNG
説明とか言うほどのもんかよ
0576デフォルトの名無しさんNGNG
説明とか言うほどのもんかよとか言えるほどもんかよ
0577デフォルトの名無しさんNGNG
ほどもんかよ
0578デフォルトの名無しさんNGNG
ぼぉくほどもん。ターケコープタァー!
0579デフォルトの名無しさんNGNG
CWebBrowserクラスのNavigateで、自前のウィンドウに埋め込みウェブを表示させているのですが
そこのユーザーエージェントを制御したいのですがどうすればよいでしょうか?
教えてください
0580579NGNG
Navigateに与える引数を工夫すれば実現できそうなのですが・・・
どなたかヒントください
0581デフォルトの名無しさんNGNG
夏ですね
0582570NGNG
夏厨が沢山、湧いてますなぁ〜。
無理っぽいので自分で作ります。
0583デフォルトの名無しさんNGNG
>>582
応援してます(はぁと
0584570NGNG
>>583
応援されたので作って見ました。一応、動いてるけど、これでええのかな?

CString s = "うあ ああああ     ";
int c;
int last_pos = -1;
int pos;
int i = 0;

while (i < s.GetLength()) {
   pos = i;
   if (IsDBCSLeadByte(s[i])) {
      if (i == s.GetLength() - 1) {
         c = ' '; // DBCSの先頭バイトだけが最後に残っている場合
         i++;
      } else {
         c = ((BYTE)s[i] << 8) + (BYTE)s[i+1];
         i+=2;
      }
   } else {
      c = s[i];    
      i++;
   }
   if (_istspace(c) || c == 0x8140) { // ホワイトスペースか全角ブランク?
      if (last_pos == -1)
         last_pos = pos;
   } else {
      last_pos = -1;
   }
}
if (last_pos != -1)
   s = s.Left(last_pos);
0585570NGNG
VBやC#もTrimは全角スペースをちゃんと処理してるのね。MFCだめぽ。 orz
0586デフォルトの名無しさんNGNG
日本語が変だ。orz
0587デフォルトの名無しさんNGNG
ちょっとこのスレ元気ないし、とりあえず誰か579の問いに答えてやったらどうよ?
オレはわからないんから答えられないけどさ
0588デフォルトの名無しさんNGNG
579さんこんばんは。
0589デフォルトの名無しさんNGNG
出来ません
CWebBrowserではIEのコンポーネントを使っているので、
どうしても変更したければSDKベースで作り直して下さい。
0590デフォルトの名無しさんNGNG
答えろと言われても、これ見ろとしか言えないんだが。。。
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/WebBrowser/WebBrowser.asp
0591579NGNG
>>590
NavigateのPostDataで送るデータを工夫すれば
なんとかなりそうなのですが・・・
どこかに参考資料ないですかね?(できる限りは調べたのですが)

よろしくおねがいします


0592デフォルトの名無しさんNGNG
それくらい自分でなんとかしろ
0593デフォルトの名無しさんNGNG
> VBやC#もTrimは全角スペースをちゃんと処理してるのね。MFCだめぽ。 orz
VBやC#がどんな文字を扱っているか調べた後、CString::TrimXXXX 使いなさい。
0594デフォルトの名無しさんNGNG
>>591
http://www.codeproject.com/miscctrl/#HTML+Browser+Controls
0595デフォルトの名無しさんNGNG
>>593
先生! 海栗は嫌いでつ。
0596579NGNG
>>594
いろいろ系統の似たサンプルはあるんですが、
User-Agentを制御するサンプルはありませんね
0597デフォルトの名無しさんNGNG
>>596
UrlMkSetSessionOption()
URLMON_OPTION_USERAGENT
0598デフォルトの名無しさんNGNG
今までありがとう、MFC
0599デフォルトの名無しさんNGNG
これからもよろしく、MFC
0600デフォルトの名無しさんNGNG
ATLのことも忘れないでください。
0601デフォルトの名無しさんNGNG
海栗って何?
0602デフォルトの名無しさんNGNG
海栗=うに=unix
0603デフォルトの名無しさんNGNG
MFCのサンプルなどでCodeGuru等が有名ですが、
CodeGuruのソースのライセンスはどのようになっていますでしょうか?
サイトの方をみたのですが、それらしき文章がないように思い受けます。

スレ違いかもしれませんが、ご教授いただければとおもっております。
0604デフォルトの名無しさんNGNG
>>603
あれは作者がそれぞれいるだろ
0605デフォルトの名無しさんNGNG
雲丹
0606デフォルトの名無しさんNGNG
>>601
海栗=うに=海栗コード
0607デフォルトの名無しさんNGNG
タスクバーに常駐するタイプのプログラム作ってます。
で質問なんですけど、xpのタスクバーは非アクティブのとき非表示に出来ますが
どうやって制御すればいいんでしょう?教えてください
0608デフォルトの名無しさんNGNG
少なくともMFCにはそんな機能は無いな
0609デフォルトの名無しさんNGNG
>>607
タスクバーに常駐させるだけで良いのでは?

タスクバーが非アクティブのとき非表示になっても何も困らないのでは?
0610デフォルトの名無しさんNGNG
「アクティブでないインジケータを隠す」機能に対応できず、常に表示されてしまっている状態で困っています
0611デフォルトの名無しさんNGNG
>>610
つまり「アクティブのまま」なんじゃないの?
0612271NGNG
MFC最高。MFCあったらC++なんかイラネ
0613デフォルトの名無しさんNGNG
>>612
保守乙
0614デフォルトの名無しさんNGNG
KFC最高。KFCあったらMacなんかイラネ
0615デフォルトの名無しさんNGNG
>>614
スレ違い乙
0616デフォルトの名無しさんNGNG
sage乙!
0617デフォルトの名無しさんNGNG
MFC乙!
0618デフォルトの名無しさんNGNG
lps乙CmdLine
0619デフォルトの名無しさんNGNG
X1-turbo乙
0620デフォルトの名無しさんNGNG
or乙
0621デフォルトの名無しさんNGNG
初心者なんですが、今MFCからC言語始めてるんですが、
APIを直接使わずにMFCだけでAPIでできることのすべてを代用することができますか?
0622デフォルトの名無しさんNGNG
>>621
寡聞にして「すべて」を代用できるかどうかは知らんが、
少なくともAPIの知識が必要になるメンバ関数は少なくない。
MFCを使いつつ、その先にはAPIがあることを念頭に入れておくのがいいと思う。
0623デフォルトの名無しさんNGNG
>>621
> 初心者なんですが、今MFCからC言語始めてるんですが、

「初心者」って言っても色々あるだろうが、そんなことできるんだろうか?
と素朴な疑問。

Cの基礎的な書式とC++のクラス概念くらい学んでからWindowsプログラミング
に移行した方が良いっていうか、そうじゃないと普通無理だろっていうか・・・。
0624デフォルトの名無しさんNGNG
とりあえず普通に質問に答えるなら、出来るか出来ないか。だろ?
なんで君たちはそこには言及しないんだい?

という訳でAPIでMFCの代わりは出来ますが、MFCでAPIの代わりは出来ません。
0625621NGNG
>>622
全部自分でやるAPIのほうがわかりやすくて魅力的に見えてきました・・・。
この関数できたらAPIやってみようと思います。

>>623
プログラムの勉強を始めて今2週間くらいです。
C言語の文法はなんとなくわかったのですが、コードでCaptionを変える方法で躓きました。
MFCはAPIをラップしたものだから同じ機能があると思ってMFCメインにしようと思ったのですがVCが自動的にやってくれすぎて一向に構造がクリアにみえてきません・・・。
MessageBox関数と同じ機能をもつ関数を自分で作るにはどうすればいいんでしょうか。
と思っていたらなにやらできたようです。
MSDNわかりにくっ(;´Д`)

>>624
なるほど。
APIのほうが優れもののようなのでキリがついたらそっち勉強しようと思います。
0626デフォルトの名無しさんNGNG
つうか、「C言語」じゃねえよ。
0627デフォルトの名無しさんNGNG
APIの方が優れてるってのはどうかと思う。MFCはどっちかというとプログラマの手間を
省くための便利ライブラリなんだし、技術がないならむしろMFCを積極的に利用した方
が楽ができるし良い物を作れる。大抵のことはMFCでできてしまうんだし。
0628デフォルトの名無しさんNGNG
C -> API -> C++ > MFC でいいよ。
0629デフォルトの名無しさんNGNG
そしてMFCに嫌気が差して、APIに戻るか他のライブラリを探すようになる。
0630デフォルトの名無しさんNGNG
>>629
たしかにかなりの人がMFCに挫折するね
0631デフォルトの名無しさんNGNG
なんで、MFCで挫折するんだろうね?
0632デフォルトの名無しさんNGNG
へんなマクロが嫌だ。
0633デフォルトの名無しさんNGNG
なんで、そんな動きするのか、わけがわからん。
ソースおっても、膨大すぎて意味分からん。
ウィザードでつくったものを、どう変更すりゃいいのか、意味不明。
C++とAPI知ってんのに、意味分からんマクロとか大杉。
すでにJavaに移行しました。Java分かりやすくてサイコー!!
0634デフォルトの名無しさんNGNG
MFCがいやで、C++ Builderに逝った人は多そうだな。
漏れは、WTLにいったよ。
2005ではMFCはどうなるんだろう〜?
0635デフォルトの名無しさんNGNG
それなりに枯れてて出来たソフトの質はいいんだけどね
覚えるのにWin32API以上に労力が必要なのは痛いね
0636デフォルトの名無しさんNGNG
俺MFCに依存しまくり・・・・・・・orz
0637デフォルトの名無しさんNGNG
全然 Foundation じゃないよね。
0638デフォルトの名無しさんNGNG
MFCに挫折して、Delphiに逝った趣味グラマです。Delphiだと、VCLのソースを見る事は少ないです。MFCのフレームワークは、いくつものクラスを連動して使う事を強いられます。VCLだと、あるコンポーネントだけ使うということが容易なのがいいです。
0639デフォルトの名無しさんNGNG
MFC の限界っていうより、C++ の限界にかなり制約を受けてると思う。
0640デフォルトの名無しさんNGNG
C++がもっとまともな仕様なら
MFCも使いやすいライブラリになっていただろうに。
0641デフォルトの名無しさんNGNG
最近Java厨がいろんなスレを荒らしてるね
0642デフォルトの名無しさんNGNG
MFCが肌に合わないならWTLでも試しては伺か?
ってか、厨房の言語の宣伝とかいらねぇ。

Del厨もJava厨も巣に帰れと(ry
0643デフォルトの名無しさんNGNG
そもそもMFCが肌に合わないとかいう話がスレ違いなんだが。
愚痴はマ板へ。
言語厨は厨用スレへ。
ここはどんな理由にせよMFCを使う人のためのスレ。
0644デフォルトの名無しさんNGNG
亀ですがクラスレベルでスレッドセーフとは何を意味してますか?
オブジェクトレベルでスレッドセーフでないということは分ります。
同一インスタンスのものを複数のスレッドから触るときは排他がいるということですね。

クラスレベルでもスレッドセーフでないと言ったらどうなるのでしょう?
たとえばそれはあるクラスがstaticなメンバなどを使ってそのクラスの共有の
情報をもっていてそれが複数のスレッドから触られるとおかしくなるような設計である。
といったことですか?
0645デフォルトの名無しさんNGNG
dejavu?
0646デフォルトの名無しさんNGNG
>>644
そういうことだと思う
0647デフォルトの名無しさんNGNG
>>646
ありがとう!
0648デフォルトの名無しさんNGNG
.NETにはあるようですが、MFCにてurlencodeをする方法がみつかりません。
良き方法があればご教授いただきたい。
やはり、コーディングするしかないのでしょうか?
0649デフォルトの名無しさんNGNG
>>640
時間軸として逆じゃね?
ARM以前のC++の貧弱な表現力で作ったらあーなったのがMFCで、
ある意味、今のC++に至る過程でMFCは反面教師として機能していた。
0650デフォルトの名無しさんNGNG
今MFC作ったらCStringもstd::stringの派生だったかもしれないね。
CObArrayなんかもなかっただろうし。
0651デフォルトの名無しさんNGNG
>>650
無知登場
文句は受け付けません
ググレ
0652650NGNG
>>651
文句は言わんが、あんたの言いたいことが判らん。
#だからこそ無知と言われているのだろうが。
0653デフォルトの名無しさんNGNG
>>651
ない爪を隠そうとしなくてもw
0654デフォルトの名無しさんNGNG
ほんとに無知なのに勘違い自信家だと調べもしないで偉そうにするのな(しかも自作自演)
0655デフォルトの名無しさんNGNG
質問です。
MFCでアクセスのDBから検索するプログラムつくりました。
一緒にアクセス(のフォーマット)のDBを配布したいんですけど
ライセンスは大丈夫ですかね?
0656デフォルトの名無しさんNGNG
ダイアログバーの追加がうまくいきません

テンプレートを作って
CMainFrameでCDialogBarのオブジェクトを用意
コンストラクタでCreateを呼ぶ

でコンパイルは通りますが実行しようとすると
"0x77f5284"の命令が"0x00000000"のメモリを参照しました。
メモリが"written"になることはできませんでした。
と出て実効できません。

とりあえずダイアログバーを表示するだけの場合でも他に何かやらなければならないことがありますか?
0657デフォルトの名無しさんNGNG
>>656
CMainFrameのコンストラクタで、CMainFrameを親としてCDialogBarをCreateしてる
というオチだろうか?
0658デフォルトの名無しさんNGNG
>>656
コンストラクタ内の auto 変数として CDialogBar オブジェクトを定義している
というオチだろうか?
0659デフォルトの名無しさんNGNG
>>656
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_DlgBar.html
0660656NGNG
なんか勘違いしていました
コンストラクタではなくMainFrameのOnCreateでCreateを呼んでいます
CDialogBar オブジェクトはちゃんとCMainFrameクラスのメンバとして宣言していますし

>>659のサイトの通りにやっても同じエラーが出て実効できません
0661デフォルトの名無しさんNGNG
>>660
まず落ちている個所を特定しる。
0662デフォルトの名無しさんNGNG
>>650
UNICODEビルドの場合、std::stringの派生じゃ困ると思う。
0663デフォルトの名無しさんNGNG
>>662
std::basic_string<TCHAR>
0664デフォルトの名無しさんNGNG
>>663
そんなことみんな知ってるよ
0665デフォルトの名無しさんNGNG
>>664
ちゃんと話がかみ合ってると俺は見ているが・・・
この後の展開次第かもな
0666デフォルトの名無しさんNGNG
いまのCStringってテンプレートだよね
VC++6.0はちがったとおもったけど
0667デフォルトの名無しさんNGNG
>>666
そそ、C6とC7で互換性がなくて怪しげなソースが引っ掛かり捲くり。
C6は兎も角、C4の頃はまともにテンプレートが使えない状態だったし。
0668デフォルトの名無しさんNGNG
VC++.NETつかえねー
0669デフォルトの名無しさんNGNG
>>668 ( ´,_ゝ`)プッ・・
0670デフォルトの名無しさんNGNG
>>667
爆弾? 新型でてるのか??
0671デフォルトの名無しさんNGNG
C6とかC7って首都高みたいだな。
0672デフォルトの名無しさんNGNG
タイトルバーの文字列ってどう変更するんでしょうか?
実行途中で変えるとか起動時に変える
というのではなく、デフォルトを変えたいと言うか…
0673デフォルトの名無しさんNGNG
>>672
リソースストリングテーブルのIDR_MAINFRAMEに
・SDIなら先頭から\nまでの文字列
・MDIなら文字列そのもの
がタイトルバーに表示されるような気がした。
0674672NGNG
>>673
変更できました
ソースを必死で検索してました…

ありがとうございました
0675デフォルトの名無しさんNGNG
>>674
大サービスついでに言っとく。
ttp://www.ne.jp/asahi/hishidama/home/tech/vcpp/caption.html
0676デフォルトの名無しさんNGNG
>>675
リンク先のページで、動的に変える場合は SetWindowText とか使えとなっているけど、
CFrameWnd::SetTitle で変えるか、GetTitle をオーバーライドして変えておかないと
不意に元に戻されて「MFCは陰で何やってるかわかんない・・・APIだけの方がラクぽ」
ってことになるので注意。
0677デフォルトの名無しさんNGNG
TCHARと_TCHARのちがいってなんですか?
0678デフォルトの名無しさんNGNG
>>677
_TCHAR
 tchar.hが_UNICODE/_MBCSが定義されているかで切り替える。
TCHAR
 windows.h(の中のwinnt.h)がUNICODEが定義されているかで切り替える。LPCTSTRなどの仲間がいる。
0679デフォルトの名無しさんNGNG
質問させてください。

MFCでSDIのプログラムを作っています。
ビューの基本クラスをCTreeViewにしています。

フレームのメンバ関数から、ビューのメンバ関数を使えずにいます。

ビューの基本クラスがCViewの場合、ポインタをGetActiveViewで取得でき、
そこからメンバ関数を使えると思うのですが、
自分のプログラムの場合、CTreeViewなので、GetActiveViewの戻り値を
CTreeViewにキャストして関数を使ったところ、コンパイルは通るのですが、
アドレスがおかしいなどのエラーがでました。

どなたか知恵をかしてください。

0680デフォルトの名無しさんNGNG
>>679
まずはデバッガで GetAvtiveView が返してきたものを見てみたら?
0681デフォルトの名無しさんNGNG
>>679
そりゃCTreeViewにキャストしたらCTreeViewまでのメンバしか使えないでしょ。
0682679NGNG
>>680
ぬるっす。
わかりました。OnCreateでやってたからだめなんですね。
Activeじゃないですものね。

ありがとうございました。
0683デフォルトの名無しさんNGNG
質問です。
エクスプローラの超簡易版みたいなものを作っています。
ツリービューでの表示と展開はできるようになったのですが、
たとえば展開しているフォルダに別アプリなどで新しいフォルダ
を作成した時、すぐにエクスプローラの表示に反映させるには
どうすれば良いでしょうか?

MFC6.0です、よろしくお願いします。
0684デフォルトの名無しさんNGNG
>>683
FindFirstChangeNotification
0685デフォルトの名無しさんNGNG
>>684
ありがとうございます!
0686デフォルトの名無しさんNGNG
>>678
回答ありがとうございます。MFCだと_TCHARがよさそうなので_TCHAR使います。
0687デフォルトの名無しさんNGNG
MFCアプリのGUIスレッドでメッセージだけでなくCEvent等の
監視も行いたいと考えています。とりあえず考え付くのは
CWinThread::PumpMessage内のGetMessageの前、又は
OnIdleにてMsgWaitForMultipleObjectsを呼ぶ方法です。
CWinThread::RunのoverrideにしてもOnIdleのブロックに
しても余り一般的とは思えず躊躇してます。

似たような事をやったことある人がいれば意見をお願いします。
0688デフォルトの名無しさんNGNG
>>687
AfxBeginThread()でスレッドを作り、その中でシグナルイベント待ち。
ユーザーインターフェーススレッドに対して通知をしたい場合は、
WM_USER以上のユーザー定義メッセージを送信する。
受け取る側でもメッセージをユーザー定義メッセージ受信できるようにしておく。
0689デフォルトの名無しさんNGNG
MFCベースアプリで実装されている機能についてプラグインにすることになったのですが
プラグインとはどうやって作ればいいのでしょうか?
0690デフォルトの名無しさんNGNG
>>689
susieプラグインで練習してみれば?
0691デフォルトの名無しさんNGNG
>>688
WM_USERじゃ拙いって。WM_APPを越える値がお勧め。

>>687
私のアプリでは、タイマーでイベント監視をした。
イベントの場合は落とし穴がいろいろあるから気をつけてや〜
0692687NGNG
>>688
別スレッドだとスレッドスイッチが多くなるのが少し
気になります。

>>691
タイマーだと処理周期が頭打ちとなってしまいそうです。

基本的には688の方法でもパフォーマンス的にはOK
だと思いますが、MsgWaitForMultipleObjectsを使えば
監視するだけのスレッドを立ち上げずにすむかなぁと思い
質問しました。
0693デフォルトの名無しさんNGNG
ActiveXをDllに組み込み、プラグインにしたいです。
メニューのプロジェクトへ追加、コンポーネントとコントロール・・を使って追加すると
ラッパクラスが出来ると思うのですがこれを使うことは出来るのでしょうか?

このクラスのインスタンスをDll側のグローバルに用意してもいざメソッドを呼ぶと
void AFX_CDECL CWnd::SetProperty(DISPID dwDispID, VARTYPE vtProp, ...)
{
  ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)

で引っかかってしまいます。
このクラスは使わずに自分でCreateInstanceするのですか?
0694デフォルトの名無しさんNGNG
>>692
処理速度が問題になるなら、イベントでの同期は検討しなおした方がよくない?
イベントはそれ自体早くないと思うし、発行側は処理側が処理したことを知りえないから
何らかの方法で返信しないといけなくなるしね。
0695デフォルトの名無しさんNGNG
>>687,692
質問者の分際で、評論家・審査員を気取ってんじゃねーよ、クソが
0696デフォルトの名無しさんNGNG
MFC使っときながらスレッド生成のコストを気にする人には困ったものだ。
単にスキル不足なだけちゃうんかと。
0697デフォルトの名無しさんNGNG
>>696
お前が偉そうに言うな
0698デフォルトの名無しさんNGNG
CStringのoperator=の戻り値にconsが付いてるのはなぜですか?
何故こんなこと思ったかというと

CString& func(CString& str)
{
CString tmp;
// 処理
return str = tmp;
}

returnのところで
error C2440: 'return' : 'const class CString' から 'class CString &' に変換することはできません。(新しい動作 ; ヘルプを参照)
変換で修飾子が失われます。
と出たからです。

std::string::operator=の戻り値にはconst付いてないのに、CStringに付いてる意図はなんでしょうか?
0699デフォルトの名無しさんNGNG
>>698
CStringが作られた頃のC++は代入演算子の結果がCと同じく右辺値だったからじゃない?
それでCStringもそれに合わせてoperator =()の戻り値を値渡しに……するとオーバーヘッドがかかるんでconst参照にした、って具合。
0700デフォルトの名無しさんNGNG
>>698
WTLって知ってる?マイクロソフトのサイトからダウソできるよ。
WTLのCStringだと、constじゃないよ。
WTL::CStringで解決。終了。
0701デフォルトの名無しさんNGNG
>>700
>意図はなんでしょうか?
って聞いてるんだから、その答えじゃ解決になってませんよっと。

ちなみに、手元にあるVer7.1(build 3340)ではconstで
最新のWTL7.5.4196.0 では付いてませんね。
0702700NGNG
>>701
マジですか?よく調べずに書いてしまった。
当方、WTL7.5です。
>>698さん、そんなわけでスマソ。忘れて下さい。
0703700NGNG
>>702
なりすましはやめてください。
0704デフォルトの名無しさんNGNG
早く夏休みが終わりますように…(ナムナム
0705yara ◆SSLypP3Luo NGNG
VC2005か.NET Framework SDKにMFCある?
0706デフォルトの名無しさんNGNG
CSplitterWndを用いて分割しCListView、CHtmlView等を貼り付けてブラウザを作っております。
http://www.codeproject.com/miscctrl/simplebrowserformfc.aspを参考にして
メモリ上のHTMLを書き込むと言うプログラムを作成いたしました。

このプログラムはCListView上のキーダウンのタイミングでCHtmlViewを書き換えるものです。
これは上手くいったのですが、問題が出てきてしまいました。

CHtmlViewをクリックしたあとに、CListView上にクリック等で戻りキーダウンすると
FocusがCHtmlViewに移動してしまうのです。
このときにメモリ上のHTMLファイルを書き込んでおりまます。

どうやら、HtmlViewをクリアする所あたりで問題が起きているようなのですが。
また、CHtmlViewをクリックを一度もしない場合においては問題なく動いております。

SetFocusでCListViewにセットし直しても、上手く動かないようです。

何か良い案、参考情報へのリンクなどお知りでございましたらご教授ください。
0707デフォルトの名無しさんNGNG
>>706
SetActiveViewとかどうよ?(試してないが)
ついでに
>お尻でございましたら
「ご存知でしたら」じゃね?
0708706NGNG
>>707
お恥ずかしい(涙

SetActiveViewを試してみたのですが、上手くいきませんでした。
0709デフォルトの名無しさんNGNG
起動と同時にタブコントロールを生成しようと、
C○○ViewのOnInitialUpdateで
CTabCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 200, 80), this, 100);
を呼び出すと、SDIだと上手くいったんですがMDIでは何故かタブが生成されません。
エラーが出る訳でもなく、thisをGetWindow(GW_CHILD)に変更するとMDI子ウィンドウに生成されるので、
指定するウィンドウか生成するタイミングが間違っていると思うのですが色々試しても分かりません。
原因の分かる方、教えて下さい。
0710デフォルトの名無しさんNGNG
すでに(VIEWの)ウィンドウがあるかどうかくらいは確認したんだろうな?
0711デフォルトの名無しさんNGNG
コンボボックスについて質問です。

コンボボックスのエディットコントロールでテキストを変更した場合、OnCbnEditchangeXXXXが呼ばれますが、
このエディットコントロールのテキストの内容を取得する方法を教えてください。
0712デフォルトの名無しさんNGNG
>>711
「テキストの内容」ってなんだ?
GetLBText()じゃないの?

つーかリファレンスでメンバ関数のチェックぐらいしたんだろうな?
0713デフォルトの名無しさんNGNG
>>712
失礼しました。
誤)テキストの内容
正)エディットボックスの内容

その関数だとリストボックス内のテキストです。
エディットボックス内のテキストを取得する方法が見つかりません。
0714デフォルトの名無しさんNGNG
GetWindowText
0715711NGNG
>>714
ありがとうございました。
0716デフォルトの名無しさんNGNG
VC6.0で開発しています。

IEコンポーネントを使ってネット上からhtmlファイルを取得し、
解析して保存したいのですが、
ブラウザ画面を表示させたくはありません。

IEコンポーネントのうちURLからコンテンツを取得する機能と
htmlコンテンツを解析する機能を使いたいのですが
どのようにすればよいのでしょうか?
0717デフォルトの名無しさんNGNG
>>716
「解析」というのが何を指しているのか分からないね。
IEコンポーネントを使うって書いてあるけど、ブラウザ・エンジンを使うってのは
普通レンダリングさせるためであって、ファイル内容をHTMLコードとして見る
だけなら必要ないことのはずだが?
0718716NGNG
>>717
レスありがとうございます。

> 「解析」というのが何を指しているのか分からないね。

テーブルで表示されてる表などを整形してリスト表示したり
したいです。

> IEコンポーネントを使うって書いてあるけど、ブラウザ・エンジンを使うってのは
> 普通レンダリングさせるためであって、ファイル内容をHTMLコードとして見る
> だけなら必要ないことのはずだが?

ごもっともです。
・URLからhtmlコードを簡単に取得できそう。
・IE対応のページを確実に解析できそう
というのが理由です。

htmlの解析という視点に立つと他の手段はあるのでしょうか?

0719デフォルトの名無しさんNGNG
DOMオブジェクトとかのドキュメント構造を取得したいってことじゃないの?
0720デフォルトの名無しさんNGNG
>>719

そうです。
でもXMLパーサーでは解析できませんよね?
一応試して見ましたができなかったので
IEコンポーネント使えば確実だろうと思いました。
0721デフォルトの名無しさんNGNG
http://www.asia.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcsample/html/_sample_mfc_tear.asp
0722デフォルトの名無しさんNGNG
CHtmlViewってのはあくまでViewであって表示させるためのものだと思うが?
中身をデータとして扱いたいならCHttpXXX系やCAsyncSocketなんかを使って
ファイル・データをもってきて自分で使いたいように加工するもんだと思う。
0723デフォルトの名無しさんNGNG
軽いHTMLパーサならCodeProjectとかSourceForgeとかにありそうだけどな。
0724デフォルトの名無しさんNGNG
>>722
自分でparseしたくないって話だっただろ。
GetHtmlDocumentでドキュメントインターフェイスの取得できるし。
0725デフォルトの名無しさんNGNG
>>720
IEコンポっていうか MSHTML っていうのが MS の html エンジン。
IE も WebBrowser Control もコレ使ってる。
使い方のサンプルは以下にあるよ。
データを持ってくるところは自分でやることになるような気がするけど。

http://msdn.microsoft.com/archive/en-us/samples/internet/browser/walkall/default.asp?frame=true
0726720NGNG
みなさまありがとう

>> 721,725を見ましたが
この二つの組み合わせでうまくいきそうです。

感謝しています。
0727初心者DNGNG
今、メニューの項目からダイアログを開いて値を入れて
OKを押したら、その値を元にCPenの絵が動くっていう
ソフトを作ってます。
ダイアログを表示するのはクラスCxxxAppに、
CPenで書かれた絵はOnDrawじゃなくCxxxViewクラスの中にpublic:として
HogeDraw()(OnDrawじゃないっす)を作ってあります。
ダイアログの関数に
if( Hoge.DoModal() == IDOK ){
  クラスCxxxViewのメンバ関数HogeDraw(ダイアログの値を引数にする)
}
としたいのですが、どう記述すれば良いのですか?
参考になりそうなサンプルとかあったら教えてください。
対処できずにはや3日ほど経ちました…
0728& ◆RdmUjfVKqQ NGNG
簡単に言うとCxxxAppの中で
CxxxViewのHogeDraw(引数あり)を使いたいんですが、
どう変数を宣言すればいいのか、どうポインタを渡せば良いのか
分からないってことです。
すいません、お願いします。
0729デフォルトの名無しさんNGNG
名前が化けました。727=728です。
0730デフォルトの名無しさんNGNG
とりあえず、地道に勉強してくれ。
0731デフォルトの名無しさんNGNG
3日もあればかなり勉強できる(・∀・)!
0732デフォルトの名無しさんNGNG
ネットワークスレから移動してきました。
再質問します。
677 名前:デフォルトの名無しさん :04/09/09 22:52
ライブラリに依存する質問になってしまいますが、MFCのCAsyncSocketのOnXXX()は、
どういう仕組みで呼び出されるのでしょうか?
もし、メッセージポンプを経て呼び出されるのなら、OnXXX()の中では長時間の処理が
出来なくなりますが、皆さんどう対処しているのでしょう?


678 名前:677 :04/09/09 23:38
ソース見てみました。
カレントスレッドのメッセージポンプを利用するみたいですが、あってますか?
もしかしてスレ違いでしょうか?
0733732NGNG
CWinThreadはメッセージポンプが付いているそうですが、
これを利用すればいいのでしょうか?
0734デフォルトの名無しさんNGNG
よく分らないけどメッセージハンドラ内でどうしても処理が長くなるのなら
処理をスレッドに配置してスレッド起動をして、そのままメッセージハンドラを抜けてしまえばいいんじゃない?
ってか何をするのかによる。本当に長い計算をするのならスレッドにすればいいと思う。
何かを待つのなら・・・何を待つのか聞きたい。

0735732NGNG
>>734
例えば子プロセスの終了を待つとか。
0736732NGNG
Microsoftのサンプルでは、大抵子プロセスを待つ部分にワーカスレッドを使っているみたいですが、
ソケット側のちょっとした挙動の変化でGUIを止めたくないのです。
こういう要求って変ですか?
0737デフォルトの名無しさんNGNG
その場合、そのイベントハンドラからやっぱりスレッドを起動し、
そのスレッド内部でWaitFor系APIで子プロセスの終了イベントを待つ。
(たぶんその子プロセスのハンドルかなんかがそのままイベントとしてWaitできると思った。)
そんで、WaitForSingleObjectを抜けたらメインスレッドにメッセージをポストしてスレッドはそのまま終了。
というのはどう?
0738デフォルトの名無しさんNGNG
>>737
おそらくそれが正当な方法なんでしょうね。
Microsoftのサンプルもそういう形が多いです。

ところで、複数のサーバが合わさった形のプログラムはどうインプリメントするべきなんでしょうか?
たとえば、HTTP、FTPなどが組み合わさっているようなものです。
もし、あるサーバで異常が起こった場合、タイムアウトなどによって回復されるまでの期間
GUIが重くなる事態は避けたいと思います。
各サーバごとにUIスレッドを分けるといいのかな?などと妄想しましたが、
普通はどうするものなのでしょうか?

HTTP、FTPというのはあくまでもたとえです。
0739デフォルトの名無しさんNGNG
別プロセスにして、サーバー同士はプロセス間通信しとけよ。
0740ディフォルトの名無しさんNGNG
VCでMFCを使用してアプリを作成したのですが、OSや環境によって正常に
動作しないなんてあるのでしょうか?
 日本語版や英語版のWINDOWS環境では問題なく動作していたんですが
ドイツ版のWINDOWSでは動くPCと動かないPCが出てきました
動かないPCは、コンストラクション後にInitdialogに入らずにそのまま、
そのダイアログが終了してしまうという現象でした。
このようなことってあるんでしょうか?
0741デフォルトの名無しさんNGNG
>>739
プロセス間通信にもソケットを使おうとしています。
俺は異常でしょうか?
0742デフォルトの名無しさんNGNG
自分はCAsyncSocketを使ったことが無いのでなんともいえないですが
ワーカスレッドでバークレーソケットを使うなら
UIのスレッドとは別にサーバAとサーバBを別々のワーカスレッドにして
おのおのでソケットを作ってlistenしたりすると思う。
そしておのおののサーバスレッドはイベントをUIに通知するためにPostMessageして
メインスレッドと交信する。もしどっちかが死んだり固まったりした場合でリスタートしたいなら
仕切りなおしの同期の処理を設計する必要があるでしょう。

0743デフォルトの名無しさんNGNG
>>742
実は、そういう形で作っていたのですが、非同期に切り替えることにしました。
以前は、各ソケットにスレッドを割り当ててブロッキングしていたのですが、
非同期にするに当たってATLあたりからメッセージポンプをいただいて
自前のソケットクラスを拡張するか、MFCを使うか考えました。
そして簡単そうなMFCを使うことにしたわけです。

一つのプロセスでUIスレッドを複数使うのはあまり一般的ではないのでしょうか?
0744デフォルトの名無しさんNGNG
>>740
CWinApp派生::InitInstanceでDoModal呼ぶ前に抜けるコードパスも存在する場合がある。
ソケットを使うための初期化処理(Wizが自動インプリメント)に失敗したとか。
0745デフォルトの名無しさんNGNG
>>741
別に普通だけど?
0746デフォルトの名無しさんNGNG
実は、先ほどMFCソース(CAsyncSocket)を読んでみて余りのシンプルさと、
素直とは言えない作りに驚きました。
これだったら、自分で作り直したほうがいいのではないかとさえ思うのです。
皆さんはどう思いますか?
0747742NGNG
>>743
自分はUIスレッド複数はやったことが無いので、一般的かどうかについては
他の回答者の方の回答をお待ちくださいです。
0748デフォルトの名無しさんNGNG
既存のものを作り変える必要性が本当にあるかというのも気になる
既存のものの問題がもしブロッキングとかだったら正しくselectを使うなど
すれば回避できると思う。しかしそのブロッキングの解決策としてCAsyncSocketを使うのは
結局同じ問題に到達するかもしれない上に変なアーキテクチャのために振り回されるかも。
0749デフォルトの名無しさんNGNG
一般論として、技術があるなら自分でできるところまでやれば良いけど、自分で
やった分には責任を持たなくちゃいけないことになる。それを踏まえてどこまで
自分で「できる」のか判断して決めるしかないのでは?
0750デフォルトの名無しさんNGNG
>>732
OnXXX で(自らなにか)時間のかかる処理をするなら、
非同期でソケットを使う利点はまるでないと思うけど。

>ソケット側のちょっとした挙動の変化でGUIを止めたくないのです。
ちょっと状況が想定できないけど、どんなときにそういう問題がおきますか?
0751デフォルトの名無しさんNGNG
>>728
DDXでぐぐれ
0752デフォルトの名無しさんNGNG
DDXなんか関係ないじゃん
0753デフォルトの名無しさんNGNG
>>728
CxxxViewクラスのポインタをグローバル変数かどっかに保存しておけばよろしいかと。
0754デフォルトの名無しさんNGNG
>>727
ビュークラス内からダイアログを起動すればいいだけの話でしょ?
0755デフォルトの名無しさんNGNG
>>727
ビュークラスにメッセージ飛ばして、その先でHogeDraw()を実行する。
WM_APPなどでググってみれ。
ダイアログの値を渡す方法はいくらでもある。
グローバル変数でもCxxxAppのメンバ変数でも良し。
そのときはHogeDraw()はpublicじゃなくてもオッケ。
0756初心者DNGNG
>>727-729です。
皆さんありがとうございます。
結局、>>754さんのやり方でやりました。
CxxxViewクラスの中でメニューの項目からダイアログを出すっていう
関数を作ったのがなんか「?」って感じになってますが…。

>>755さんの
>ビュークラスにメッセージ飛ばして
をもうちょっと勉強してからやってみます。

勉強し直してきます…。
0757デフォルトの名無しさんNGNG
>>750
IEでもFFFTPでも挙動がおかしいときがありますよね?
操作を受け付けない時間が有りますよね?

自分の作るプログラムがそういう挙動を示さないとは思えないのです。
0758デフォルトの名無しさんNGNG
>>757
>操作を受け付けない時間が有りますよね?

…ないと思われ。OSがWin9xとか。
0759デフォルトの名無しさんNGNG
>>758
NT系でも同様だよ。
「操作」の定義があまりにもシェル寄りだね、その見方だと。
0760デフォルトの名無しさんNGNG
>>756
>>>755さんの
>>ビュークラスにメッセージ飛ばして
>をもうちょっと勉強してからやってみます。

せっかくMFC使ってるのに、そんな面倒なことしなくてもよし!
単に View にそのメニューのコマンドハンドラを追加すればいいだけだよ〜。
0761デフォルトの名無しさんNGNG
>>757
それは非同期ソケットの問題じゃないと思うけど。

漏れの経験ではそれなりに非同期っぽく作ったネットワークアプリが無反応になるのは、
gethostbyname を不用意に呼んでブロックしているケース、socket が connect / shutdown中で、
他スレッドから close しても停止できないケースが大半なんじゃないかな。
0762デフォルトの名無しさんNGNG
>>761
closeで停止できなかった場合に無反応になるのだとしたら、
何故無反応になるのですか?
0763デフォルトの名無しさんNGNG
>>762
>>761が正しいかどうか知らんが、デッドロックが起きてるとかでは?
0764デフォルトの名無しさんNGNG
非同期ソケットが便利なのは他のイベントと一緒に待てる点?
0765デフォルトの名無しさんNGNG
KFC最高。KFCあったらMacなんかイラネ
0766デフォルトの名無しさんNGNG
ウィザードでCWinThreadを継承してクラスを作るとコンストラクタとデストラクタが
protectedになるのは何故ですか?
特にデストラクタがそうなる理由がわかりません。
Microsoftのサンプルは全てpublicになっていました。
よろしくお願いします。
0767デフォルトの名無しさんNGNG
>>764
スレッドを少なく出来る部分に魅力を感じます。
Windowsでもpoll出来ますか?
出来るならそっちを使いたいです。
よろしくお願いします。
0768デフォルトの名無しさんNGNG
>>756
暮らすウィザードを一日中眺めていれば活路が見出せるはず。
ヒントは>>760
0769デフォルトの名無しさんNGNG
>>766
「何故」について考えることに意味があるかどうかだ。
しょせん同じ人間が用意したウィザードだぞ。
答えをいうなら、ウィザード作成者が徹夜明けだったからとしか答えようがない。
0770デフォルトの名無しさんNGNG
>>769
バグですかね?
たぶん意味があると思うのですが。
は!
わかったかもしれない!
もしかして、CWinThreadを継承したクラスは自分をマネージしないといけないんですか?
だとすると納得いく。
ちょっと実験してみます。
0771デフォルトの名無しさんNGNG
マネージってなんだよ。
専門用語?それともカッコイイっぽいから使ってるだけ?
0772デフォルトの名無しさんNGNG
>>771
カッコイイから使ってみました。
0773デフォルトの名無しさんNGNG
>>770
動的生成されることを前提にしてるからprotectedにしたほうが安全だと想ったんじゃない。
IMPLEMENT_DYNCREATEとかCRuntimeClassあたりで。
0774デフォルトの名無しさんNGNG
ビットマップリソースをスタティックテキストに表示する方法を教えてください
0775 ◆HsptrkZmYk NGNG
>774
vrubyでググろう
0776デフォルトの名無しさんNGNG
カッコイイだけでカタカナ語使うのは馬鹿だと思われるよ。
「コイツ、話を誤魔化してる。もしくは何も判ってない。」と思われるだけ。
0777デフォルトの名無しさんNGNG
>>776
はい。誤魔化していました。
素直にわかりませんって書けばよかったです。

>>773
そうみたいです。
でも、デストラクタはどうしてなんですかね?
破棄するときどうなるのだろう?
0778デフォルトの名無しさんNGNG
おい、CWinThreadの質問してるヤシ、ドキュメントちゃんと読んでるのか?
new/deleteで生成すると書いてあったか?
0779デフォルトの名無しさんNGNG
ピクチャコントロールでビットマップを透過したいのですがどうすればいいですか?
0780デフォルトの名無しさんNGNG
動的生成=newじゃねーよ、そもそもデストラクタがprivateならユーザーが明示的にインスタンスを作成できない。
0781デフォルトの名無しさんNGNG
もちろん内部じゃnewとかしてるけど、そういうどうでもいいところに突っ込むなよ。
0782デフォルトの名無しさんNGNG
>>779
マスクパターン
0783デフォルトの名無しさんNGNG
>>778
スレッドを自殺させたあとにメモリーをチェックするとリークしていると報告されるのですが、
これは何故なんでしょう?
0784デフォルトの名無しさんNGNG
自殺のさせ方が悪かったのだろう。
TerminateThreadを使ったのか?
0785デフォルトの名無しさんNGNG
>>784
PostQuitMessageしてみました。
0786デフォルトの名無しさんNGNG
>>785
だれがどのタイミングで?
0787デフォルトの名無しさんNGNG
ナンーカ
根本的に間違っているような母艦
0788デフォルトの名無しさんNGNG
ボタン1とボタン2で同じハンドラ関数を呼び出してるんですが、どちらが呼び出したか判定する方法ありませんか?
0789デフォルトの名無しさんNGNG
GetCurrentMessage
0790デフォルトの名無しさんNGNG
>788
MFCよくわかんないけど (じゃあなぜこのスレにいるんだつーツッコミは禁止だ)
Win32APIレベルで考えると、ボタンを押されたら親ウィンドウに
WM_COMMAND をポストされるよな。BN_CLICKED と コントロールID と
ご丁寧にボタンのウィンドウハンドルまでつけて。
コントロールID やウィンドウハンドルで選別すればヨロシけれ。

もれ普段MFC使わずにナマで書いてるけど、いちいちコントロールID設定するの面倒なんで
ウィンドウハンドルで選別してるw
究極のDQNグラマとはもれのことよw
0791デフォルトの名無しさんNGNG
じゃあなぜこのスレにいるんだ
0792デフォルトの名無しさんNGNG
SDKでプログラムしていてもWindowsアプリっぽくするためには
MFCのトリックをパクったりするのが有効だからだろ。
0793デフォルトの名無しさんNGNG
まぁDQNは放置しておいて、ON_COMMAND_RANGE使え。
0794デフォルトの名無しさんNGNG
>>788
っていうか、マウス操作している人が一番良く知っているはずだが。
0795デフォルトの名無しさんNGNG
ダイアログベースでメニューを追加しました
あるメニューの項目で、UPDATE_COMMAND_UIメッセージの
イベントハンドラを(CxxxDlgクラスへ)追加し、その関数内で、
   pCmdUI->SetCheck(1);
と記述したのですが、チェックが付いてくれません
同じ事をシングルドキュメントでやると、上手くいくのですが・・・

ダイアログベースでメニューのチェックを制御するには
なにかコツがあるのでしょうか?




0796デフォルトの名無しさんNGNG
FAQキタ━━━(゚∀゚)━━━ !!
0797デフォルトの名無しさんNGNG
>>786
スレッド自身が任意のタイミングで。
0798740NGNG
原因の方は判明しました
FLEXGRIDを使用していたのですが、OCXファイルはあったのですがClassIDの方に登録
されて居なかったので、その段階でダイアログが開かずに落ちていました。
このClassIDってどのようにして登録すればよいのでしょうか

>>742
ありがとうございます
0799デフォルトの名無しさんNGNG
regsvr32
0800デフォルトの名無しさんNGNG
エディットコントロールで'\n'が適用されないのですがどうすればいいですか?
0801デフォルトの名無しさんNGNG
>>800
"\r\n"
0802795NGNG
環境はVC.NET 2003です
0803デフォルトの名無しさんNGNG
FAQマタキタ━━━(゚∀゚)━━━ !!
0804デフォルトの名無しさんNGNG
>>803
fuck you 股来た 目がビーチクでターンエーがオメコで括弧が足
0805795NGNG
>>803
私のことでしょうか?FAQとは?
0806デフォルトの名無しさんNGNG
ターンエーと呼ぶ馬鹿ハケン
0807デフォルトの名無しさんNGNG
ユーザ定義のメッセージを処理するのはCWnd::WindowProcとCWnd::DefWindowProcと
どちらでやったらより良いですか?またなぜ、そのほうがより良いといえるのですか?
0808デフォルトの名無しさんNGNG
どっちでもない
ON_REGISTERED_MESSAGE
もしくは
ON_MESSAGE
ハンドラで
0809デフォルトの名無しさんNGNG
>>800
ソフトラインブレーク で調べてみんさい
0810デフォルトの名無しさんNGNG
MFC三日目の初心者です、
いくらでもたたいてくれて結構です
画像を加工して保存がしたいのですが
HDCで保持するのとDIBデータを扱う2つがあるのですが
この2つについての、違いをご教授願いたいのです。
よろしくお願いします
0811デフォルトの名無しさんNGNG
>>810
推奨スレ
http://pc5.2ch.net/test/read.cgi/tech/1092524669/

・・・とは言っても、おそらく API と MFC の境もわからんだろうな。
こっちとあっちで、ちゃんと同じ自己紹介しとくといい。
0812デフォルトの名無しさんNGNG
モードレスダイアログ上にテキストボックスを配置して、
テキストに変更がある度に処理を行いたいのです。

ClassWizard(VisualC++ 6.0)を使用して、
CEdit型の変数、m_EditXをエディットボックスに対応させ、
EN_CHANGEメッセージのハンドラを作成しました。

void CSelectDlg::OnChangeEditbox()
{
  char buffer[5];

  m_EditX.GetLine(0, buffer, 4);

  ・
  ・
}

実行してみると、ダイアログがオープンした途端、
CEdit::GetLine内部でAssertionが発生して止まってしまいます。
どうやらエディットボックスが有効になる前(?)に
EN_CHANGEメッセージが送られてくるようです。

http://www.flounder.com/getdlgitem.htm#Uninitialized%20Controls
これを避けるために、OnInitDialogが実行済みかどうかを
格納しておくBOOL変数を持たせる方法というのがあるそうです。

ただ、こういった処理をしたい場合、これが定番な書き方なのでしょうか?
もうちょっとスマートなやり方がありそうな気がするのですが。。
0813812NGNG
あ、テキストボックスにメッセージが送られるのは、
スピンボックスから自動関連付けしているのが原因っぽいです。
関連付けを外したらダイアログは普通に表示されました。
0814デフォルトの名無しさんNGNG
>>812
スマートかどうかは知らないけど、とりあえずピンポイントその状況だけ避けるなら
if (::IsWindow(m_EditX..m_hWnd)) とかで判定する手もあると思う。
0815812NGNG
>>814
正直、それを考えてましたw
Assertionがその条件で発生してるんですが、
IsWindowの意味自体があやふやで自信がありませんでした。

メンバ変数を増やすよりはマシってことで、それでやらせていただきます。
0816デフォルトの名無しさんNGNG
どなたか795お願いします
0817デフォルトの名無しさんNGNG
>>795>>816
wndfrm.cpp にあるように、メニューの UPDATE_COMMAND_UI を処理するのは CFrameWnd クラス。
( CFrameWnd::OnInitMenuPopup を参照 )
よってダイアログベースの場合自分で似たような処理を書くか、単純に自力でメニューアイテムをSetCheck すること。

あるいは単に SDI で FormView 使うって手もある。たぶんこっちのほうが簡単。
0818デフォルトの名無しさんNGNG
OnInitMenuPopupでチェックするのがFAQ。
0819デフォルトの名無しさんNGNG
>>814
MFC的には if (m_EditX.GetSafeHwnd()) だな。
0820デフォルトの名無しさんNGNG
>>819
GetSafeHwndはポインタ経由で this が 0 のときにもアクセス違反にならないというだけの関数。
(要は return this ? this->m_hWnd : 0 ってな実装)。
ポインタでもないメンバ変数に使うのは無意味。

m_hWnd って直中身見るのは行儀悪くてイヤーンっていう非MFC人なら常時使ってもいいかもね。
0821デフォルトの名無しさんNGNG
operator HWND
ってあまり使ってませんかそうですか
0822795NGNG
>>816
えっと、どなたか存じませんが、ありがとう。

>>817
FormView使った方が、早そうですね。
参考になりました。
ありがとうございます。
0823デフォルトの名無しさんNGNG
MFCが無くなっちゃうって本当ですか?
0824デフォルトの名無しさんNGNG
>>823
なくなりません。
MFCがテンプレートになる可能性があるだけでしょう。
その場合、ClassWizardなどのIDE機能の変更があると思います。
0825デフォルトの名無しさんNGNG
いや、すぐにとは言わんがMFCもATLもなくなるだろ。
0826デフォルトの名無しさんNGNG
そりゃタイムスパンのレベルと何をもって「なくなる」とするかによるだろうけど
少なくとも現行OS(winXP以下)が現役で動いているうちは確実に使えるだろ
0827デフォルトの名無しさんNGNG
Longhornでも確実に使えると思うね。
MSがOSを出し続ける限り使えると思う。

それ以前に、MSにとってMFC/ATLをなくすメリットは何かあるの?
0828デフォルトの名無しさんNGNG
新しいライブラリを売る。
0829デフォルトの名無しさんNGNG
>>828
こんどこそ驚きのプゲラ仕様がないライブラリを求む
0830デフォルトの名無しさんNGNG
プゲラですめばいいけどね。大抵真っ青。
0831デフォルトの名無しさんNGNG
リストビューの表示を高速化する方法について教えてください。

大量(最大1万件)のデータをリストビューに表示させるのですが、一番下のアイテムを選択表示させデータの流れる様子を、画面に表示させたいのです。

SetRedrawを用いてInsertItemを行っています。1万件を超えるとDeleteItemを用いて先頭のアイテムを削除しています。現在表示速度が遅いのかデータが溜まっています。さらに画面がちらついてしまいます。

画面のちらつきはOnEraseBkgndを用いて、描画を省いているのですが上手く画面のちらつきがおさまりません。

良い方があれば教えてください。
0832デフォルトの名無しさんNGNG
>>831
リストビューで表示が間に合わないような頻度で書き換わるデータを本当にリストビューで
1万件もためて表示する意味があるのかという疑問が・・・。
0833デフォルトの名無しさんNGNG
>>831
仮想リストビューを使いなさい。
0834デフォルトの名無しさんNGNG
>>831
大量データを扱う場合は仮想リストコントロールを使うというのが定石だけど、
「流れる様子」とか言ってあんまり頻繁に更新する場合は頻度によって多少
のちらつきが出るかも。
0835デフォルトの名無しさんNGNG
仮想リストビューなんて要るの?
コモンのリストコントロールなら必要ないと思うけど。
描画に必要なインデックス情報しか処理要求してこないようにできたはず。
MFCの場合は知らないけど。
0836835NGNG
>>835で書いたヤツだと、自分で能動的にリストを更新したい場合は、
WM_PAINTを送るだけでいいから楽だよ。

LVN_GETDISPINFOとか、LPSTR_TEXTCALLBACKでググって見れば?
MFCでも逝けるはず。試してないけど。
0837835NGNG
修正します。

WM_PAINT送信での更新だと、InvalidateRect()もあらかじめ必要かも。
0838デフォルトの名無しさんNGNG
普通に(仮想でなく)ListCtrlで1万行出してましたが。
尤も、ログ機能なんで更新は最高でも1秒に一回程度。
有り得ない上限として1万行の仕様になり、ランテストした次第。
0839デフォルトの名無しさんNGNG
リストコントロールは、表示よりもむしろアイテムの挿入・削除に時間がかかるので、
あらかじめ上限数のアイテムを作っておいて、無効アイテムに空文字を返せば、
動的にアイテム数が増減しても高速処理できる。
ただし、見た目は件数が数件でもスクロールバーが出てしまうけど。
0840デフォルトの名無しさんNGNG
つーかなぜそこまで泥臭いことをして仮想リストコントロールを避けるのか分からない・・・
0841デフォルトの名無しさんNGNG
>>831
ttp://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200409/04090044.txt
0842デフォルトの名無しさんNGNG
>>835
> 仮想リストビューなんて要るの?
> コモンのリストコントロールなら必要ないと思うけど。

コモンのリストコントロールを使わずに仮想リストビューを使うって、どういうこと?
0843デフォルトの名無しさんNGNG
MFCのダイアログベースのプログラムを作ってみました。
プログラム自体は動くのですが、Enterを押すと勝手に終了してしまいます。
なぜがご存知の方、教えてください<m(__)m>
0844デフォルトの名無しさんNGNG
>>843
ダイアログクラスのOnOk()をオーバーライドし
CDialog::OnOK();
をコメントアウトして下さい
0845デフォルトの名無しさんNGNG
>>843
聞かれる前に追加。
Escキーでも終了してしまうので、
OnCancel()も>844同様に呼び出されないようにすべし。
0846デフォルトの名無しさんNGNG
それは対処法の先回りであり、843の疑問に対する答えにはなっていないな。
0847デフォルトの名無しさんNGNG
しかも終了手段がなくなる罠。
0848デフォルトの名無しさんNGNG
CHtmlViewを利用しているプログラムを作成しております。
Proxyの動的な変更方法が判りません。

Sleipnirの様にプログラム中から変更を行いたいと思っております。
参考になる文献などでも良いのでご存じの方ご教授お願い致します。
0849デフォルトの名無しさんNGNG
>>843
ttp://www.athomejp.com/goldfish/mfc/dialog/nonesc.asp
0850デフォルトの名無しさんNGNG
>>847
なんで? いつでも EndDialog できるやん。
0851デフォルトの名無しさんNGNG
何も知らない奴に>>844-855を教えただけじゃ終了できなくなるって意味だろ
0852デフォルトの名無しさんNGNG
>>844-845を教えただけじゃ、だ
0853デフォルトの名無しさんNGNG
>>852
844は終了できなくならんだろ。
0854デフォルトの名無しさんNGNG
>>851
そんなん言い出すなら、タスクリストがあるやん
0855デフォルトの名無しさんNGNG
>>853
だから>>844-845の二つともやらせたら、だってば。
0856デフォルトの名無しさんNGNG
>>854
で、「タスクリストからしか終了できません。どうすればいいですか。」って質問が来そうだなって話だ
0857デフォルトの名無しさんNGNG
>>856
そんなら来てからでええやん
来ないかも知れないし
0858デフォルトの名無しさんNGNG
タスクリストってなんんですか?
0859デフォルトの名無しさんNGNG
いや、そんなくだらない質問来て欲しくないから
予防線として>>845は同時にEndDialogも書いた方がいいという主張をしたかったんだろう。>>847は。
0860デフォルトの名無しさんNGNG
で、>>843の質問には誰が答えるんですか?
0861デフォルトの名無しさんNGNG
直後に答え出てますやん
0862なぜが?NGNG
なぜがご存知の方、教えてください
なぜがご存知の方、教えてください
なぜがご存知の方、教えてください

 
0863デフォルトの名無しさんNGNG
Q. ダイアログがEnterキーで終了してしまうんです。なぜですか?
A. OnOK()をコメントアウトで終了しなくなります。

すごい回答だ。つーか、こんな回答でWindowsのダイアログの作法を無視しまくる
変なアプリが増えないことを祈る。
0864デフォルトの名無しさんNGNG
>>860
>>849
0865デフォルトの名無しさんNGNG
>>863
模範回答よろしく
0866デフォルトの名無しさんNGNG
863じゃないけど、ここにやり方書いてあったと思ったけど、サイトが壊れてるのか開けない。
ダイアログボックスをリターンキーやエスケープキーで閉じないようにするには?
http://web.archive.org/web/20030415014307/techtips.belution.com/ja/vc/
0867デフォルトの名無しさんNGNG
エスケープキーでキャンセルできないダイアログボックスは 【 う ざ い 】
0868デフォルトの名無しさんNGNG
OKで閉じないダイアログもうざいけどね。
0869デフォルトの名無しさんNGNG
OKじゃないや、enterだ。
0870デフォルトの名無しさんNGNG
いろいろやり方あるけど、MFCならこの辺じゃないか?
void CxxxDlg::OnOK()
void CxxxDlg::OnCancel()
void CxxxDlg::OnClose()
0871デフォルトの名無しさんNGNG
頼むから話の流れを読んでから書き込んでくれ。
0872デフォルトの名無しさんNGNG
しかも終了手段がなくなる罠。
0873デフォルトの名無しさんNGNG
キャンセルを押してもこの話題が終わらないのですが、どうすればいいでしょうか。
0874デフォルトの名無しさんNGNG
>>873
なんで? いつでも EndDialog できるやん。
0875デフォルトの名無しさんNGNG
thisThread->EndDialog('終了');
0876デフォルトの名無しさんNGNG
error(875) : no matching EndDialog(const char*) in CthisThread
0877デフォルトの名無しさんNGNG
そんなエラーが出るわけねえだろうがクソ野郎
0878デフォルトの名無しさんNGNG
843です。ご回答いただきありがとうございます<m(__)m>
私の理解では、
ESCやENTERでプログラムが終了するのはダイアログベースの仕様であり、
終了させるためには、OnCancel()、OnOK()をオーバーライドすればよい。

実際にやってみたところ、ESCやEnterでは終了せず、右上のバツでは終了できました。
ありがとうございました!!

しかしながらEnterでプログラムが終了する仕様は問題ありですね、、、
0879デフォルトの名無しさんNGNG
>>しかしながらEnterでプログラムが終了する仕様は問題ありですね、、、

んなこたあない。
ダイアログがどうゆうものか、もちっと勉強してくれ。
0880デフォルトの名無しさんNGNG
ところが世の中にはenterでダイアログが終わるとバグ扱いになる所も。。
0881デフォルトの名無しさんNGNG
うちは「仕様です」で押し切るな。
0882デフォルトの名無しさんNGNG
ダイアログクラスをベースにして、ダイアログではないプログラムを作る。
ダイアログクラスを使わないで、ダイアログを作る。
0883デフォルトの名無しさんNGNG
ダイアログクラスをベースにして、ダイアログではないプログラムを作る。
→Enterでプログラムが終了するのは好ましくない。
ダイアログクラスを使わないで、ダイアログを作る。
→Enterでプログラムが終了しないのは好ましくない。
0884デフォルトの名無しさんNGNG
OKボタンに相当するものがあってボタンがそれだけならEnterでOnOKを受けて
終了するのは自然な動作だが、ダイアログ・ベースでもそんな簡単なものばかり
じゃないからね。ものに合わせて変えるのは当然だろ。
0885デフォルトの名無しさんNGNG
ダイアログが閉じた後、さらに別のGUI操作が続く場合は、Enterクローズは便利だけど、
ダイアログが閉じて、アプリ終了した場合やGUI操作がない場合は、Enterクローズは不安感に襲われる。
0886デフォルトの名無しさんNGNG
>>863
ダイアログの作法?
ダイアログを作ってるんじゃなく、
ダイアログを"ベース"にアプリを作っています。
0887デフォルトの名無しさんNGNG
質問させてください。
CSocketで通信するプログラムを作ってるのですが、Connectで止まってしまいます。
動作試験中なのでサーバ、クライアントともに同じマシンであり、
"127.0.0.1"にコネクトするようにしています。

サーバ:Create(1500) → Listen() → Accept(socket) ここで止まる
クライアント:Create() → Connect("127.0.0.1", 1500) ここで止まる
各CreateとListenが成功しているのは戻り値で確認しています。

不可思議なのは、別のマシンではちゃんと動くことです。
自分のマシン:Win XP Pro(SP2当ててない),
       ファイアウォール・アンチウィルス停止中
別のマシン:Win 2000 Pro

どんな原因が考えられるでしょうか。(ポート番号が良くないとか?)
0888デフォルトの名無しさんNGNG
>>887
127.0.0.1がちゃんと解決されているか確認。
netstat /an でポート番号が重複してないか確認。
0889デフォルトの名無しさんNGNG
ダイアログアプリケーションでAfxMessageBox()などのモーダルダイアログが表示されているときに
別のアプリケーションからPostMessage()されると、そのメッセージは破棄されてしまうのですか?

どうも拾えないメッセージがあってそれが原因かなと考えているのですが・・・
0890デフォルトの名無しさんNGNG
XP自信もファイヤーウォール持ってるけど関係あるかね?
0891デフォルトの名無しさんNGNG
>>887
どうでも良いけどテストで使うにしろ1500ってポートはあんまり使わないところ
とりあえず5000オーバーの空いてるところとか使っとけよ
0892デフォルトの名無しさんNGNG
みなさんありがとうございます。

>>888
127.0.0.1が解決できているかどうかの確認ですが、
とりあえずpingは返ってくるようです(他に確認方法ってありますか?)。
またnetstat /anで確認したのですが、特にかぶっているポートはありませんでした。

>>890
OSのファイヤーウォールの項目もチェックしてみましたが、
どの接続にもファイヤーウォールのチェックは入っていませんでした。

>>891
そうします。Winがどのあたりのポートを使っているか
よく知らなかったもので。
0893デフォルトの名無しさんNGNG
telnet 127.0.0.1 1500
0894デフォルトの名無しさんNGNG
>>893
接続中: 127.0.0.1...ホストへ接続できませんでした。 ポート番号 1500: 接続に失敗し
ました

となりました。これは解決ができていないのでしょうか?
ためしにnetstat /anで出てきたLISTENING中のポートに
telnetしてみても同じ結果になりました。
0895デフォルトの名無しさんNGNG
>>894
そのリスニング・ポートはちゃんと0.0.0.0か127.0.0.1にバインドされてるの?

システム・サービスの場合、リストに出てても接続を受けないものもあるから
ちゃんと動く何かの簡易サーバ-クライアント・ソフトを持ってきて実験して
みたら?

それでもダメなら接続をブロックするファイアウォールか何かが動いてる
そのシステム固有の問題ってはっきりするから。
0896デフォルトの名無しさんNGNG
何故、1500?
もし他のポートで試せるのなら試すべき。
0897デフォルトの名無しさんNGNG
XPならファイアーウォールの設定をしないとダメなのでは?
>>892を見るとテストするポートの設定をしてないように思える。
0898デフォルトの名無しさんNGNG
>>889
破棄されない。
MessageBox APIの中でメッセージループが回ってるから。
0899デフォルトの名無しさんNGNG
>>895-897
ご回答ありがとうございます。
>>895さんのおっしゃる通り、アンインストールしたと思っていた
ファイヤーウォール(Zone Alarm)が残っていたようです。
アンインストールしたら正常に接続できました。
言い訳をさせていただくと、以前はフィルタ状況のモニターがポップアップで
表示されており、現在は出現しないのでアンインストールしたと思い込んでいました。
(思い込みは良くない・・・)

休日にみなさんの貴重な時間を割いていただいてありがとうございます。
問題の特定の仕方や、問題になりそうな部分の勉強になりました。
今後も精進します。
0900デフォルトの名無しさんNGNG
ドッキングツールバーという仕組みは、ReBarのようなものを自前で実装しているという理解でいいですか?
0901デフォルトの名無しさんNGNG
良く分からん表現だな
0902デフォルトの名無しさんNGNG
特に問題の無かったアプリのダイアログにボタンを追加したんですが、
そのボタンにクラスウィザードを使おうとしたところ、

 ソースファイル(C:\〜\TestDlg.h, C:\〜\TestDlg.cpp)の
 クラス"CTestDlg"は重複する挿入ブロックが存在します。

というメッセージが出てクラスウィザードが使えなくなってしまったのですが
どうやったら直りますか?環境はXP(SP1)、VC6SP6です。

いったんVCを終了してncb, opt, clw ファイルを削除した後にもう一度
試してみたんですがやはり同じ症状です。
0903902NGNG
すんません。解決しますた。

ダイアログベースでデストラクタが無いので手動で追加したんですが
それを消してから上記の3ファイルを削除・再構築したところ直りました。
0904デフォルトの名無しさんNGNG
宿題に困っています。
お分かりの方、いらっしゃいましたら、よろしくお願いします。

1.iniファイルで指定されたフォルダにあるファイル名(例:abbccc)を取得
2.ファイル名を分解(例:a bb ccc)
3.msdnの行にadoを使ってインサートする(例:a bb cccとフィールドを分けて)

0905デフォルトの名無しさんNGNG
>>904
スレ治外。
0906デフォルトの名無しさんNGNG
まあ、もしかしたらスレ違いじゃ無いのかもしれないけど、
msdnにadoでインサートするのはMFCじゃ無くても無理だろうなあと。
0907デフォルトの名無しさんNGNG
ClassViewで右クリックを使ってクラスにメンバ関数を追加するとき、
デフォルトの引数を設定して、一番最後の引数の型をLPCTSTRにして
デフォルト値=NULL にすると宣言と定義が違うという旨のダイアログが
出て実際に定義の部分の引数部分が削られてしまうのですが、これって
どういうことなんでしょうか?

手動で直すとClassViewの該当関数をダブルクリックしても、ソースの
該当関数部分にジャンプしなくなって「インプリメンテーションが見つからない」
なんて警告されます。

class CTest{
  CTest();
  ~CTest();
  
  BOOL SetData(DWORD dwData=0, LPCTSTR pStrName=NULL);  ←コレ
protected:
  DWORD m_dwData;
  CString m_strName;
};

BOOL CTest::SetData(DWORD dwData)      ←宣言と異なる
{
  m_dwData=dwData;
  if(pStrName==NULL)
    m_strName="";
  else
    m_strName=pStrName;
  return TRUE;
}
0908デフォルトの名無しさんNGNG
>>907
バージョンくらい書こうや。
0909デフォルトの名無しさんNGNG
>>908
すみません。VCのですよね。
VisualC++Ver6、サービスパックもVer6です。

ちなみにconst char * に置き換えると直るには直るのですが
これ(宣言と定義で違うようにすること)は一体どういう意図なのかがわからないです
0910デフォルトの名無しさんNGNG
バグかなぁ?
VC.NETじゃちゃんと同じになるんだけど・・・
0911デフォルトの名無しさんNGNG
>>907
ウィザードで作った後、手作業でデフォルト引数書くとかするしかないんじゃないかなぁ。
デフォルト引数のある関数にジャンプしないのは俺もよくある。
近くの関数にジャンプしてからスクロール…っていつもしてる。
こういう仕様なんだとあきらめてるよ。
0912デフォルトの名無しさんNGNG
>>909
同じ環境でやってみたけど、CLASS VIEWがおかしいみたい。
コンパイルは通る。
0913デフォルトの名無しさんNGNG
クラスビューは、あくまで作業の参考・手助け。
見た目が破損しててもコンパイル・ビルド作業への影響は一切ない。
0914907NGNG
>>910-913
意味は分かりませんがやっぱり仕様ですかねえ。
とりあえずUNICODEは使わないのでconst char *
でやっときます
0915デフォルトの名無しさんNGNG
CStringの中のTabSpaceの見分け方を教えて下さい。
削除したくて、Trimで色々やってみたのですが、うまいこといきません、
教えてエロイ人。
0916915NGNG
CString::Remove( '\t' );
で、解決しました・・・。
Trimに拘った、私が悪かったみたいです。
ご迷惑おかけしました〜。
0917デフォルトの名無しさんNGNG
VC6だったら、CString::Remove はバグあるから気をつけてね
0918デフォルトの名無しさんNGNG
どういうバグ?
0919デフォルトの名無しさんNGNG
>>918
2バイト文字が考慮されないっていうやつだろ、多分。
0920デフォルトの名無しさんNGNG
流れを壊すようですいません。
MFCはじめたばかりの初心者です。
質問ですが、ウインドウの背景を画像ファイルとして保存するにはどうすればいいのでしょうか。
いろいろ調べたのですが結局分かりませんでした。
環境はこのとおりです
OS:WindowsXP SP1
VC++.NET 2003

お願いします。どなたか教えてください。
0921デフォルトの名無しさんNGNG
>>920
読み出しなら ::LoadImage でできるが
書き込みのサポートはないから、思いっきり自力で書くことになる。

http://pc5.2ch.net/test/read.cgi/tech/1092524669/883-
0922デフォルトの名無しさんNGNG
>>920
CImageにアタッチすれば、CImage::Save()で保存出来るよ。
今ホットなGDI+を使うことになるけど。
0923デフォルトの名無しさんNGNG
>>921-922
ありがとうございました m(_ _)m
0924デフォルトの名無しさんNGNG
MFC ActiveX Controll WizardでActiveXコントロールを作っています.
作成したコントロールはVBでFormなどに貼り付けて使う予定です.
コントロールは実行時に他のDLLやファイルなどを読み込む必要があり,
ターゲットとなるexeのカレントパスを取得してファイルなどを読み込む処理を
コントロールのクラスのOnCreateメソッド(?)に書きました.
しかし,OnCreateではVBなどでコントロールをFormに貼り付けた時点で
実行されてしまうため,実行時のexeのパスを取得する部分を利用して
ファイルなどを読み込む処理でエラーが起きてしまいます.
プログラムが実行されるときに
一度だけ処理されるメソッドやイベントはあるば教えて頂きたいのですが.

環境 VC6.0 VB6.0 WinXP

0925デフォルトの名無しさんNGNG
>>924
DllMain()でやればいいんじゃないの。
0926924NGNG
>>925
なんか,あまり一般的では無さそうですね>DLLMain
「DLLmain OCX」でぐぐってみましたが,50件も出てきませんでした.
0927デフォルトの名無しさんNGNG
>>926 (;´Д`)・・・
0928デフォルトの名無しさんNGNG
mfc-mlで同じ質問・・・
0929デフォルトの名無しさんNGNG
デバッグ版とリリース版ってメモリ領域の確保(解放)の仕方が違うんですかね?

new演算子で確保したメモリ領域を解放する処理は明示的に行っているんですが、
デバッグ版⇒CWinApp::Exitinstanceが実行される前に(明示的記述したタイミングで)、
      メモリ解放処理が完了する。
リリース版⇒CWinApp::Exitinstanceが実行された後に、メモリ解放処理が完了する。
上記のような動きをしているみたいなんです。

メモリ解放処理後に、終了コードを各プロセスを管理しているプロセスに通知しているため
リリース版では管理プロセスが終了コードを受信した時にも、
対象のプロセスが動き続けていることになってしまいます。

こんな現象に関してご存知の方いらっしゃいましたらぜひご教授をお願いします。
0930デフォルトの名無しさんNGNG
パス
0931デフォルトの名無しさんNGNG
>>929
ソース読んでみれば?
0932デフォルトの名無しさんNGNG
>>929
デバッグ版 DEBUG_NEW を定義せず
リリース版 最適化全てオフ
でテストしてみそ
0933デフォルトの名無しさんNGNG
PostMessage()でメッセージを順番に送るとき、受け取る側で順番が入れ替わったり
する事はありますか?
0934デフォルトの名無しさんNGNG
キューなんだからそんなことないはず。
0935デフォルトの名無しさんNGNG
>>933
あるらしい

>>934
メッセージにも優先順位があるらしく、マウスイベントが
他のイベントより優先される場合もあるらしいよ
0936デフォルトの名無しさんNGNG
>>935
マウスイベントはメッセージキューを通らないで直接ウィンドウプロシージャへ行くメッセージじゃないか?
0937デフォルトの名無しさんNGNG
>>936
そうかも
「PostMessageでは試したことないけど」って言うの忘れた
0938933NGNG
どもです。
同じ系統のメッセージの順番のみが問題ですんで、他のメッセージの割り込みは問題にならないです。
とりあえず大丈夫なものとしてやってみます
0939デフォルトの名無しさんNGNG
>>936
へ?
0940デフォルトの名無しさんNGNG
BITMAPINFOに256カラーのビットマップ、256色のグレースケールのパレットを用意しました。
このBITMAPINFOとビットマップの高さが増すにつれパレット番号を増加させるデータをもちいて
CreateDIBitmapにセットしてグラデーションのビットマップを作りました。(作ったつもり。)

これをメモリデバイスコンテキストでSelectObjectしてからディスプレイ(24bit)のDCにBitBltしたのですが、
この場合256カラー(パレットあり)を変換して24bitカラーのビットマップになってくれるとおもったのですが
どうもパレットデータはシステム内部のものをつかって描画してるっぽいんですがなぜですか?
そういうものですか?
0941デフォルトの名無しさんNGNG
「つもり」の部分が間違っていると思われ。
0942デフォルトの名無しさんNGNG
ビットマップの中のDLLを呼び出したいんですが、

HINSTANCE hInst;
hInst = LoadLibrary("Graphics.dll");

HBITMAP hBitmap;
hBitmap = LoadBitmap(hInst, "IDB_BITMAP1");

とやっても、hBitmap == NULLになってしまってビットマップを読み込めません。
僕のどこが間違ってるんでしょうか。
0943デフォルトの名無しさんNGNG
dllはMFC用のやつですハイ
0944デフォルトの名無しさんNGNG
>>942
全体的に間違ってると思います。1行目とか。
その DLL には本当に "IDB_BITMAP1" というビットマップが入ってますか?
MAKEINTRESOURCE(IDB_BITMAP)の間違いではないのですか?
0945デフォルトの名無しさんNGNG
>>944
1行目書きなおしたら変になってしまいました
自分で作ったDLLなんで IDB_BITMAP1 が入ってるのは間違いないはずなんですが、どうもそれだと読みこめなかったみたいで、
MAKEINTRESOURCE(1000);
と直接リソースIDで指定してもう一度やってみたら読み込めました。
なんでこれだとできるのか分かりませんが、とりあえず解決したみたいです。ありがとうございました。
0946デフォルトの名無しさんNGNG
>なんでこれだとできるのか分かりませんが

それがわかるまで先に進むな
一歩たりとも
0947デフォルトの名無しさんNGNG
>>9
MFCなんか嫌いだぁ

>>933
キューの中では順序通りでも PeekMessage で優先して取り出せるでしょ
DispatchMessageが中で何してるかは知るか。

>>940
パレットは別に CreatePaletteとSelectObjectでセットするんだったような
GDI+への対応はいつになるんだ?

>>945
まず無理だろうが、Graphics.dllのソースの中にある resource.h をインクルードしてみるといい。
これがMFCというやつだ。
0948デフォルトの名無しさんNGNG
>>947 初心者のかたは、回答はお控え下さい。
0949デフォルトの名無しさんNGNG
>>945
断言していい。
入ってない。
そういうあいまいな認識でコード書くと周りに甚大な被害を及ぼすからやめてくれ。

>>947
引っ込め。
0950デフォルトの名無しさんNGNG
>>947
これほど的外れな回答も珍しいな。
0951デフォルトの名無しさんNGNG
ピクチャーボックスに表示されている画像を取り込んで保存しているのですが
どうも一回目は保存されなく2回目から保存されます。
いろいろと設定しているですがうまくいきません
どなたか教えてくださいませ
ソフト visualstadio 6.0
OS  win xp

ビットマップインフォを作成する
DDBを作成してウィンドウからビットマップをコピー
メモリ割り当ててビットマップからデータを取得
ビットマップファイルヘッダーを作成
データをファイルへセーブ の手順でやっています
hfile = CreateFile(fn,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);
WriteFile(hfile ,&bmfh,sizeof(bmfh),&tmp,NULL);
WriteFile(hfile,&pbmi->bmiHeader,sizeof(pbmi->bmiHeader),&tmp,NULL);
if(pbmi->bmiHeader.biBitCount <= 8)
{
WriteFile(hfile,pbmi->bmiColors,sizeof(COLORREF)*(1<<pbmi->bmiHeader.biBitCount),&tmp,NULL);
}
SetFilePointer(hfile,bmfh.bfOffBits,NULL,FILE_BEGIN);
WriteFile(hfile,pbits,pbmi->bmiHeader.biSizeImage,&tmp,NULL);
CloseHandle(hfile);
0952デフォルトの名無しさんNGNG
MFCをこれから勉強しようと思っていますが
オススメの書籍等あれば教えていただけませんでしょうか?
0953デフォルトの名無しさんNGNG
>>951
・1回目に保存処理が走っているのか確認
・各APIの戻り値を確認
0954デフォルトの名無しさんNGNG
>SetFilePointer(hfile,bmfh.bfOffBits,NULL,FILE_BEGIN);
これ?
0955デフォルトの名無しさんNGNG
>>952
VCそのものを全く知らん状態で始めるならとりあえず入門書として
林晴比古の本なんかを薦めてみるが、取っ掛かりだけ掴めれば
後は余程専門的な事をやらない限りはネットで調べた方が早いし
詳しい情報が載ってる。
0956デフォルトの名無しさん NGNG
MFCアプリウィザードで作ったダイアログについて。
CDialgを継承したクラスに
WaitForSingleObject()を使って
常に特定のイベントがシグナルか監視する
独立した関数を作りたいのですが
良い方法はありませんか?
良かったら教えてください。
0957デフォルトの名無しさんNGNG
スレッド。
0958デフォルトの名無しさんNGNG
>>951
関係ないけどFILE_SHARE_WRITEはやめといた方が・・・
0959デフォルトの名無しさんNGNG
>>952

>>955に同意。
ただし、MFC入門書は良書が多いので問題ないけど、
その後をどう進むかだね。
C++の専門書(入門書でなくSTLに触れていて、テンプレート関連が充実)
を読むのが良いかも。
0960デフォルトの名無しさんNGNG
質問

環境:WinNT、VC6.0
でMFC使ってる者です
BOCのFlexGrid使ってるんですが
これのツリービューを作っているんですが
状態の保持が上手く出来ません
ツリーのオブジェクトを削除したり置換したりすると
縮めたオブジェクトが展開されてしまいます
0961デフォルトの名無しさんNGNG
>>960
BOC(現GrapeCity)ならサポートが丁寧だから向こうに聞いたら?
Gridでなんでツリーなのかよく判らんが。
0962デフォルトの名無しさんNGNG
>>960
で、質問は何なの?
0963デフォルトの名無しさんNGNG
MFC用のDLLはVisual Basicからも呼び出せます
0964デフォルトの名無しさんNGNG
か?
0965デフォルトの名無しさんNGNG
どうも951です
現在2chブラウザ使えないの状況下なのでこうなってます
>>958さん
FILE_SHARE_WRITEはやめといたほうがいいといいますがそれはどういうこと
ですか?
>>954さん
一応命令は削除してみましたが変化は見られませんでした
>>953さん
APIはすべて確認したところすべて正常でした
自分の考えでは再描画系に問題があったのではないかと判断しております

みなさま、ご意見ありがとうございました。
0966デフォルトの名無しさんNGNG
タイヘン恐縮なのですがみなさまご教授ねがいと思います

ピクチャーボックスの枠を消去したいのですがネットで方法を
探しているのですが見つかりません
どなたかおしえてくださいませ
0967デフォルトの名無しさんNGNG
>>966
ビットマップスタイル
0968sageNGNG
ビットマップスタイル?
0969デフォルトの名無しさんNGNG
ビットマップTypeか
0970デフォルトの名無しさんNGNG
>>965
>FILE_SHARE_WRITEはやめといたほうがいいといいますがそれはどういうこと

denyじゃなくてshareだぞ。
複数の書き込みオープンを許すんだぞ。
0971デフォルトの名無しさんNGNG
WS_EX_CLIENTEDGE
0972デフォルトの名無しさんNGNG
>>966ピクチャーボックスじゃなくて CPictureHolder
0973デフォルトの名無しさんNGNG
CSplitterWndを動的分割ウィンドウで使う場合は
ネストって出来ないんでしょうか?
ネストした子側のウインドウサイズが0x0になっていて
うまく動作しませんでした。
親側のビューをDeleteView()やGetPane()->DestroyWindow()などで
削除してみたりしたんですが変わりませんでした。
よろしくお願いします。
0974デフォルトの名無しさんNGNG
こちらの方が適当と誘導されたので、再度質問させてください。

707 名前:デフォルトの名無しさん[sage] 投稿日:04/10/02 19:32:00
質問です。
メインのダイアログ(MainDlg)にタブコントロールを貼り付けて
PropertySheet(CPage3)を作成し、その上にRadioButton(IDC_RADIO1)を貼り付けました。

で、CPage3.hのメンバ変数に
public:
CButton *m_pButton1;
と書いて
CPage3.cppに
CPage3::CPage3()
: CPropertyPage(CPage3::IDD)
{
m_pButton1=(CButton*)GetDlgItem(IDC_RADIO1);

}
と書きました。
で、MainDlg.cppのOnInitDialog()
に、m_pPage3->m_pButton1->SetCheck(1);
と書きました。
ちなみにこの動作を入れなければ、タブコントロールもきちんと動いてますし、他のコントロールへの操作も出来てます。
しかしこれを入れると、実行時に不正な処理を行いました。 と言われます。
何故でしょうか?
VC++.NET2003でMFCを使ってます。
宜しくお願いします。

0975デフォルトの名無しさんNGNG
>>973
やったことあるので出来ると思います。
CSplitterWnd のソースだかどっかにうんこのようなASSERTが入ってた気がするので
オーバーライドとかで回避しないとデバッグ時に死ぬ。
0976デフォルトの名無しさんNGNG
すごい、簡単なことかもしれませんがあえてお聞きします
CString型 に改行文字を入れることは可能なのか
CString型 に改行文字を入れた状態でファイル書き込みWriteFileを
行った場合改行されるものなのですか?
自分はやってみたのですが無理でした
CString a="aiueo"+'\n';
すいませんが教えてください。
0977デフォルトの名無しさんNGNG
CString a="aiueo"+'\n';
↑なんじゃこりゃ

・・・ポインタと整数の足し算だからエラーも警告も出ないのか・・・。
0978デフォルトの名無しさんNGNG
>>976
可能。
Windowsでは改行を "\r\n" の2文字であらわしているので、
CString a="aiueo\r\n";
0979973NGNG
>>975
情報ありがとうございました。
さっそくやってみます。
0980デフォルトの名無しさんNGNG
>>978
バッファにいれとく限りにおいては、「\n」だけで良いんじゃないか?
テキストモードにしとけば、ファイルへの出力の時に内部処理で\r\nになる。
0981デフォルトの名無しさんNGNG
WriteFileにテキストモードなんかあったっけ?
0982デフォルトの名無しさんNGNG
>>978さんどもです
そのとおり実行できましたー
ありがとうございます
0983デフォルトの名無しさんNGNG
>>981
CStdioFile使う手はある。
0984デフォルトの名無しさんNGNG
またまた質問で申し訳ないのですが
CFileDialogを使って任意でファイルを保存するようにしているのですが
すでにあるファイルを、上書きしようとしたら警告がでません。
拡張子をつけた状態では警告文はでるのですがわざとファイル名から拡張子を
消してみると今度は警告がでません。おそらくファイル名の文字列が
違うので警告文がでないのは承知なのですが拡張子は同じはずなので
警告がでてほしいのですが、対処方法がわかりません、すいませんがご教授
お願いいたします
CFileDialog myDLG(FALSE,NULL,NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"ビットマップ(*.bmp)|*.bmp||");
if(myDLG.DoModal() != IDOK) return;
0985デフォルトの名無しさんNGNG
コモンダイアログ使っておきながら myDLG ですか?
0986デフォルトの名無しさんNGNG
>>985
いいからもう寝ろ。
0987デフォルトの名無しさんNGNG
>>974
コンストラクタではタイミング的に早すぎて、
GetDlgItem(IDC_RADIO1)が成功しないんだと思う。
OnInitDialog()内で行ってみては?

0988デフォルトの名無しさんNGNG
OFN_FILEMUSTEXIST
0989デフォルトの名無しさんNGNG
上書きしか許さないとは斬新なUIだな
0990デフォルトの名無しさんNGNG
OPENFILENAME構造体を直接指定する生のAPI使えばいいのに・・・。
GetOpenFileName()、GetSaveFileName()あたりを参照。

MFCのCFileDialogはAPI並に面倒くさいわりに得られるメリットが薄く、
ぶっちゃけ必要ないクラスのひとつ。
下位互換のための存在だと思って差し支えない。
そんなわけで素直にAPI使っとけ。
0991デフォルトの名無しさんNGNG
次スレまだ〜
0992デフォルトの名無しさんNGNG
まだかよ
0993デフォルトの名無しさんNGNG
まだだよ
0994デフォルトの名無しさんNGNG
質問です。
ダイアログベースのアプリにタブコントロールを配置して、PropertySheetを挿入してるのですが
途中でもう一度新しくPropertySheetのインスタンスを生成して、タブコントロールに挿入したいのですが
追加と言う形になってしまいます。
どうすれば全部破棄した後、挿入出来るのでしょうか?

宜しくお願いします。
0995デフォルトの名無しさんNGNG
>>994
無理
0996デフォルトの名無しさんNGNG
age
0997デフォルトの名無しさんNGNG
埋め
0998デフォルトの名無しさんNGNG
梅
0999デフォルトの名無しさんNGNG
梅尾
1000デフォルトの名無しさんNGNG
ヨン様
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。