■MFC相談室 mfc11.dll■
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG前スレ
■ 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デフォルトの名無しさん
NGNGZ!
0004デフォルトの名無しさん
NGNG>>972
Thanks!
これでOKザウンス!
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG本当です。
0008デフォルトの名無しさん
NGNGシニ
で命運尽きたと見るべきだろう
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG最初からMS提唱のプログラミング技術は信用していない。
0012デフォルトの名無しさん
NGNGUNIXのパクり
CORBAのパクリ
SmallTalkのパクリ
Javaのパクリ
オリジナルは??
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG.NETの開発環境やブラウザのSleipnirとかで使ってる
アイコンの背景の変わるツールバーってどうやって実装するんでしょう?
スタイル設定とかで駄目なん?
0017デフォルトの名無しさん
NGNGMFCを継承していじりたおす。
0018デフォルトの名無しさん
NGNG×ボタンでアプリケーションを終了させると、
「コード 20 (0x14) で終了しました。」
で、終了して、タスクバーから終了させると、
「コード 61536 (0xF060) で終了しました。」
と、表示されます。
0で終了していないので、どこかにエラーが潜んでいるのかと思うのですが、
どうやって調べたらよいでしょうか?
検索してもそれらしい情報がなくて、
ヘルプでも、0でなければエラーがあるって事しか書いてないので、
どうやったらいいのかと。。。
どなたか知ってる方お願いします。
0019デフォルトの名無しさん
NGNGEscキーで終了すると0x1bで、Enterキーで終了すると0x0dになるはずですが。
これはちっともエラーではございません。
0020本田
NGNGCORBA
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
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デフォルトの名無しさん
NGNGVCをインストールしたディレクトリ下のMFCってとこにソースがある。
その中をgrepしてみれば?
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGCWinAppの初期化コードの中
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デフォルトの名無しさん
NGNGMFCを使ったダイアログを
スタティックライブラリで実現できるんでしょうか?
DLLで出来るのはわかってるんですが。
820 名前:デフォルトの名無しさん[sage] 投稿日:04/06/27(日) 14:50
>>819
Prof 以上ならできる。
821 名前:デフォルトの名無しさん[sage] 投稿日:04/06/27(日) 15:21
>>820
リソースは
リンクするメイン側に置くのですか?
0028デフォルトの名無しさん
NGNG気になったのでちょっと調べてみたよ
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のように、外部ファイルドロップで起動した時、
ドロップしたファイル名を取得するにはどうすれば良いですか?
0030デフォルトの名無しさん
NGNGWizardが吐いたソースならCHogeApp::InitInsatance()の中に
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
ってコードあるでしょ。そのあたりで調べてみれば?
あと、__argcと__argvとか。
0031デフォルトの名無しさん
NGNG助かります!調べてみます!
0032デフォルトの名無しさん
NGNG文字列で受けるなら
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そこではエラーが出ていないのでは?
0036デフォルトの名無しさん
NGNG文字に色つけたりフォント変えたりリンク踏めるようにするのはどうすればいいんですか?
今はリッチエディットでやってるけど98とXPだとdllのバージョンが違うし
微妙に重かったり、選択の文字色反転がイヤだったりで、改造したいんですよ。
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNGcodeguruとかにヒントになるソースがあったはず
0039デフォルトの名無しさん
NGNGSetWindowLongでできなかったんですが…
0040デフォルトの名無しさん
NGNG実行することはできないのでしょうか?
自分が作ったExeのみで配布することはできないでしょうか?
0041デフォルトの名無しさん
NGNG1. ResetContent
2. スタイル付け替え
3. AddString
でもダメ?
すでにあるアイテムのソート/非ソートをスタイル変更で
切り替えてくれるような器用な造りにはなっていないと思う。
けど、これはAPIスレ用の話題だな。
>>40
MFCをスタティックリンクすれば。
0042デフォルトの名無しさん
NGNGVC6以前のVCでビルドしたものならDLLの心配はしなくていい
ほとんどのwin32環境でDLL持ってるのが当たり前になってるから
VC7以降なら注釈を付けてDLLのインストールが必要なことを書いておくか
同梱するかした方がいい
0043デフォルトの名無しさん
NGNGMFCのスタティックライブラリを使用にする
0045デフォルトの名無しさん
NGNGスタティック ライブラリで MFC を使用する
0046デフォルトの名無しさん
NGNGメニューの開くと同じ動作させるにはどうすればいいでしょうか?
0047デフォルトの名無しさん
NGNGCMenu
0048デフォルトの名無しさん
NGNG「開く」のメニュー項目と同じIDのボタンを
0049デフォルトの名無しさん
NGNGできました
ダイアログに開くからえたビットマップをダイアログのピクチャーボックス
に表示するにはどうすればいいのでしょう?
0050デフォルトの名無しさん
NGNG・それをダイアログから得たビットマップファイルの場合に応用する
0051デフォルトの名無しさん
NGNG>>42
>>43
>>45
ありがとうございます。
スタティックは知っていたのですが、
結局Exe以外にも添付しなきゃならないとか何とか・・・・
ってどこかのHPで書いてあって、
結局駄目なのか?と思ってたので。。
一応、どのWindowsでも動かないとまずいって言うので、
(95は除外してもよさそうなのですが)
困ってたんです。
環境はVC6なので、大丈夫かと思うのですが。
0052デフォルトの名無しさん
NGNG作ったexeを検証したところ
Win98 WinME Win2000 WinXP (by VirtualPC)
で動いてます
0053デフォルトの名無しさん
NGNGついでにランタイムライブラリもスタティックリンクにしとけよ
0054デフォルトの名無しさん
NGNGCXXXView.h 内で CXXXDoc.h を
CXXXDoc.h 内で CXXXView.h を
それぞれインクルードするとコンパイル出来ないのですが、そう言うものなのでしょうか?
インクルードする順番も一応変えてみたりしたのですが、無理でした。
この方法が無理ならば、DocとViewで相互に呼び出したいときはどうしたらいいのでしょうか?
0055デフォルトの名無しさん
NGNGCView::GetDocument()
CDocument::GetFirstViewPosition()
CDocument::GetNextView()
DocからViewは普通はポインタを使って直接呼び出すのではなく
CDocument::UpdateAllViews()でドキュメントの変更を通知する。
あとはCView::OnUpdate()で。
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGそれにコントロール変数を追加したいんですが
VC6の時は、グループ先頭を「グループ」にチェック入れて
int変数を追加できたんだけど
VC7.1だと先頭のGroupをtrueに設定して
コントロール変数を追加しようとすると
BOOLしか追加できないみたいなんです
intで追加できないんでしょうか?
0058デフォルトの名無しさん
NGNGちょい工夫すれば容易にできる話だが・・・
だが、そーゆーPGはやめておけ。
0059デフォルトの名無しさん
NGNGソースにハードコーディングしたら駄目らしく、
かといってストリングテーブルにいれたら???となってしまいます・・・
文字セットはUnicode文字セットを使用しているので、
エディットボックス間のコピー等は上手く行くのですが・・・
どなたかお知恵を貸して下さい
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGWinXPなんで、言語のあたりをいじると、ハングルIMEが使えます。
けど、OCNの翻訳サイトで単語訳してコピペする予定です
0062デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNG今AppWizard見てみたのだが、リソースに使用する
言語ってコンボがあるが、それには日本語、英語しか
ないからOSもVCもハングル版買わないといかんのでは?
0065デフォルトの名無しさん
NGNGMessageBox(NULL, a, L"韓国語", MB_OK);
少なくともこういうのは通るし動くんで、
・ソースはUTF-8とかでハングルで直接書く
・プリプロセッサとして、UTF-8なソースをShift_JISなソースに書き換える
(リテラルのユニバーサルキャラクタへの置き換え)物を作る
でなんとかなるんじゃ。リソースはどうにもなんないかもだけど。
006659
NGNGそこには「韓国語」っていうのもあるんですが、
コード生成時に何やらエラーが出て止まります。
やはり環境が揃ってないと無理なんでしょうかね・・・
レスくれた方、どうもありがとです。
もうちっとVC++で粘ってみます。
と、リロードしてみたら!
>>65
これは、素晴しい!
なんとかなりそうです。感激!
0067デフォルトの名無しさん
NGNGMSDNの「Unires サンプル : Unicode リソース ファイルの使用」
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcsample/html/vcconuniressampledemonstratesuseofunicoderesourcefiles.asp
は?
006859
NGNGサンクス!
国際化対応のサンプルがいろいろ参考になりました!
一度リソースファイルを外部エディタで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どなたか教えてください。
//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)を記述すると問題なく動作
します。理由がどうしてもわかりません。
007169
NGNG0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNGメンバ関数版じゃなければ表示されるんでない?<MessageBox()
AfxMessageBox()だっけ?
0074デフォルトの名無しさん
NGNGファイルの保存でユニコードで保存してやると
ちゃんと保存される。
0075デフォルトの名無しさん
NGNGほんとだね
これはなかなか興味深い
ちょっと調べてみるか
007675
NGNG何時までたってもウインドウが無効領域のままになる
なのでOnPaintの無限ループのような状態が起きている
これのせいで、MessageBoxがメッセージを受け取れないみたいだね
WM_PAINTのディフォルト処理を入れなきゃウインドウズプログラムはだめだってことで
007775
NGNGちゃんと書くと
WM_PAINTメッセージってシステムがこの領域は無効な領域(描画が必要な領域)
だと判断したから発生させるメッセージ(よく再描画するのにInvalidateを呼び出すが
これは、アプリ側で無理やり無効な領域にしているってこと)
このメッセージを受け取ったアプリ側は、適切な描画処理をするもしくは
ウインドウズディフォルトの処理に任せる
このとき使用されるAPIがBeginPaint EndPaint、MFCならCPaintDC
このAPIもしくはクラスを使用した場合、無効領域がクリアされるため
再び無効領域が出来るまでになるまでWM_PAINTが発生されることは無い
69の作ったプログラムでは、WM_PAINTメッセージのハンドラで何も処理をしない為
何時までたってもその領域が無効であるとシステム判断するのでWM_PAINTを繰り返す
WM_PAINTは優先度の高いメッセージなので、この処理が完了しないと他のメッセージは
受け取れない、メッセージボックスはWM_INITDIALOGなど一連のメッセージを受け取って
処理をしない限り動けないので何時までたってもそのメッセージを受け取れない
つまりプログラムが停止しているわけではなく、OnPaintメッセージでループしている
説明下手ですまんが、大体のニュアンスは分かっていただけたかな?
0078デフォルトの名無しさん
NGNG多言語リソースは.rc2の方に書いておけば、リソースエディタは影響受けない。
もちろん、逆にそこの部分はリソースエディタの支援をまったく受けられなく
なるんだけど、C(++)ソース中にユニバーサルキャラクタで書き込むよりは
可読性があっていいんじゃないかと。
ちなみにユニコードで保存したrc2ファイルは、テキストファイルとして
VisualStudioで編集できる。
007969
NGNGWM_PAINTメッセージが送られ続けているということですね。
Windowsプログラムはまだやり始めたばかりでわからないことが多いですが
とても楽しいです。
これからもがんばっていこうと思います。
本当にありがとうございました。
0080デフォルトの名無しさん
NGNG何かいいコントロールとかってありますか?
ピクチャーコントロールって、こういうときに使うのでしょうか?
0081デフォルトの名無しさん
NGNG俺はこういう時に使ってる
0082デフォルトの名無しさん
NGNGダイアログボックスに貼り付けると、IDがIDC_STATICとなって、
普通のスタティックテキストと扱いが同じなんだよね。
で、どうやって使わせようとしているのかの意図が読み取れなくて???
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
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デフォルトの名無しさん
NGNGInvalidateRect()してみるとか?
0087デフォルトの名無しさん
NGNGプロセス間通信はイベントオブジェクト以外苦手じゃ
0088デフォルトの名無しさん
NGNGそれじゃアプリにスクロール要求は出ない。
他アプリをスクロールさせるってのはやったことないけど、
単純にWM_xSCROLLを送ればいいんじゃなかろうか。
0089デフォルトの名無しさん
NGNGMessageBoxがダイアログの中央ではなく、画面の中央に表示されて
しますのですが、ダイアログの中央に出す方法はありませんか?
環境は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);
}
0091デフォルトの名無しさん
NGNG普通はどっちなんだっけ?
ともかく、ダイアログ関係を中央に出そうとするのはCenterWindowの仕業だから、
そこにブレークポイントをかけて、しかるのちに対策を考えればいいかと。
0092デフォルトの名無しさん
NGNGそのスレッドでダイアログの情報を持ってないのが原因だろうから、
何らかの方法でCWnd*を渡してメンバ関数版を使えばいいんでないかな。
0093デフォルトの名無しさん
NGNG試していないけど、CHogeDlgがCDialogを継承
しているならのメンバ関数のメッセージボックスを
呼び出せばいいんじゃないの?
0094デフォルトの名無しさん
NGNG>ダイアログの中央に出す方法はありませんか?
方法はある。 WM_INITDIALOG
もっと簡単な方法が知りたいってことか?
どんくらいまでわかるのかを書かないと
それこそ基本中の基本から説明せにゃならん。
もちろん、それは万単位が相場で只ではできない。
0095デフォルトの名無しさん
NGNGMoveWindow()とかSetWindowPos()でサイズを変えようとすると
必ず落ちますが(DEBUGビルド時)、これって許されないのでしょうか。
CChildFrameのサイズに合わせて大きさを変えたいのですけど。
009695
NGNG簡単にいいますと、フォーム内のダイアログテンプレートのサイズを
変更するにはどうしたら良いのか、ということです。
単純にGetDlgItem()ではダメですよね。NULLが返ってきてしまいます。
009789
NGNG回答ありがとうございます。
とりあえずスレッド作成元のCWnd*をグローバル変数に設定して、
スレッド内からMessageBoxを呼び出す方法と、直接メンバ関数の
MessageBoxを呼び出す方法を試しましたが、結果は同様でした。
なお作成元のスレッドでAfxMessageBoxを呼び出した場合には、ダイアログの
中央に表示されます。
>>94
当方組み込み向けのCが本職で、Windowsプログラムはほとんど経験がありません。
スレッド内でメッセージボックスを表示させることはWindowsプログラムではほとんどしな
いことなんでしょうか?
0098デフォルトの名無しさん
NGNG俺もあまり詳しくはないが、そこまでMessageBoxにこだわる必要はないのでは?
メッセージ出力用のダイアログクラスを作成して、そのクラスに親の位置を渡せば良いのでは
ないのかな
ダイアログクラスなら、OnInitDialog()で表示位置やサイズを変更すると簡単なんだけど。
意図していたことと違うかもしれないが、暫定的にしておいて、他のもっと重要なところに
パワーをかけた方が良いと思うよ
0099デフォルトの名無しさん
NGNGスレッドにはメッセージループを持つスレッドと、持たないスレッドがある。
WM_INITDIALOGはメッセージなわけだが・・・
0100デフォルトの名無しさん
NGNGWindowsでは、ウインドウはどれかのスレッドに属している、
つまりスレッドがウインドウを保持しているといっていい。
そして1つのウインドウは複数のスレッドに共有されることは無い。
ウインドウには親子関係があるがこれは同一スレッド内においてのみ有効
スレッドがウインドウを作った場合親ウインドウに別のスレッドのウインドウを
指定しても無効になる
メッセージボックスの場合、内部的にCenterWindowが呼ばれるわけだが、
親ウインドウがいないもしくは無効な為、ど真ん中に表示されてしまう
どうしてもと言うなら、試したこと無いので出来るかどうかわからないが
見えない親ウインドウをスレッド元のウインドウサイズにあわせて作って
おいてメッセージボックスを呼び出すとか
0101デフォルトの名無しさん
NGNGつまり、スクロールバーを表示させたくないってこと?
0102デフォルトの名無しさん
NGNG一応調べてみたらこういうのあったけど
ttp://www.codeproject.com/docview/resizableformview.asp
0103デフォルトの名無しさん
NGNG参考ページでもいいのでお願いします。
0104デフォルトの名無しさん
NGNG別スレだけど
http://pc5.2ch.net/test/read.cgi/tech/1087929711/969
でCの宿題の回答にCStringArray使ってるね
0105デフォルトの名無しさん
NGNGコンパイルすらできない俺って・・・_| ̄|○
VC7ですが、助けてくださらんか?
01061/2
NGNG長くなって申し訳ないが、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/2
NGNG{
// ファイル有無(書き込み権チェック)
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;
}
}
0108105
NGNGVCを初めて3日目なんで、こういうコードを載せてもらった場合、
どうやってスケルトン?(でしたっけ)を作るかわかりません。
MFCアプリケーションで作ればいいのでしょうか?
0110デフォルトの名無しさん
NGNG上のコードだとMFCとは言ってもMFCの中の
CStringArrayを使うだけで、中身はコンソールプログラム
だから(簡単に書くとコンソールプログラムはmainから
始まり、ウィンドウズプログラムはWinMainから始まる)
とりあえず、Win32コンソールプロジェクトで作成する。
で、CStringArrayを利用するにはMFCをリンクする必要が
あるのでプロジェクトのプロパティで「MFCの使用」を
「共有DLLでMFCを使用する」または「スタティックライブラリ
でMFCを使用する」に設定する。
始めて3日だと、リンクとかDLLとかスタティックとか言われても
わけわからないだろうけど、MSDNにも情報があるのでこつこつ
やってちょ。
0112デフォルトの名無しさん
NGNGダイアログにスタティックウインドウを貼り付けただけのウインドウを作りました
CWinApp::InitInstance中で作成、表示させようとするとウインドウ自体は
表示されるのですがスタティックコントロールのメッセージが表示されません。
メッセージはInitInstanceの関数を抜けたあとなら表示されるので
ただ単純に再描画の為のメッセージを受け取れていないだけだと思うのですが
InitInstance中にメッセージポンプ入れるなど色々試してみましたが思うように
表示されません。
今は、別スレッド化してメッセージの表示は出来ていますが
出来たら単一スレッドで動かしたいです。何かよい方法をご存知の方いらっしゃったら
教えてください
0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNGこれはダメかもわからんな
0115デフォルトの名無しさん
NGNGそっかぁ。もっと簡単な例だせばよかたー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まずCString、そのうちCArrayって感じだと思うが。それぞれの
概念が理解できていれば、Arrayの仲間についても自然と分かる
はずだし。
0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNGMFCで作っている限りにおいてはvectorを使用するよりも
CStringArrayのほうが利点が多い
0120デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNGCString使うなら、CStringArrayで問題ない。
0124デフォルトの名無しさん
NGNGCStringArrayが良い
アルゴリズム使う場合はstlだけどね
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG該当するものとはどういう意味ですか?
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNGスレッドからダイアログにメッセージをセットしようとするとアサートします。
スレッドが怪しいのですが、
UINT thread(LPVOID pParam)で作って
CTestdlg;
として、dlg.GetDlgItem(IDC_EDIT1)->SetWindowText(msg);
では駄目なのでしょうか?
どうすればセットできますか?
0129デフォルトの名無しさん
NGNGだったらBoostでいい
0130デフォルトの名無しさん
NGNG俺も使ってるけどねboost
ただ敷居がちと高い
0131112
NGNG0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG便乗で申し訳ありませんが、
1.「共有DLLでMFCを使用する」
2.「スタティックライブラリでMFCを使用する」
1.2はどうちがうのでしょうか?
0134デフォルトの名無しさん
NGNGboostはstl実装じゃないじゃん。
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGダイアログベースでスレッドをコールするようにしているのですが、
そのクラスへ Cクラス dlg
として、dlg.GetDlgItem(IDC_EDIT1)->SetWindowText(msg)とすると
アサートします。
コンパイルは通るのですが。
0137デフォルトの名無しさん
NGNGワーカスレッドで作ってるから。
0138デフォルトの名無しさん
NGNG他にどんな方法があるのでしょうか?
0140112
NGNG関係が上手くつかめない
0141デフォルトの名無しさん
NGNGユーザーインターフェイススレッド
0142デフォルトの名無しさん
NGNG生成場所はダイアログで実行される関数内です。
CWinThread *p_thread = ::AfxBeginThread(Thread, this);
こんな感じでThread関数を呼び出します。
UNIT Thread(LPVOID pParam)
ワーカスレッドを真似てみたのですが。。怪しいです
0143デフォルトの名無しさん
NGNGダイアログは一つです。クラスも一つです。(スレッドはクラスの宣言をしてません)
>>141
聞いたことはありますが、使ったことはありませんでした。
ちょっと調べてみます。
0144デフォルトの名無しさん
NGNGスレッドに元のダイアログのポインタを引数として渡して
そこからダイアログの子ウインドウに何かやっているってことか
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGそんな感じでしようとしてましたができませんでした。
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNG「マルチスレッドに対応すること」
と書かれていた場合、どんな風に実装すればいいのでしょうか?
0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNG多分そうです。ウィンドウハンドラがNULLです。
0152デフォルトの名無しさん
NGNG同時に同じリソースにアクセスされても整合性が取れる実装ってことだね
ライブラリなんかを作る場合、その部分をしっかり作っておかないと不味い
0153138
NGNGCSubThread *pThread = (CSubThread*)AfxBeginThread(RUNTIME_CLASS(CSubThread),THREAD_PRIORITY_NORMAL, 0, 0);
pThread->m_bAutoDelete=FALSE;
pThread->ResumeThread();
これでCWinThreadの派生クラスを作成しましたが、これでよいのでしょうか?
複数のスレッドにするにはその数分クラスを作成しないといけないのですか?
0154デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNG言っておくけどユーザインターフェーススレッドはそのスレッドでウインドウを
マネージしたい場合(メッセージキューを作って云々ってことね)に
作るスレッドなので138の今回の目的のためには使えないんじゃないかと思う
なぜならユーザスレッドとワーカスレッドなんてのはMFCの上だけで存在するものだし
多分もっと根本的な問題だと思うけど
0157デフォルトの名無しさん
NGNGOnOKの実装ってそのままにしていない?
CDialog::OnOKのディフォルトって内部でEndDialogを呼び出すけど。。。
0158デフォルトの名無しさん
NGNGたぶんソース張ってもらったほうが早いんで、ソース張ってくれます?
スレッドの部分だけでいいんで。
0159デフォルトの名無しさん
NGNGUINT 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();
}
0161138
NGNGvoid 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デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGここ
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG俺は寝ます・・・
0167デフォルトの名無しさん
NGNGこれをstl使って書いたコードが見たいのですが、誰か書いてくれませんか?
0168デフォルトの名無しさん
NGNG>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つづき
NGNGfor文のところは
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深夜にありがとう。
がんがりまっす
0171デフォルトの名無しさん
NGNGこれさー、datのSTARTとENDそのまま読み込むからエラーになるんだよ。
そりゃ、コンパイル通っても実行はできんさw
0172デフォルトの名無しさん
NGNGCDialogBar上に、スピンボタンを配置しました
CDialogBarは、派生クラスを作らないとMSDNにあったのでコントロールのハンドリングは
すべてCMainFrame上に持ってきています。
このようにすると、スピンコントロールがどうしてもEnableになりません
これはどういうことでしょうか
環境はVC6sp6です
017397
NGNG解決しました。
回答をくれた皆さんありがとうございました。
0174デフォルトの名無しさん
NGNGCDialogBar::OnUpdateCmdUIをオーバーロードしないとあかんらしいです。
うちはVS.NETだけど、たぶん同じだと思います。
0175デフォルトの名無しさん
NGNGm_lpCmdLineを使うのはわかったのですが、サンプル欲しいです。
渡したいコマンドライン引数は
「xxx.exe -a:c:\hoge.txt -b:c:\poko.txt」
MFCのダイアログベースで制作しているアプリです。
引数を他のcppファイルで受け取って、変数に入れて使用したいです。
宜しくお願い致します。
0176デフォルトの名無しさん
NGNG回答ありがとうございます
つまり、CDialogBarを派生させないといけないと言うことですね
問題のおきているソースは、かなりでかいプロジェクトでCDialogBarのほとんどの
コマンドハンドラーはCMainFrameに記述されています。
そのためCDialogBarの派生クラスに持っていくのは結構手間がかかってしまいます。
ためしに新規にダイアログバーを持つSDIアプリを作ってみたところスピンコントロールは
問題なくEnableになっていました。
MFCのソースを解析してみたところ、通常ボタンコントロール以外はGet(DLGC_BUTTON以外)
Enableになるように見受けられるのでもう一度どういう原因でDisableになるか調べてみようと思っています
0177デフォルトの名無しさん
NGNG・・・・
問題なくEnableになっていました。
MFCのソースを解析してみたところ、ジェネリックボタンコントロール以外は
(WM_GETDLGCODEの戻り値がDLGC_BUTTON以外)
Enableになるように見受けられるのでもう一度どういう原因でDisableになるか
調べてみようと思っています
0178デフォルトの名無しさん
NGNG>>175
MFCの場合引数はCCommandLineInfoを継承したクラスを生成して
ParseParam関数をオーバーライドして引数を解析するというのが一般的です。
(といいつつあまり一般に利用されていないけど)
今回の引数は形式がウインドウズの標準と違うため、独自に文字列の
切り離しなどを入れるしかありません-をオプションの識別子としているのであれば
-を取ってコロンを境に前後に文字列を分ける等の処理を入れれば良いでしょう
さてそれを他のcpp(多分他のクラスということでしょうか)に渡すのであれば
ab切り出したそれぞれの文字列変数(CStringなど)を別のクラスに渡せばいいと思います
0179デフォルトの名無しさん
NGNG>>32
0180デフォルトの名無しさん
NGNGちょっと質問です。
今、巷の普通の本屋さんで売っているWindowsプログラムの本は大体Visual C++の
本です。
それでそういう本には、「ウイザードで勝手に作られるんで、カスタマイズしたいときは
ここをいじってください」としか書いてなくて、なぜそこをいじればいいのか、プログラムが
どういう流れになっているのか全く分かりません。
結局、SDKの方が分かりやすいと思い、まずはそっちをやることにしました。
みなさんはどうやってMFCを勉強されたのでしょうか?
もっと良い入門書があるのでしょうか?
0181デフォルトの名無しさん
NGNGどの関数がどのクラスのメンバか意識するようにしたら理解できた。
関数名しか書いてなくても、クラス名::関数名 っていうようにして憶える。
0182デフォルトの名無しさん
NGNG> それでそういう本には、「ウイザードで勝手に作られるんで、カスタマイズしたいときは
> ここをいじってください」としか書いてなくて、
まずはそこから始めて、具体的な成果物を作らないことにはモチベーションが
持続しないと思うが。体系なんてものは大きすぎてなかなか理解できるもので
ないし、とにかく何か動くものを作れるようになることが先。手段は後で良いんだ
よ。まず「何を作りたいか」、「どういう動きをさせたいか」が大切。それに沿って
どうすれば良いかを調べていく。経験を重ねれば、下層にあるものがだんだん
見えてくるし、それからシステムの学習に入ればいい。
もちろん、CやC++の基礎がないようなレベルだったら話は別。そういった
言語レベルの基礎知識は身に付いてないとVCプログラミングは難しい。
0183デフォルトの名無しさん
NGNGそんなあなたに
翔泳社の標準講座MFC ハーバートシルト著
0184デフォルトの名無しさん
NGNGMFC→ウィザードが生成したものをいじる
SDK→猫からソースパクっていじる
結局同じ
0185デフォルトの名無しさん
NGNG食わず嫌いせずとりあえず一番高いものに食いついて、消化できなくて吐き出して、
高い金払って食って吐いて、高い金払って食って吐いて、
食って吐いて、食って吐いて、食って吐いて……と繰り返しあがき続けていたら、
いつの間にかMFCでもSDKでも問題なく使えるようになり、物も食えるようになっていた。
しかし、そこに行き着くまでに消費した書籍代は…… _| ̄|○
0186デフォルトの名無しさん
NGNGいものだ。したがって
>なぜそこをいじればいいのか
>プログラムがどういう流れになっているのか
なんて気にするな。
と考える俺は少数派だと自覚しております。
0187デフォルトの名無しさん
NGNG途中で降りたらベット丸損だぞ
本と同じ重さの札束を狙う大博打ってとこを忘れんな
0188デフォルトの名無しさん
NGNG{
CPen myPen;
myPen.DeleteObject(); ←これいるんですか?
Delete myPen; ←これもいるんですか?
}
CPenってスコープ外れる時に、この辺やってくれないの?
0189デフォルトの名無しさん
NGNGこんなのいれたらコンパイルとおらねぇよ。
0190デフォルトの名無しさん
NGNGmyPen.DeleteObject();
これ、必須ですか?
0191デフォルトの名無しさん
NGNG1.スタック フレーム上にグラフィック オブジェクトを定義します。CreatePen など、それぞれの型固有の作成関数を使って、オブジェクトを初期化します。コンストラクタでオブジェクトを初期化することもできます。
1 段階で作成する方法と、2 段階で作成する方法については以下に説明します。
2.オブジェクトを現在のデバイス コンテキストに選択し、前に選択した古いグラフィック オブジェクトを保存します。
3.現在のグラフィック オブジェクトを使い終わったら、古いグラフィック オブジェクトをデバイス コンテキストに選択し直して、状態を復元します。
4.フレームに割り当てられたグラフィック オブジェクトは、スコープからはずれたときに自動的に削除されます。
これ見て意味わからんかったら再度質問しろ。
0192デフォルトの名無しさん
NGNGその変数がスコープ内で使い切りになっていて、デストラクタによる削除で
間に合う場合は、DeleteObject()が不要。ただしDeleteObject()を書いても
悪くはない。
デストラクタに任せるか、明示するかの違い。あるいはそれぞれその必要が
あるかどうか場合によって選択する。
>Delete myPen;
は?
0193デフォルトの名無しさん
NGNG>>192
ありがとう、謎が解けました。
これで熱帯夜も眠れそうです。
Delete myPenは立ち読みした時に載っていて、
「え?そんなんまで書くんだ・・・」
と記憶していたもんで・・・
0194本田
NGNG>MFCインターナル
>著者名 G. シェパード/S. ウィンゴ=著、玉井 浩=訳
>出版社 アジソン・ウェスレイ・パブリッシャーズ・ジャパン
ttp://www.fukkan.com/vote.php3?no=24811
興味のある方は投票お願いします。
0195デフォルトの名無しさん
NGNGMFCってよりC++の根本的な理解が足りないだけじゃないんですか?
0196デフォルトの名無しさん
NGNGdeleteはnewしたときだけ
0197デフォルトの名無しさん
NGNGCDCとCClientDCのデストラクタの違いについて
C++の根本的な理解で説明してくれ
0198デフォルトの名無しさん
NGNG{
if (m_hDC != NULL)
::DeleteDC(Detach());
}
CClientDC::~CClientDC()
{
ASSERT(m_hDC != NULL);
::ReleaseDC(m_hWnd, Detach());
}
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNGそれがMFCのお話だ
0201デフォルトの名無しさん
NGNGわざわざここに質問するようなことではないのだが。
単なる仕様だろ。
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG>構築時に Windows の GetDC 関数を呼び出し、
>破棄時に ReleaseDC 関数を呼び出します。
0204デフォルトの名無しさん
NGNGヘルプも見ないで質問する人、どう思います?
0205デフォルトの名無しさん
NGNGヘルプを見れない環境ですが、何か?
0206デフォルトの名無しさん
NGNGこれか
http://www.itmedia.co.jp/news/articles/0407/07/news061.html?nc30
0207デフォルトの名無しさん
NGNGヘルプに書いてある事質問禁止
でお送りします
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNGC++の根本的な理解が足りない人
0210デフォルトの名無しさん
NGNGC++ と何の関係が?
0211デフォルトの名無しさん
NGNG>>195に聞いてくれ
0212デフォルトの名無しさん
NGNGマジおすすめ
0213デフォルトの名無しさん
NGNGつか、WindowsアプリではVC最強!
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG>>213は事実ですが・・・
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGはげ同
BCBは使えるが、VC++は使えないなんて香具師は
まず、仕事回してもらえないだろうね
0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNGその時点で仕事放棄してるのと同じだ...orz
0222デフォルトの名無しさん
NGNG少なくても、本人の仕事環境に対する意識はゼロといえるだろう。
ヘルプが見れない環境のくせに、ここで得意になって質問されてもね。
車でガス欠しちゃうくらい恥と思わなきゃ。
0223デフォルトの名無しさん
NGNG最弱〜 orz
0224デフォルトの名無しさん
NGNGまともに答えられないくせに上級者気取りか。
おめでてーな。
0225デフォルトの名無しさん
NGNGMSDNライブラリが見られるはず。
0226デフォルトの名無しさん
NGNGVC++ぐらい1人でインストールしなさいって。
そうすりゃヘルプぐらい見れるから。
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG0231レスる
NGNG0232デフォルトの名無しさん
NGNG日本語かどうかじゃなくて、書いてある言葉そのものが読みきれないっていうか。
その辺をうまく要約してくれる神を求めて、ここに書いてることもあるでしょ。
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGこちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0235233
NGNGよく分からないんですが・・・。
0236デフォルトの名無しさん
NGNGまとははずして無いと思います、
まともな回答者を待ちましょう
0237デフォルトの名無しさん
NGNGところでヘルプは読んだか?ヘルプは?
0238233
NGNG一応読みました。OOPの勉強はしたのですが、いざMFCで実現しようとすると、どのように
したらよいか、ってのが分かりません。例えば、CWinAppっていうのはコントローラなのか、
とか、ドキュメントクラスはなんなのかってことです。ほかには、画面を次々と切り替えて
行くとき、それぞれの画面のクラスを作成するのか?とかよく分かりません。作成すると
したら、それを切り替えるたり、生成したりするのはどのクラスでするべきなのか、とかです。
0239デフォルトの名無しさん
NGNG自分で試行錯誤、いろいろやりながら覚えていく手間を惜しむのなら、
はじめからやめたほうがいいと思います。
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGさぞ悔しかったんだろう
ほっといてやれ
0242デフォルトの名無しさん
NGNG0243233
NGNGいや、ある程度実践的なプログラムの作成はこなしたんですが。いまだにどうすべきか、
ってのが分からずだましだましプログラミングしてる状況です。
あと240ではないです。
0244デフォルトの名無しさん
NGNG>>239みたいな変な奴に気を使う必要はないよ。
0245デフォルトの名無しさん
NGNG実践的なプログラムの作成をこなせてるのなら
今のままでも問題ないのでは?
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGなんて聞いてまわったりしてないよね... orz
0248デフォルトの名無しさん
NGNGまた上級者気取りのレス。いい加減にしろ。
0249本田
NGNG>ヘルプに書いてある事質問禁止
>でお送りします
BCBはMFCが付いていてもヘルプがない、冷たいこと、言わんといて。
0250デフォルトの名無しさん
NGNG2chできる環境ならオンライン版の
MSDNライブラリが見られるはず。
0251中級者気取り
NGNGちょっと規模がでかくなりそうなんで、
描画用(ビュークラス)とデータ処理用(ドキュメントクラス)
に分けてみっか!てな感じ
0252デフォルトの名無しさん
NGNGそういうことじゃないんですが・・・、なんていったらいいんでしょうか?それ、
曖昧なんですよね・・・。その説明じゃ役に立たなかったというか・・・。
0253デフォルトの名無しさん
NGNGどうわからないのか説明できないのなら教えようが無いな。
0254デフォルトの名無しさん
NGNG例えば、商品注文システムを考えると、商品注文クラス(商品の1回での注文を表すクラス)というのが
ありますよね?それをドキュメントクラスの子クラスとするのか、それとも、そのクラスのオブジェクトを
保持するのがドキュメントクラスなのか、とかです。
0255デフォルトの名無しさん
NGNG分離独立です。
関連性もたせちゃダメ
0256デフォルトの名無しさん
NGNGということは、そのクラスのオブジェクトを保持するのがドキュメントクラスってことですか??
0257デフォルトの名無しさん
NGNGOOPなんて言葉に縛られず、ひとつひとつのクラスの使い方を確実にマスターしてくことでしょうな。
100個も覚えられれば、そのうちピーンと何かがひらめいてくるだろう。
一度ひらめいてしまえば、クラスなんて覚えなくてもヘルプ片手にプログラムできるようになる。
その辺の話は、知るより感じなければならない部分なので、他人に聞いても解決しないよ。
0258デフォルトの名無しさん
NGNGSetItemState(nIndex, LVIS_SELECTED, LVIS_SELECTED | LVIS_FOCUSED);
とやっても選択が変わってくれないんですけど、これは使えませんか?
仮想LCだと選択についてもやり方が別になってますか?
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNGケータイから2chにアクセスしていますが、何か?
0261デフォルトの名無しさん
NGNGデータ管理部分のクラス。
で、データをドキュメントクラスに持たせるか、派生クラスに持たせるかなんてのは
自分の好きにすればいい。
0262デフォルトの名無しさん
NGNG何か?
じゃねーよ。ばか。
0263デフォルトの名無しさん
NGNGケータイから2chにアクセスしています。
ケータイで使えるヘルプのURLを教えて下さい。
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNGプロって、2chのプロか?
それなら失格で大いに結構!!
0268デフォルトの名無しさん
NGNGおまえはプログラマとして失格だな
ただのグラマ
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNGもっと冷静になって、自分をもっと知るべきなんだろうね。
まあ、オチケツ、と言っておこう。
0271デフォルトの名無しさん
NGNG・負けそうになると「釣れた!」という
--某所より転載
0273デフォルトの名無しさん
NGNGFOMAで見てみましたが、どうやらケータイには対応していないようです。
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNGケーブル持ってないです。
それにパケット代で死んでしまいます。
0277デフォルトの名無しさん
NGNGそんな心がけでプログラマーは笑ってしまいます。
いや、私じゃなくて世間一般的に言ってです。
0278デフォルトの名無しさん
NGNG自称上級者たちに笑われても
痛くも痒くもありません。
0279デフォルトの名無しさん
NGNGプログラマってそういう仕事だよ。そのくらい金出してやれ。
将来得るに違いない能力が、つまらん制限のおかげで身に付くのが遅れるのは哀しいだろ?
0280デフォルトの名無しさん
NGNGわざとやってんだろ?おまえら!
そうやって、暇だったら、プログラムの一つでも
作れってこった
0281デフォルトの名無しさん
NGNGヘルプをどうしても見れない事にしたい奴を
からかってるだけです。
0282デフォルトの名無しさん
NGNGと、いうことにしたいのですね :-P
0283デフォルトの名無しさん
NGNGホント、仲いいのな。
0284デフォルトの名無しさん
NGNGそこでAssertionがかかるんだけど何ででしょうか。GetPosition()でもかかってしまします
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNGファイルのオープンに失敗してるから
0287デフォルトの名無しさん
NGNGそこを読めば?
0288284
NGNG原因が判明しますた
オープンしたのは基底クラス型の面罵変数だったのに、派生クラスのGetLength()を
直接呼んだのが間違いでした。オーバーライドしておくべきでした_| ̄|○
0289デフォルトの名無しさん
NGNG0290本田
NGNGC++は仕様が複雑すぎるので、だれも根本的には理解できそうに無い。
0291名無しさん@そうだ選挙に行こう
NGNGどいつもこいつもに、あんたも含まれるのか?
含まれない人なら当然、「根本的な理解」とは何かが言えるよな。
0292名無しさん@そうだ選挙に行こう
NGNG世界でも片手ぐらいしかいないんじゃないか?
実際使うときは、そんな必要はまったく無いのだが。
0293名無しさん@そうだ選挙に行こう
NGNG0294名無しさん@そうだ選挙に行こう
NGNG>>188 見たいなソース貼っちゃうようではまずい。
0295名無しさん@そうだ選挙に行こう
NGNGCPenがデストラクタ処理あるはずなのに
この記述には意味があるのか?
と疑問を持ったから貼った・・・とは解釈できんのか?
0296名無しさん@そうだ選挙に行こう
NGNGそーとーしつこいな
0297名無しさん@そうだ選挙に行こう
NGNG答えたい者だけが答える
これで好かろう
あとはガタガタ言うな
0298名無しさん@そうだ選挙に行こう
NGNGまずいのはそこではなく
new してないのに delete してるところだろ
しかも Delete になってるし。
C++の基本が全然理解できてない。
0299名無しさん@そうだ選挙に行こう
NGNG>>291 が聞きたがってるんでしょうがない
0300名無しさん@そうだ選挙に行こう
NGNG#define かも知れんぞ
0301名無しさん@そうだ選挙に行こう
NGNG0302名無しさん@そうだ選挙に行こう
NGNG粘着になってしまった人がいるスレです。
0303名無しさん@そうだ選挙に行こう
NGNGと、いうことにしたいのですね :-P
0304名無しさん@そうだ選挙に行こう
NGNGおまえらガキだな・・・いつまでやってんだよ
いい加減、よそでやろうね
0305名無しさん@そうだ選挙に行こう
NGNGそうそう、MFCとかCPenとかの理解じゃなくて、
先ず、自動変数に関して理解していないってところから
議論を始めなきゃならんということでしょ。
つまり、C++わかっちゃいねーなと...orz
0306名無しさん@そうだ選挙に行こう
NGNG末恐ろしいな…ガクブル
0307名無しさん@そうだ選挙に行こう
NGNGこんなのスルーできないようでは
アンタもガキですから!残念!
0308名無しさん@そうだ選挙に行こう
NGNGまだ1時間はあるぞ。
0309名無しさん@そうだ選挙に行こう
NGNGもっと投票率上がるんじゃないか。
一度に10回ぐらい投票してやってもいいぜ。
0310名無しさん@そうだ選挙に行こう
NGNG0311名無しさん@そうだ選挙に行こう
NGNGみんな、俺に注目してくれぇぇぇぇぇ!!!!!!
0312デフォルトの名無しさん
NGNG>>193の書き込みによると「Delete myPen;」は本に書いてあったらしいね。
本当に書いてあったのならその本も晒し者だな。
0313デフォルトの名無しさん
NGNGおまえも(r
0314デフォルトの名無しさん
NGNGまったくだよ、C++を全然理解してない奴が
MFCに手を出すもんじゃないよな...orz
0315デフォルトの名無しさん
NGNGそのうちnewってコンストラクタで勝手にやってくれないの?
とか言い出すよ。きっと
0316デフォルトの名無しさん
NGNGまた上級者気取りのレス。キモすぎ。
0317デフォルトの名無しさん
NGNG本当にそう思ってるなら本気でC++の入門書読んでからここに参加した方がいいよ。
0318デフォルトの名無しさん
NGNGんだ
0319デフォルトの名無しさん
NGNG↓
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG↓
0322デフォルトの名無しさん
NGNG入門書でいいっつってんだろ。とにかく読んでから来いや。
0323デフォルトの名無しさん
NGNG喧嘩しちゃだめですよ
0324デフォルトの名無しさん
NGNG0325258
NGNG0326デフォルトの名無しさん
NGNGだよな・・・煽りまでも幼稚だよな・・・アホとしか言い様ないよな..orz
あと、「自称上級者」って何だよw
上級者自称してる奴なんていつでてきたよ?w
0327デフォルトの名無しさん
NGNGあんたみたいなのがいると、燃料の落とし甲斐があるよ
0328デフォルトの名無しさん
NGNGここに来るのは本を全部読んで、
MFCのヘルプも見れる環境にしてからにしたほうが良いと思うよ。
でないと、話にならないですから。
0329デフォルトの名無しさん
NGNG自分の恥ずかしさに気が付くと思うよ
0330デフォルトの名無しさん
NGNG最低条件とか決めてテンプレにでも載せたらいいんじゃないでしょうか。
たとえば、
・C++の基礎は勉強済み。
・MFCのヘルプを見れる環境を持っている。
は必要ではないでしょうか。
何でもかんでも教えて君は、本人の怠慢だと思いますので。
0331デフォルトの名無しさん
NGNGコンストラクタ、デストラクタ、クラスの関数への参照渡しと
そうでないときの引数の違いとか、最初に勉強したとき理解できなくて
そのままってこともありますものね。
ある程度経ってまた勉強しなおすと、目からうろこってことも多いです。
0332デフォルトの名無しさん
NGNGchar*ばかり多用している人もいるんですよね。
LPCSTRの存在の本質を本当にわかっている人は
いったいどれだけいるのだろうかと思います。
0333デフォルトの名無しさん
NGNG初めて使ったときは、こんな便利なもの!!って感動したけど。
CObList使う以前に<list>で間に合っちゃうなんてことも
結構あるんですけどね。
0334デフォルトの名無しさん
NGNG>・C++の基礎は勉強済み。
初歩ではなく基礎ならば
これを守れる香具師は皆無と思われ
基礎: ISO/IEC14882:2003
応用: MFC
>・MFCのヘルプを見れる環境を持っている。
ここにアクセスできる以上、
全員がクリアしていることが自明
(MSDNオンライン)
0335デフォルトの名無しさん
NGNG携帯でアクセスしてるなんてつわものもいるみたいですよw
ヘルプ見れないぞゴルァって切れてたしw
0336デフォルトの名無しさん
NGNG最低限MSDNを調べ、それでも解決できない様であれば、
このスレに質問しに来なさい。
その時は、快く面倒見ようじゃないか。
0337デフォルトの名無しさん
NGNGそれは明らかに釣りだろ?
0338デフォルトの名無しさん
NGNG死ね自称上級者
0339デフォルトの名無しさん
NGNGそりゃ、STL も RTTI も MFC より後でできたやつだからね
0340デフォルトの名無しさん
NGNGあなたでしたかw
こんなに簡単に釣(ry
0341デフォルトの名無しさん
NGNGMFC → API → C++ → C
な訳だが。
0342デフォルトの名無しさん
NGNGものすごく人生で損しているように感じます。
考え方をちょっと方向転換すれば、
とても幸せになれるのになって思います。
ぶちギレたら誰も教えてくれなくなりますものね。
世渡り上手も自分を向上させるコツのひとつです。
0343デフォルトの名無しさん
NGNGサラリーマンなら参考書ぐらい言えば買ってくれるものです。
会社があなたを認めているのならですけど...orz
0344デフォルトの名無しさん
NGNGおまえの中では不勉強の奴=切れてる奴
という図式が成り立ってるのか?
それはちょっと短絡すぎるぞ。
面白半分で煽り入れている奴の方が多いんじゃないかな?
おまえ以外の人はとっくに気がついている訳だが・・・
0345デフォルトの名無しさん
NGNG一日の長ってやつを定量的に認識できない香具師はまだまだ青いね
0346デフォルトの名無しさん
NGNG俺には両方切れている様に見えたんだが、
何故勉強不足の者だけが切れているかの様な
結論に至ったのかお聞かせ願いたい
0347デフォルトの名無しさん
NGNGそのくらい自分でぐぐって調べろ
0348デフォルトの名無しさん
NGNGおいおい、なんだそりゃ?
0349デフォルトの名無しさん
NGNG上級者なら他人に聞くな。自分で調べろ。
0350デフォルトの名無しさん
NGNG他称上級者=煽りに乗せられて荒らしに油を注ぎ、アホ(2ch不適合)
荒らし=なんと言うか、うんこ
静観者=正解
俺=まあ、アホ
と言うわけで、MFCの相談の方どうぞ
↓
0351デフォルトの名無しさん
NGNG見ない人 or 見るのをやめた人 = 正解
0352デフォルトの名無しさん
NGNGこれ、どうやって使うんですか?
http://www.family.co.jp/rel/r_010614.html
0353デフォルトの名無しさん
NGNG塗る
0354デフォルトの名無しさん
NGNGわかる人にはわかるよ。それってスルー。
不幸にも釣られちゃう人が多いのも事実みたいだけど。
0355デフォルトの名無しさん
NGNGなんだ?まだ興奮冷めやらないのか?
0356デフォルトの名無しさん
NGNG俺には両方切れている様に見えたんだが、
何故勉強不足の者だけが切れているかの様な
結論に至ったのかお聞かせ願いたい
0357デフォルトの名無しさん
NGNG不幸な人ですね
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNGいい質問だが、それはあなたの国語力に依存するので
なんと言っていいのやら。
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNG>>360
お前もスルー覚えてこいよ。
0362デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNGBCB=うんこ
>>364
うんこ
0366デフォルトの名無しさん
NGNGBCBでMFC使おうとしてヘルプ見れないとか
言い出す奴いるからうんこ。
0367質問です
NGNG{
CPen myPen;
myPen.DeleteObject(); ←これいるんですか?
Delete myPen; ←これもいるんですか?
}
CPenってスコープ外れる時に、この辺やってくれないの?
0368デフォルトの名無しさん
NGNGオレモナー
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGだからコンパイルが通らない(ry
0371デフォルトの名無しさん
NGNG(ry の意味がねーだろ!!w
0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNGいつまでたってもBCBに追いつけないんだよ…
とマジレスしてみる
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNG0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNGやっぱりCString便利だよね?
0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNGCStringも渡せるぞ。すごいだろ。
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNGどのようにすればいいのでしょうか?
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNG糞レスはいりません。
0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNG出来るけど、UNICODEビルドではどうなっても知らないよ。
0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNGミ・・ ミ ということにしたいのですね?
( ° )〜
0396デフォルトの名無しさん
NGNGMFCを使わない標準DLLがあります。で、その中で機能追加のためスタティックライブラリを使おうとしてるんだが、
そのスタティックライブラリがMFCを使っています。
とりあえずヘッダはやりくりしてどうにかコンパイルはできましたが、リンク時に「DllMainは既に・・・」というエラーがでます。
MFC自体が持ってるDllMain?と標準DLLが持っているDllMainが衝突したりといった問題などあるように見えますが、
そもそもこういうことって出来ないんでしょうか?
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNGしつもんです。
0401デフォルトの名無しさん
NGNGそのスタティックライブラリをDLL化してそれを呼び出す
という逃げ方もあります。
0402デフォルトの名無しさん
NGNGスタティックライブラリの出来が悪くて、なぜかその中にDllMain()という関数があるんじゃないの (w
0403デフォルトの名無しさん
NGNGDocument/View スタイルだと動くんですが・・・。
0404デフォルトの名無しさん
NGNG0405396
NGNGまぁそれが妥当かとは思うんですが、とりあえずファイル増やしたくないなぁと。
>>402
ん、、てことは普通はできるってことですかね?
まぁDllMain以外にもスレッドとかソケットあたりが変に混ざりそうでいやなんだけど、もうちょいもがいてみます。
0406403
NGNGサンクス。コマンドールーティング参考になりました。
しかし、間抜けでした。てっきりフレームワークで生成されるCChildViewクラスってAbout dialogのことだと思い込んでいて無視していたんですが、実はこれが入力メッセージを受け取る肝心なクラスだったんですね。
あーやだなこんな調子で今更MFCを覚えるの鬱。.NETって、あくまでも中間言語インタープリタだから、x86ネイティブコードという観点からいくとMFCの代替になりませんよね?
0407デフォルトの名無しさん
NGNG作るにはどうしたらいいんでしょうか?
0408デフォルトの名無しさん
NGNG0409デフォルトの名無しさん
NGNGうぉー!ありがとう。解決しました。
0410デフォルトの名無しさん
NGNG今MDIの画像ビューア作ってるけど画像を選択して子ウィンドウが表示されたときに
クライアントの大きさを画像サイズといっしょにしたい。
で自分なりに調べたが
CMyDocument::OnNewDocument
↓
CMyView::OnInitialUpdate
↓
CChildFrame::ActivateFrame
画像データはOnNewDocumentで取得。
最後のフレームのところでSetWindowPlacementか使ってフレームの大きさを
決めたいわけだ。
で、、どうやったらフレームからドキュメントみえるんだ? ビューにも画像データのポインタ
渡してるからビューでもいいけど、、。
誰か助けて_| ̄|○
0411410
NGNG×CMyDocument::OnNewDocument
↓
○CMyDocument::OnOpenDocument
0412410
NGNGCFrameWnd::GetActiveDocumentなるまんまの関数があった、、、。
もっとヘルプみます_| ̄|○
0413デフォルトの名無しさん
NGNGC++を理解してないも同然
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG(名)
(1)実体はどうあれ、自らこうだと称すこと。
0417デフォルトの名無しさん
NGNGまさに、ピッタシデナイノ
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG明言しなくても、言外に表れている。
それくらい解れよ。
0420デフォルトの名無しさん
NGNG自称知ったか君
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGCAnimateCtrl m_animate;
//...
m_animate.SetWindowPos(HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
m_ctrl.BringWindowToTop();
という風にCAnimateCtrlのオブジェクトを一番下に、その他のコントロールを上の方に
持っていこうとしてるんだけど、直ぐにアニメーションが最前面になってしまいます。
何かうまい解決策はないもんでしょうか?
0423デフォルトの名無しさん
NGNGだからそれ、自分が上級者だと勘違いしているだけなんだから自称って言わないってば。
0424731
NGNGMFCフレームワークで、CWinApp, CMainFrm, CChildView という派生クラスを使う事を強要されますけど、どこにどういう機能を置けばいいのかいまいちピントきません。
リアルタイムでレンダリングするスクリーン、キー入力、パラメータ入力用のダイアログがあるので,
CWinApp -> OnIdle() レンダラーアップデート, CChildViewへの描画。
CChildView -> OnKeyUp(), OnMouseMove()等
CDialog -> CMainFrm::hoge->SendMessage(...) で入力パラメータを送る。
CMainFrm -> SendMessage(...)でクラス間のデータ受け渡し。
っていう感じでやっているんですが、クラスが保持している別クラスインスタンスへのポインタがprotectedになっていたりするので、SendMessage()のバケツリレーみたいになったりして、2度手間3度手間が多くて疲れます。
「プロはこうやる」っていうのがあったら教えてください。
0425デフォルトの名無しさん
NGNGCDocumentが出てきてないようだが、使ってないの?
0426デフォルトの名無しさん
NGNGプロはめんどくさいのでウィザードの吐いたコードいじって使います
0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNG非効率なことはしません。特別な事情がない限り。
0429デフォルトの名無しさん
NGNG0430本田
NGNG図書館で、
「MFCによるWindows95プログラミング」か「MFCによるWindowsプログラミング」
を借りて読んでください。
0431デフォルトの名無しさん
NGNGこういうのを使えば素早く開発できます。
APPのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。
基本的なWin32システムを支援します。
最強のACライブラリー
ttp://www.geocities.jp/osoftjp
0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNGこういうこと、って?
0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNGttp://www.amazon.co.jp/exec/obidos/ASIN/1874416478
0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNGなんてことをすると、MFCのテンプレートのCArrayなどを使うときに問題がでますが、
using namespace std; する前の状態に戻すときは std の部分になんと書けばいいですか?
0439デフォルトの名無しさん
NGNGVisualStudioにあるような平らなタブを作成したくて、CTabCtrlを継承してクラスを作成
SubClass化してDrawItemをオーバライドしたのですが、
DrawItem内では、TabCtrlの枠の描画はOS?依存らしく自前で描画が出来きないようです。
このようなタブをMFCを利用して作りたいときはどの様にすれば、よろしいのでしょうか?
ご教授いただきたく思います。
0440デフォルトの名無しさん
NGNGcodeguruやcodeprojectに行けばあったと思う。
探してみて。
0441デフォルトの名無しさん
NGNGcodeprojectにありました。
会員登録? して試してみたいとおもいます。
どうもありがとうございました。
0442デフォルトの名無しさん
NGNGこの本初めてみたけどいいの?
USサイトではいいみたいだけど。。。
0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNGMFCを使用して、MSCommで通信を行っているのですがどうにも
解決できない問題に遭遇しました
当初Windows2000を使用していたのですが、WindowsXPに
もってきて動かすと受信がうまく出来ません。
受信部にイベントOnCommを使用しているのですが、2000だと問題なく受け
とれる受信イベントがXPでは受け取れません
RThreshなどはソフトで設定していて、値も正常に入っています
ポートオープンで失敗していることもありません
どなたか、同様の現象がでて、対応された方いらっしゃいますか?
開発環境は VC6+SP6です
0445デフォルトの名無しさん
NGNGWindowsプログラミングを知り尽くしているのがアメリカ人。
Windowsプログラミングを知ったかしているのが日本人。
マイクロソフトの仕様変更を先読みしたプログラムを書くのがアメリカ人。
マイクロソフトが仕様変更したときに「仕様変えんな ゲイツ氏ね!」と泣くのが日本人。
MFCの不具合に文句を言い、不具合を修正して使うのがアメリカ人。
MFCの不具合に文句を言うだけで何も出来ないのが日本人。
MFCを一から教える書籍を売るのがアメリカ人。
Appウィザードで作成したテンプレートにコントロールを追加するだけの子供騙し書籍を売るのが日本人。
オリジナリティに溢れたMFCの書籍を売るのがアメリカ人。
他人からパクったネタを適当に並べただけの書籍を売るのが日本人。
やっぱ 日本人の書籍だけでは不十分。
どれもこれも同じようなものばっかりなんだもん(藁
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG著者の一人だが褒められて嬉しい
0448デフォルトの名無しさん
NGNG> MFCを一から教える書籍を売るのがアメリカ人。
> Appウィザードで作成したテンプレートにコントロールを追加するだけの子供騙し書籍を売るのが日本人。
入門用としてはやったことがすぐカタチになる後者の方がおすすめ
0449デフォルトの名無しさん
NGNG神頼み的な思想を植えつけない細心の注意が必要
0450デフォルトの名無しさん
NGNG習得パス設計との緊密なマッチングで決めること
TABオーダーでバグられた位でグラつく知識はダメ
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNG文句言うより他あたるのがアメ公
0453デフォルトの名無しさん
NGNG素直にAPIでやって下さい。
0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNG今はBCBで、バリバリ快調っす
0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNGどんなの?
0458デフォルトの名無しさん
NGNGアメリカ人:ダディクール
0459デフォルトの名無しさん
NGNGアメリカ人向けの糞本は翻訳されないだけだろ
そんなのに著作料と翻訳料払うぐらいなら日本人に直接書かせる罠
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNGダイアログを作る時にエディットボックスなどと関連付けするメンバ変数を作ろうとしているのですが、
うちの環境ではなぜかメンバ変数追加ウィザードが動作しません。
手動でメンバ変数を書いた場合にエディットボックスどうやって関連付けすればいいのでしょうか?
0462デフォルトの名無しさん
NGNGアイテムをダブルクリックして駄目なら駄目なんだろ。
0463デフォルトの名無しさん
NGNGダブルクリックするとエディタが開いてチェンジイベントの記述になります。
0464デフォルトの名無しさん
NGNGウィザードがおかしい→テスト用プロジェクト作ってみる
手動がいい→サンプルをまねる
0465デフォルトの名無しさん
NGNGCList< CList< int, int >, CList< int, int > > みたいな.
0466デフォルトの名無しさん
NGNGダイアログバーも生成されたので、リソースエディタでエディットコントロールを2つ
追加してコンパイルすると、ダイアログバー上にエディットコントロールが2つあって、
文字の入力等は問題なく出来るのですが、TABキーでフォーカスの移動をしようと
しても、1つ目のエディットコントロールにしか移動しません。
リソースのタブストップには両方ともチェックが入っているのですが、どうすれば
フォーカス移動が出来るようになるのでしょう?
0467デフォルトの名無しさん
NGNGタブオーダーは設定したのか?
0468466
NGNG設定してもだめ。
というか、設定してなくても、普通のダイアログならリソースエディタで貼り付けた
順に初期設定されてるから、意図したとおりにならずとも何がしかの順で移動して
くれると思うのですが、TABキーでは頑なに1つめのエディットコントロールから
離れようとしません。
クリックしてやるとちゃんと2つ目のエディットコントロールにフォーカス移動するん
ですが。
なんか、追加のコードがいるんでしょうか?
0469デフォルトの名無しさん
NGNG普通はいらない。
というか、普通にウィザードでMFCアプリ作ってもダイアログバーなんか付いてこないと思うんだが。
0470466
NGNGプロジェクト作成時にReBarを使う設定にすると付いてくるようです。
んで、解決しました。ダイアログバーに割り当てられてるダイアログリソースの
ControlプロパティがデフォルトではFalseになっていたのでした。
プロジェクト生成時にこれくらいはTrueにしておいてほしかった・・・orz
0471デフォルトの名無しさん
NGNGそれにしても、2003のリソースエディタのプロパティは使いにくいなあ。
無理矢理ダイアログバー作ろうといじってて、なかなかダイアログスタイル設定できずに苦労した。
何だよ「子」って
0472デフォルトの名無しさん
NGNG0473デフォルトの名無しさん
NGNGスレのレベルが下がるので、VisualStudio.NETと.NET Frameworkを
混同している人はカキコを控えて下さい。
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNGウッソー?
機能アップしてるだろ。
例えばCStringはstd::basic_stringのようにテンプレートクラス化されて
使いやすくなってると思う。
0477デフォルトの名無しさん
NGNGCStringはウニとS-JIS混在できるしね
IDEは.NETと共通化したから非共通部分が落とされたね
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNGAPIだけで作っても駄目な物は駄目
0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG複数行で表示したいのですが、可能でしょうか。
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNGC++BuilderXでGUIアプリを作成する場合には
MFCは使えるのでしょうか?
また、フォームエディタは使用できるのでしょうか?
0487デフォルトの名無しさん
NGNG教えて君で申し訳ないです。
調べても調べがつかなかったもので。。
0488デフォルトの名無しさん
NGNGCodeGuruに行くとそういうサンプルが少なくとも二つは見つかるよ。
#つーか、見つけた。
OwnerDrawじゃなくてCustomDrawの手法ならGoogleで国内サイトを探すだけでいろいろ出てくると思う。
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGありがとうございます。
とりあえず、CodeGuruから調べてみたいと思います。
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG「今から始める」という意味が「学習を始める」だったらMFCで良い。
「長大なプロジェクトを起こす」という意味なら.netを考慮する価値はあるかも。
つまりちょこちょこ作って今すぐ広い環境で動かすならMFCだな。
0494デフォルトの名無しさん
NGNGあー。まだ厨房なんで将来的なことも考えていただければ幸いです。
0495デフォルトの名無しさん
NGNGんじゃまず、ハードの基礎やってから、アセンブラ逝け。1年たったらまた恋。
0496デフォルトの名無しさん
NGNG……「アセンブリが解らない香具師のアプリは信用しない」と同じレベルかゴメンorz
0497デフォルトの名無しさん
NGNG知らないやつ見ててないやつ自身は、なんの恐れも不安もない。
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG起動してすかさず他アプリケーションを前面に持って来て、
そのソフトが完全に起動し終わったのを確認してウィンドウをアクティブにすると
フッと、ウィンドウ上のボタンのフォーカスが切り替わる。
細かい事だけど、何やってんだよ (;´Д`) 怖いよ
0501デフォルトの名無しさん
NGNG考えずに、今できることをやって経験を積んでおくことを薦める。先々どうするかは
自分で経験して判断できるようになってから決めればよい。何もできないうちに
後のことを言っても始まらないからね。
現在一般に出回ってるシステム環境や、ツール、学習面での文書のこと考えたら
いきなり.netはやりづらいと思う。どうせ最初は小さいものしか作れないんだし、
何かしら使える機能のあるものを気軽に作って、プログラムすることの手順に慣れ
るのが先だろう。
0502489
NGNG他の言語に移行したくなったんで、.NETかMFCがいいかなーと思ったたけです。
別にJavaやSDKでもいいんですが、アセンブラは必要なんでしょうか?
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNG必要って何のために?
仕事で必要かどうかは内容次第で、
具体的な就職先と配属先が決まらないと何とも言いようがない
けど、そんな理由に引きずられるだけな若手は「うちへ欲しい」タイプじゃない
泥縄方式のおんぶに抱っこで何ができるか甚だ疑問だからだ
言語であろうとデバイスあろうと、
特定のブツに対するマニュアル的な知識は泥縄でも徹底的ならそれでいい
もっと根本的なことで、こういう分野を切り開いていくことに対して
自発的な意思で行動しているか否かが肝心要の核心だ
で、アセンブラの話に戻ろう
アセンブラやってみたいか? 意味ねえと思うか?
おまえが答えるしかないことだ
0506デフォルトの名無しさん
NGNG特定のCPUの、特有の機能を使うとき
例: 特権命令
コードサイズまたは実行速度に定量的な条件があるとき
例: PIC
0507デフォルトの名無しさん
NGNG続き
既にアセンブラベースで進行中のプロジェクト
例: (軍機のため言えません)
0508デフォルトの名無しさん
NGNGそういう意味では最初に学ぶのはDelphi以外が良いと言うことになるのかも知れない。
0509デフォルトの名無しさん
NGNG> 一応Delphiとかは
「とか」ってなんだよ・・・
なんかこういう書きぶり続くとどうでも好きにすればとしか言いようないな
0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNG他のスレで同じことするとスレ違いとかうるさく言われるのにね。
0513デフォルトの名無しさん
NGNG代理発言はしてやらない
0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNG>アセンブラはやってみたくないけど
賛成も反対もする筋合いにないからどっちとも言わないが、
はっきりした意思があるなら邪念は捨てろ
0516デフォルトの名無しさん
NGNGそれはそれですることがあるはずだ
0517デフォルトの名無しさん
NGNGそこはスレが荒れるとこでしょ。やっぱMFCに愛着無いからかね。
0518デフォルトの名無しさん
NGNGそれと、暇つぶしにレスしているだけ
0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNGこちらでおながいします。
MFCを使っているとoperator newをオーバーロード
して、デバッグのときにはメモリリークを検出してくれるので
助かっているのですが、MFCを使用しない場合は
みなさんどうしてますか?
自力でnewをオーバーロードしてるのでつか??
0521デフォルトの名無しさん
NGNG0522489
NGNG父親にCから始めろと言われ、本を買ってくれたのでCから始めました。
他スレとか見てるとMFCの雲行き怪しげなので.NETにしときます。
スレ違いな質問してすみませんでした。
0523デフォルトの名無しさん
NGNGそんなギミックに頼るハメになる前に単体テストしとく
0524デフォルトの名無しさん
NGNGメモリリークを検出するソフトを使う
0525デフォルトの名無しさん
NGNG例えば、VC6のメモリウィンドウは、 VC7ではココにある…etc
最近学習を始めたのですが、VC6のMFC関連のHPを見ていると
どうもVC7と操作性?が違っていて、勉強が進みません。
大変お手数ですが、ご教授をお願いします。
0526デフォルトの名無しさん
NGNGどんなんあるんか教えろや
0527デフォルトの名無しさん
NGNGこれ俺も欲しい
0528デフォルトの名無しさん
NGNGPurify
0529デフォルトの名無しさん
NGNGここのことでつか?
ttp://mikata.curiocube.com/progtips/ch24_newhandler.html
MFC使わなくても…
0530デフォルトの名無しさん
NGNGMSDNには特に記述が無いようですが…
0531デフォルトの名無しさん
NGNGLIBもDLLもシングルとマルチがある
(つまりマルチならクラス全てマルチ)
0532デフォルトの名無しさん
NGNG動かないんですか?
(つりではないです。お願いします)
0533デフォルトの名無しさん
NGNGスタティックリンクすれ
0535デフォルトの名無しさん
NGNGこの一言でわかっちゃうってことは、釣りだろw
0536デフォルトの名無しさん
NGNG1行づつメッセージを出力するためにはどのような手法を使うのが一般的なのでしょうか?
0537デフォルトの名無しさん
NGNGリストコントロールとか
書き込み禁止のエディットコントロールとか
スクロールビューとか
0538520
NGNG>>523
単体テストでリークバグを検出したいのでつよw
>>524-528
やっぱ市販製品でつか...(マニーが...orz
>>529
うーんちょっと違いまつ。メモリ確保失敗というより
リークの検出をしたいでつ。。。
みなさんどうもありがとうございますた。
とりあえず慎重にPGして、ひと山あててBoundsChecker
買うですw
0539デフォルトの名無しさん
NGNG2種類のデータ形式で呼び出すと、最初はうまく動作するんですが
一定時間後に E_OUTOFMEMORY で COleDataObject::GetGlobalData() に
失敗するようになります。GetGlobalData() を2度呼び出すのは
間違ってるでしょうか?
0540530
NGNGありがとうございます。マルチスレッド版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んなもん買わないでも_CrtSetDbgFlag使えばいいんじゃねーの?
0542デフォルトの名無しさん
NGNGあるディレクトリ以下のファイル名一覧を取得したいんですが、サンプルをコピーしてみて、できたのですが。
日本語のファイル名だけ取得できませんでした・・・。
CFileFindって日本語は駄目なんでしょうか?
0543デフォルトの名無しさん
NGNGshiftJISのダメ文字が混じってるだけでは?
ttp://www.kent-web.com/pubc/jcode/
0544デフォルトの名無しさん
NGNGどうやらそのようでした。ありがとうございました!
0545デフォルトの名無しさん
NGNGマルチスレッドのDLLを使えばMFCだろうとCのstrtok関数だろうと全てスレッドセーフになり、
シングルのDLLを使う場合は、スレッドセーフであることが保証されていないので自分で同期取らないといけない、
という理解で良いのでしょうか?
私はてっきりマルチスレッドにするときは何が何でもマルチスレッドDLLを使って、
その上で、スレッドアンセーフなものは自分で同期をとるプログラミングをしなさい、
ということかと思っていました…
0546デフォルトの名無しさん
NGNGどんな使い方でもスレッドセーフになるって、魔法のライブラリかよ。
「バグのないライブラリを使うと、バグのないプログラムになる」が否なのに同じ。
0547デフォルトの名無しさん
NGNGちゃんと同期をとって使っているつもりでも、内部処理や内部エリアで同期がとれていない。
0548デフォルトの名無しさん
NGNGMFCは同期クラス(CMutexとか)以外はスレッドセーフじゃなかった気がする。
心配ならソース見てみれば?
0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNGシングルスレッド用ライブラリ スレッドセーフではない(マルチスレッドでは使用不可)
マルチスレッド用ライブラリ クラスレベルでスレッドセーフ(マルチスレッドで使用可)
同一オブジェクトに対する別スレッドからのアクセスの同期は
同期オブジェクトを使ってプログラマがとる
0553デフォルトの名無しさん
NGNGどーやって接続先、自分のIPアドレスとポート番号を取得できますか?
0554デフォルトの名無しさん
NGNG同期クラスは例外で、オブジェクトレベルでスレッドセーフ。
0555デフォルトの名無しさん
NGNGMFCにシングルスレッド用ライブラリなど存在しない。
シングルスレッド用とマルチスレッド用(スレッドセーフ)があるのはCランタイムライブラリ。
0556デフォルトの名無しさん
NGNGIPだけでなくネームアドレスも使えるだろ?
ポートは使用するサービスによって決まるもんなんだからあらかじめ決めて動作
させるのがネットワーク・アプリ書くときの前提になると思うが。
何がしたいのか、キミのネットワークの仕組みについての理解度がどれくらいか
よく分からないね。
0557デフォルトの名無しさん
NGNG自分の方は GetSockName(), 先方は GetPeerName で取れます。
IPv6 対応はそれぞれ GetSockNameEx, GetPrrtNameEx。
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG接骨院へ
0560デフォルトの名無しさん
NGNGMFC version 7.0 (mfc70.dll) Visual C++ .NET なし
0561デフォルトの名無しさん
NGNGそりゃそうだろ(藁)
0562デフォルトの名無しさん
NGNGCEvent::SetEventの呼び出しを
Win32の生のクリティカルセクションで同期するバカが実在したりするから
世の中は面白い。
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNGCDialogBar上にボタンを配置して、それを条件に合わせて、
有効無効の変更を行いたいのですが、何処で行えば良いでしょうか?
MFCのソースを追っている限りでは、コマンドハンドラが存在すると常に有効に
なってしまうように見受けられますが・・・
0565デフォルトの名無しさん
NGNGコマンドマップに EnableCommandUI だかなんだかを追加するんじゃなかったかな。
0566デフォルトの名無しさん
NGNGCDialogBar m_wndDlgBar;
....
CButton *pBtn=(CButton *)SubclassDlgItem(IDC_BUTTON1, &m_wndDlgBar);
pBtn->EnableWindow(FALSE/TRUE);
では、だめかな?
0567564
NGNG>>566
返答有難う御座います
CMainFrameのコマンドマップに
ON_UPDATE_COMMAND_UP( IDC_BTN_XXX, OnUpdateBtnXXX )
を手動で入れてそこで処理させることで実現できました
0568デフォルトの名無しさん
NGNGすみません、解説お願いします。
(理解できてません…)
0569デフォルトの名無しさん
NGNG1.「MFCで提供されているクラス、同一のインスタンスへのアクセスはスレッドセーフではない」という話をどこかから聞きつける。
2.そうかそうか、と言って、以下のようなコードを書く
とあるスレッド
EnterCriticalSection( &csEvent1 );
event1.SetEvent(); // スレッドセーフじゃないのでクリティカルセクションで保護
LeaveCriticalSection( &csEvent1 );
別のスレッド
EnterCriticalSection( &csEvent1 );
HANDLE hEvent = (HANDLE)event1; // スレッドセーフじゃないのでクリティカルセクションで保護
LeaveCriticalSection( &csEvent1 );
WaitForSingleObject(, INFINITE);
実際にはもちろんこんな必要はない。
0570デフォルトの名無しさん
NGNG自分でロジック組む以外ないですかね?
0571デフォルトの名無しさん
NGNG0572デフォルトの名無しさん
NGNG君の言うロジックの定義は?
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNGそこのユーザーエージェントを制御したいのですがどうすればよいでしょうか?
教えてください
0580579
NGNGどなたかヒントください
0581デフォルトの名無しさん
NGNG0582570
NGNG無理っぽいので自分で作ります。
0583デフォルトの名無しさん
NGNG応援してます(はぁと
0584570
NGNG応援されたので作って見ました。一応、動いてるけど、これでええのかな?
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);
0585570
NGNG0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNGオレはわからないんから答えられないけどさ
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNGCWebBrowserではIEのコンポーネントを使っているので、
どうしても変更したければSDKベースで作り直して下さい。
0590デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/library/default.asp?url=/workshop/browser/WebBrowser/WebBrowser.asp
0591579
NGNGNavigateのPostDataで送るデータを工夫すれば
なんとかなりそうなのですが・・・
どこかに参考資料ないですかね?(できる限りは調べたのですが)
よろしくおねがいします
0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNGVBやC#がどんな文字を扱っているか調べた後、CString::TrimXXXX 使いなさい。
0595デフォルトの名無しさん
NGNG先生! 海栗は嫌いでつ。
0596579
NGNGいろいろ系統の似たサンプルはあるんですが、
User-Agentを制御するサンプルはありませんね
0597デフォルトの名無しさん
NGNGUrlMkSetSessionOption()
URLMON_OPTION_USERAGENT
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNGCodeGuruのソースのライセンスはどのようになっていますでしょうか?
サイトの方をみたのですが、それらしき文章がないように思い受けます。
スレ違いかもしれませんが、ご教授いただければとおもっております。
0604デフォルトの名無しさん
NGNGあれは作者がそれぞれいるだろ
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG海栗=うに=海栗コード
0607デフォルトの名無しさん
NGNGで質問なんですけど、xpのタスクバーは非アクティブのとき非表示に出来ますが
どうやって制御すればいいんでしょう?教えてください
0608デフォルトの名無しさん
NGNG0609デフォルトの名無しさん
NGNGタスクバーに常駐させるだけで良いのでは?
タスクバーが非アクティブのとき非表示になっても何も困らないのでは?
0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNGつまり「アクティブのまま」なんじゃないの?
0612271
NGNG0613デフォルトの名無しさん
NGNG保守乙
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNGスレ違い乙
0616デフォルトの名無しさん
NGNG0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNGAPIを直接使わずにMFCだけでAPIでできることのすべてを代用することができますか?
0622デフォルトの名無しさん
NGNG寡聞にして「すべて」を代用できるかどうかは知らんが、
少なくともAPIの知識が必要になるメンバ関数は少なくない。
MFCを使いつつ、その先にはAPIがあることを念頭に入れておくのがいいと思う。
0623デフォルトの名無しさん
NGNG> 初心者なんですが、今MFCからC言語始めてるんですが、
「初心者」って言っても色々あるだろうが、そんなことできるんだろうか?
と素朴な疑問。
Cの基礎的な書式とC++のクラス概念くらい学んでからWindowsプログラミング
に移行した方が良いっていうか、そうじゃないと普通無理だろっていうか・・・。
0624デフォルトの名無しさん
NGNGなんで君たちはそこには言及しないんだい?
という訳でAPIでMFCの代わりは出来ますが、MFCでAPIの代わりは出来ません。
0625621
NGNG全部自分でやるAPIのほうがわかりやすくて魅力的に見えてきました・・・。
この関数できたらAPIやってみようと思います。
>>623
プログラムの勉強を始めて今2週間くらいです。
C言語の文法はなんとなくわかったのですが、コードでCaptionを変える方法で躓きました。
MFCはAPIをラップしたものだから同じ機能があると思ってMFCメインにしようと思ったのですがVCが自動的にやってくれすぎて一向に構造がクリアにみえてきません・・・。
MessageBox関数と同じ機能をもつ関数を自分で作るにはどうすればいいんでしょうか。
と思っていたらなにやらできたようです。
MSDNわかりにくっ(;´Д`)
>>624
なるほど。
APIのほうが優れもののようなのでキリがついたらそっち勉強しようと思います。
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNG省くための便利ライブラリなんだし、技術がないならむしろMFCを積極的に利用した方
が楽ができるし良い物を作れる。大抵のことはMFCでできてしまうんだし。
0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNGたしかにかなりの人がMFCに挫折するね
0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNGソースおっても、膨大すぎて意味分からん。
ウィザードでつくったものを、どう変更すりゃいいのか、意味不明。
C++とAPI知ってんのに、意味分からんマクロとか大杉。
すでにJavaに移行しました。Java分かりやすくてサイコー!!
0634デフォルトの名無しさん
NGNG漏れは、WTLにいったよ。
2005ではMFCはどうなるんだろう〜?
0635デフォルトの名無しさん
NGNG覚えるのにWin32API以上に労力が必要なのは痛いね
0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNGMFCも使いやすいライブラリになっていただろうに。
0641デフォルトの名無しさん
NGNG0642デフォルトの名無しさん
NGNGってか、厨房の言語の宣伝とかいらねぇ。
Del厨もJava厨も巣に帰れと(ry
0643デフォルトの名無しさん
NGNG愚痴はマ板へ。
言語厨は厨用スレへ。
ここはどんな理由にせよMFCを使う人のためのスレ。
0644デフォルトの名無しさん
NGNGオブジェクトレベルでスレッドセーフでないということは分ります。
同一インスタンスのものを複数のスレッドから触るときは排他がいるということですね。
クラスレベルでもスレッドセーフでないと言ったらどうなるのでしょう?
たとえばそれはあるクラスがstaticなメンバなどを使ってそのクラスの共有の
情報をもっていてそれが複数のスレッドから触られるとおかしくなるような設計である。
といったことですか?
0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNGそういうことだと思う
0647デフォルトの名無しさん
NGNGありがとう!
0648デフォルトの名無しさん
NGNG良き方法があればご教授いただきたい。
やはり、コーディングするしかないのでしょうか?
0649デフォルトの名無しさん
NGNG時間軸として逆じゃね?
ARM以前のC++の貧弱な表現力で作ったらあーなったのがMFCで、
ある意味、今のC++に至る過程でMFCは反面教師として機能していた。
0650デフォルトの名無しさん
NGNGCObArrayなんかもなかっただろうし。
0651デフォルトの名無しさん
NGNG無知登場
文句は受け付けません
ググレ
0653デフォルトの名無しさん
NGNGない爪を隠そうとしなくてもw
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNGMFCでアクセスのDBから検索するプログラムつくりました。
一緒にアクセス(のフォーマット)のDBを配布したいんですけど
ライセンスは大丈夫ですかね?
0656デフォルトの名無しさん
NGNGテンプレートを作って
CMainFrameでCDialogBarのオブジェクトを用意
コンストラクタでCreateを呼ぶ
でコンパイルは通りますが実行しようとすると
"0x77f5284"の命令が"0x00000000"のメモリを参照しました。
メモリが"written"になることはできませんでした。
と出て実効できません。
とりあえずダイアログバーを表示するだけの場合でも他に何かやらなければならないことがありますか?
0657デフォルトの名無しさん
NGNGCMainFrameのコンストラクタで、CMainFrameを親としてCDialogBarをCreateしてる
というオチだろうか?
0658デフォルトの名無しさん
NGNGコンストラクタ内の auto 変数として CDialogBar オブジェクトを定義している
というオチだろうか?
0660656
NGNGコンストラクタではなくMainFrameのOnCreateでCreateを呼んでいます
CDialogBar オブジェクトはちゃんとCMainFrameクラスのメンバとして宣言していますし
>>659のサイトの通りにやっても同じエラーが出て実効できません
0661デフォルトの名無しさん
NGNGまず落ちている個所を特定しる。
0662デフォルトの名無しさん
NGNGUNICODEビルドの場合、std::stringの派生じゃ困ると思う。
0663デフォルトの名無しさん
NGNGstd::basic_string<TCHAR>
0664デフォルトの名無しさん
NGNGそんなことみんな知ってるよ
0665デフォルトの名無しさん
NGNGちゃんと話がかみ合ってると俺は見ているが・・・
この後の展開次第かもな
0666デフォルトの名無しさん
NGNGVC++6.0はちがったとおもったけど
0667デフォルトの名無しさん
NGNGそそ、C6とC7で互換性がなくて怪しげなソースが引っ掛かり捲くり。
C6は兎も角、C4の頃はまともにテンプレートが使えない状態だったし。
0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNG爆弾? 新型でてるのか??
0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNG実行途中で変えるとか起動時に変える
というのではなく、デフォルトを変えたいと言うか…
0673デフォルトの名無しさん
NGNGリソースストリングテーブルのIDR_MAINFRAMEに
・SDIなら先頭から\nまでの文字列
・MDIなら文字列そのもの
がタイトルバーに表示されるような気がした。
0675デフォルトの名無しさん
NGNG大サービスついでに言っとく。
ttp://www.ne.jp/asahi/hishidama/home/tech/vcpp/caption.html
0676デフォルトの名無しさん
NGNGリンク先のページで、動的に変える場合は SetWindowText とか使えとなっているけど、
CFrameWnd::SetTitle で変えるか、GetTitle をオーバーライドして変えておかないと
不意に元に戻されて「MFCは陰で何やってるかわかんない・・・APIだけの方がラクぽ」
ってことになるので注意。
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG_TCHAR
tchar.hが_UNICODE/_MBCSが定義されているかで切り替える。
TCHAR
windows.h(の中のwinnt.h)がUNICODEが定義されているかで切り替える。LPCTSTRなどの仲間がいる。
0679デフォルトの名無しさん
NGNGMFCでSDIのプログラムを作っています。
ビューの基本クラスをCTreeViewにしています。
フレームのメンバ関数から、ビューのメンバ関数を使えずにいます。
ビューの基本クラスがCViewの場合、ポインタをGetActiveViewで取得でき、
そこからメンバ関数を使えると思うのですが、
自分のプログラムの場合、CTreeViewなので、GetActiveViewの戻り値を
CTreeViewにキャストして関数を使ったところ、コンパイルは通るのですが、
アドレスがおかしいなどのエラーがでました。
どなたか知恵をかしてください。
0680デフォルトの名無しさん
NGNGまずはデバッガで GetAvtiveView が返してきたものを見てみたら?
0681デフォルトの名無しさん
NGNGそりゃCTreeViewにキャストしたらCTreeViewまでのメンバしか使えないでしょ。
0683デフォルトの名無しさん
NGNGエクスプローラの超簡易版みたいなものを作っています。
ツリービューでの表示と展開はできるようになったのですが、
たとえば展開しているフォルダに別アプリなどで新しいフォルダ
を作成した時、すぐにエクスプローラの表示に反映させるには
どうすれば良いでしょうか?
MFC6.0です、よろしくお願いします。
0684デフォルトの名無しさん
NGNGFindFirstChangeNotification
0685デフォルトの名無しさん
NGNGありがとうございます!
0686デフォルトの名無しさん
NGNG回答ありがとうございます。MFCだと_TCHARがよさそうなので_TCHAR使います。
0687デフォルトの名無しさん
NGNG監視も行いたいと考えています。とりあえず考え付くのは
CWinThread::PumpMessage内のGetMessageの前、又は
OnIdleにてMsgWaitForMultipleObjectsを呼ぶ方法です。
CWinThread::RunのoverrideにしてもOnIdleのブロックに
しても余り一般的とは思えず躊躇してます。
似たような事をやったことある人がいれば意見をお願いします。
0688デフォルトの名無しさん
NGNGAfxBeginThread()でスレッドを作り、その中でシグナルイベント待ち。
ユーザーインターフェーススレッドに対して通知をしたい場合は、
WM_USER以上のユーザー定義メッセージを送信する。
受け取る側でもメッセージをユーザー定義メッセージ受信できるようにしておく。
0689デフォルトの名無しさん
NGNGプラグインとはどうやって作ればいいのでしょうか?
0690デフォルトの名無しさん
NGNGsusieプラグインで練習してみれば?
0691デフォルトの名無しさん
NGNGWM_USERじゃ拙いって。WM_APPを越える値がお勧め。
>>687
私のアプリでは、タイマーでイベント監視をした。
イベントの場合は落とし穴がいろいろあるから気をつけてや〜
0692687
NGNG別スレッドだとスレッドスイッチが多くなるのが少し
気になります。
>>691
タイマーだと処理周期が頭打ちとなってしまいそうです。
基本的には688の方法でもパフォーマンス的にはOK
だと思いますが、MsgWaitForMultipleObjectsを使えば
監視するだけのスレッドを立ち上げずにすむかなぁと思い
質問しました。
0693デフォルトの名無しさん
NGNGメニューのプロジェクトへ追加、コンポーネントとコントロール・・を使って追加すると
ラッパクラスが出来ると思うのですがこれを使うことは出来るのでしょうか?
このクラスのインスタンスを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処理速度が問題になるなら、イベントでの同期は検討しなおした方がよくない?
イベントはそれ自体早くないと思うし、発行側は処理側が処理したことを知りえないから
何らかの方法で返信しないといけなくなるしね。
0695デフォルトの名無しさん
NGNG質問者の分際で、評論家・審査員を気取ってんじゃねーよ、クソが
0696デフォルトの名無しさん
NGNG単にスキル不足なだけちゃうんかと。
0697デフォルトの名無しさん
NGNGお前が偉そうに言うな
0698デフォルトの名無しさん
NGNG何故こんなこと思ったかというと
CString& func(CString& str)
{
CString tmp;
// 処理
return str = tmp;
}
returnのところで
error C2440: 'return' : 'const class CString' から 'class CString &' に変換することはできません。(新しい動作 ; ヘルプを参照)
変換で修飾子が失われます。
と出たからです。
std::string::operator=の戻り値にはconst付いてないのに、CStringに付いてる意図はなんでしょうか?
0699デフォルトの名無しさん
NGNGCStringが作られた頃のC++は代入演算子の結果がCと同じく右辺値だったからじゃない?
それでCStringもそれに合わせてoperator =()の戻り値を値渡しに……するとオーバーヘッドがかかるんでconst参照にした、って具合。
0700デフォルトの名無しさん
NGNGWTLって知ってる?マイクロソフトのサイトからダウソできるよ。
WTLのCStringだと、constじゃないよ。
WTL::CStringで解決。終了。
0701デフォルトの名無しさん
NGNG>意図はなんでしょうか?
って聞いてるんだから、その答えじゃ解決になってませんよっと。
ちなみに、手元にあるVer7.1(build 3340)ではconstで
最新のWTL7.5.4196.0 では付いてませんね。
0704デフォルトの名無しさん
NGNG0705yara ◆SSLypP3Luo
NGNG0706デフォルトの名無しさん
NGNGhttp://www.codeproject.com/miscctrl/simplebrowserformfc.aspを参考にして
メモリ上のHTMLを書き込むと言うプログラムを作成いたしました。
このプログラムはCListView上のキーダウンのタイミングでCHtmlViewを書き換えるものです。
これは上手くいったのですが、問題が出てきてしまいました。
CHtmlViewをクリックしたあとに、CListView上にクリック等で戻りキーダウンすると
FocusがCHtmlViewに移動してしまうのです。
このときにメモリ上のHTMLファイルを書き込んでおりまます。
どうやら、HtmlViewをクリアする所あたりで問題が起きているようなのですが。
また、CHtmlViewをクリックを一度もしない場合においては問題なく動いております。
SetFocusでCListViewにセットし直しても、上手く動かないようです。
何か良い案、参考情報へのリンクなどお知りでございましたらご教授ください。
0707デフォルトの名無しさん
NGNGSetActiveViewとかどうよ?(試してないが)
ついでに
>お尻でございましたら
「ご存知でしたら」じゃね?
0709デフォルトの名無しさん
NGNGC○○ViewのOnInitialUpdateで
CTabCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 200, 80), this, 100);
を呼び出すと、SDIだと上手くいったんですがMDIでは何故かタブが生成されません。
エラーが出る訳でもなく、thisをGetWindow(GW_CHILD)に変更するとMDI子ウィンドウに生成されるので、
指定するウィンドウか生成するタイミングが間違っていると思うのですが色々試しても分かりません。
原因の分かる方、教えて下さい。
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGコンボボックスのエディットコントロールでテキストを変更した場合、OnCbnEditchangeXXXXが呼ばれますが、
このエディットコントロールのテキストの内容を取得する方法を教えてください。
0712デフォルトの名無しさん
NGNG「テキストの内容」ってなんだ?
GetLBText()じゃないの?
つーかリファレンスでメンバ関数のチェックぐらいしたんだろうな?
0713デフォルトの名無しさん
NGNG失礼しました。
誤)テキストの内容
正)エディットボックスの内容
その関数だとリストボックス内のテキストです。
エディットボックス内のテキストを取得する方法が見つかりません。
0714デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNGIEコンポーネントを使ってネット上からhtmlファイルを取得し、
解析して保存したいのですが、
ブラウザ画面を表示させたくはありません。
IEコンポーネントのうちURLからコンテンツを取得する機能と
htmlコンテンツを解析する機能を使いたいのですが
どのようにすればよいのでしょうか?
0717デフォルトの名無しさん
NGNG「解析」というのが何を指しているのか分からないね。
IEコンポーネントを使うって書いてあるけど、ブラウザ・エンジンを使うってのは
普通レンダリングさせるためであって、ファイル内容をHTMLコードとして見る
だけなら必要ないことのはずだが?
0718716
NGNGレスありがとうございます。
> 「解析」というのが何を指しているのか分からないね。
テーブルで表示されてる表などを整形してリスト表示したり
したいです。
> IEコンポーネントを使うって書いてあるけど、ブラウザ・エンジンを使うってのは
> 普通レンダリングさせるためであって、ファイル内容をHTMLコードとして見る
> だけなら必要ないことのはずだが?
ごもっともです。
・URLからhtmlコードを簡単に取得できそう。
・IE対応のページを確実に解析できそう
というのが理由です。
htmlの解析という視点に立つと他の手段はあるのでしょうか?
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNGそうです。
でもXMLパーサーでは解析できませんよね?
一応試して見ましたができなかったので
IEコンポーネント使えば確実だろうと思いました。
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG中身をデータとして扱いたいならCHttpXXX系やCAsyncSocketなんかを使って
ファイル・データをもってきて自分で使いたいように加工するもんだと思う。
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNG自分でparseしたくないって話だっただろ。
GetHtmlDocumentでドキュメントインターフェイスの取得できるし。
0725デフォルトの名無しさん
NGNGIEコンポっていうか MSHTML っていうのが MS の html エンジン。
IE も WebBrowser Control もコレ使ってる。
使い方のサンプルは以下にあるよ。
データを持ってくるところは自分でやることになるような気がするけど。
http://msdn.microsoft.com/archive/en-us/samples/internet/browser/walkall/default.asp?frame=true
0726720
NGNG>> 721,725を見ましたが
この二つの組み合わせでうまくいきそうです。
感謝しています。
0727初心者D
NGNGOKを押したら、その値を元にCPenの絵が動くっていう
ソフトを作ってます。
ダイアログを表示するのはクラスCxxxAppに、
CPenで書かれた絵はOnDrawじゃなくCxxxViewクラスの中にpublic:として
HogeDraw()(OnDrawじゃないっす)を作ってあります。
ダイアログの関数に
if( Hoge.DoModal() == IDOK ){
クラスCxxxViewのメンバ関数HogeDraw(ダイアログの値を引数にする)
}
としたいのですが、どう記述すれば良いのですか?
参考になりそうなサンプルとかあったら教えてください。
対処できずにはや3日ほど経ちました…
0728& ◆RdmUjfVKqQ
NGNGCxxxViewのHogeDraw(引数あり)を使いたいんですが、
どう変数を宣言すればいいのか、どうポインタを渡せば良いのか
分からないってことです。
すいません、お願いします。
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNG再質問します。
677 名前:デフォルトの名無しさん :04/09/09 22:52
ライブラリに依存する質問になってしまいますが、MFCのCAsyncSocketのOnXXX()は、
どういう仕組みで呼び出されるのでしょうか?
もし、メッセージポンプを経て呼び出されるのなら、OnXXX()の中では長時間の処理が
出来なくなりますが、皆さんどう対処しているのでしょう?
678 名前:677 :04/09/09 23:38
ソース見てみました。
カレントスレッドのメッセージポンプを利用するみたいですが、あってますか?
もしかしてスレ違いでしょうか?
0733732
NGNGこれを利用すればいいのでしょうか?
0734デフォルトの名無しさん
NGNG処理をスレッドに配置してスレッド起動をして、そのままメッセージハンドラを抜けてしまえばいいんじゃない?
ってか何をするのかによる。本当に長い計算をするのならスレッドにすればいいと思う。
何かを待つのなら・・・何を待つのか聞きたい。
0735732
NGNG例えば子プロセスの終了を待つとか。
0736732
NGNGソケット側のちょっとした挙動の変化でGUIを止めたくないのです。
こういう要求って変ですか?
0737デフォルトの名無しさん
NGNGそのスレッド内部でWaitFor系APIで子プロセスの終了イベントを待つ。
(たぶんその子プロセスのハンドルかなんかがそのままイベントとしてWaitできると思った。)
そんで、WaitForSingleObjectを抜けたらメインスレッドにメッセージをポストしてスレッドはそのまま終了。
というのはどう?
0738デフォルトの名無しさん
NGNGおそらくそれが正当な方法なんでしょうね。
Microsoftのサンプルもそういう形が多いです。
ところで、複数のサーバが合わさった形のプログラムはどうインプリメントするべきなんでしょうか?
たとえば、HTTP、FTPなどが組み合わさっているようなものです。
もし、あるサーバで異常が起こった場合、タイムアウトなどによって回復されるまでの期間
GUIが重くなる事態は避けたいと思います。
各サーバごとにUIスレッドを分けるといいのかな?などと妄想しましたが、
普通はどうするものなのでしょうか?
HTTP、FTPというのはあくまでもたとえです。
0739デフォルトの名無しさん
NGNG0740ディフォルトの名無しさん
NGNG動作しないなんてあるのでしょうか?
日本語版や英語版のWINDOWS環境では問題なく動作していたんですが
ドイツ版のWINDOWSでは動くPCと動かないPCが出てきました
動かないPCは、コンストラクション後にInitdialogに入らずにそのまま、
そのダイアログが終了してしまうという現象でした。
このようなことってあるんでしょうか?
0741デフォルトの名無しさん
NGNGプロセス間通信にもソケットを使おうとしています。
俺は異常でしょうか?
0742デフォルトの名無しさん
NGNGワーカスレッドでバークレーソケットを使うなら
UIのスレッドとは別にサーバAとサーバBを別々のワーカスレッドにして
おのおのでソケットを作ってlistenしたりすると思う。
そしておのおののサーバスレッドはイベントをUIに通知するためにPostMessageして
メインスレッドと交信する。もしどっちかが死んだり固まったりした場合でリスタートしたいなら
仕切りなおしの同期の処理を設計する必要があるでしょう。
0743デフォルトの名無しさん
NGNG実は、そういう形で作っていたのですが、非同期に切り替えることにしました。
以前は、各ソケットにスレッドを割り当ててブロッキングしていたのですが、
非同期にするに当たってATLあたりからメッセージポンプをいただいて
自前のソケットクラスを拡張するか、MFCを使うか考えました。
そして簡単そうなMFCを使うことにしたわけです。
一つのプロセスでUIスレッドを複数使うのはあまり一般的ではないのでしょうか?
0744デフォルトの名無しさん
NGNGCWinApp派生::InitInstanceでDoModal呼ぶ前に抜けるコードパスも存在する場合がある。
ソケットを使うための初期化処理(Wizが自動インプリメント)に失敗したとか。
0745デフォルトの名無しさん
NGNG別に普通だけど?
0746デフォルトの名無しさん
NGNG素直とは言えない作りに驚きました。
これだったら、自分で作り直したほうがいいのではないかとさえ思うのです。
皆さんはどう思いますか?
0748デフォルトの名無しさん
NGNG既存のものの問題がもしブロッキングとかだったら正しくselectを使うなど
すれば回避できると思う。しかしそのブロッキングの解決策としてCAsyncSocketを使うのは
結局同じ問題に到達するかもしれない上に変なアーキテクチャのために振り回されるかも。
0749デフォルトの名無しさん
NGNGやった分には責任を持たなくちゃいけないことになる。それを踏まえてどこまで
自分で「できる」のか判断して決めるしかないのでは?
0750デフォルトの名無しさん
NGNGOnXXX で(自らなにか)時間のかかる処理をするなら、
非同期でソケットを使う利点はまるでないと思うけど。
>ソケット側のちょっとした挙動の変化でGUIを止めたくないのです。
ちょっと状況が想定できないけど、どんなときにそういう問題がおきますか?
0751デフォルトの名無しさん
NGNGDDXでぐぐれ
0752デフォルトの名無しさん
NGNG0753デフォルトの名無しさん
NGNGCxxxViewクラスのポインタをグローバル変数かどっかに保存しておけばよろしいかと。
0754デフォルトの名無しさん
NGNGビュークラス内からダイアログを起動すればいいだけの話でしょ?
0755デフォルトの名無しさん
NGNGビュークラスにメッセージ飛ばして、その先でHogeDraw()を実行する。
WM_APPなどでググってみれ。
ダイアログの値を渡す方法はいくらでもある。
グローバル変数でもCxxxAppのメンバ変数でも良し。
そのときはHogeDraw()はpublicじゃなくてもオッケ。
0756初心者D
NGNG皆さんありがとうございます。
結局、>>754さんのやり方でやりました。
CxxxViewクラスの中でメニューの項目からダイアログを出すっていう
関数を作ったのがなんか「?」って感じになってますが…。
>>755さんの
>ビュークラスにメッセージ飛ばして
をもうちょっと勉強してからやってみます。
勉強し直してきます…。
0757デフォルトの名無しさん
NGNGIEでもFFFTPでも挙動がおかしいときがありますよね?
操作を受け付けない時間が有りますよね?
自分の作るプログラムがそういう挙動を示さないとは思えないのです。
0758デフォルトの名無しさん
NGNG>操作を受け付けない時間が有りますよね?
…ないと思われ。OSがWin9xとか。
0759デフォルトの名無しさん
NGNGNT系でも同様だよ。
「操作」の定義があまりにもシェル寄りだね、その見方だと。
0760デフォルトの名無しさん
NGNG>>>755さんの
>>ビュークラスにメッセージ飛ばして
>をもうちょっと勉強してからやってみます。
せっかくMFC使ってるのに、そんな面倒なことしなくてもよし!
単に View にそのメニューのコマンドハンドラを追加すればいいだけだよ〜。
0761デフォルトの名無しさん
NGNGそれは非同期ソケットの問題じゃないと思うけど。
漏れの経験ではそれなりに非同期っぽく作ったネットワークアプリが無反応になるのは、
gethostbyname を不用意に呼んでブロックしているケース、socket が connect / shutdown中で、
他スレッドから close しても停止できないケースが大半なんじゃないかな。
0762デフォルトの名無しさん
NGNGcloseで停止できなかった場合に無反応になるのだとしたら、
何故無反応になるのですか?
0763デフォルトの名無しさん
NGNG>>761が正しいかどうか知らんが、デッドロックが起きてるとかでは?
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNGprotectedになるのは何故ですか?
特にデストラクタがそうなる理由がわかりません。
Microsoftのサンプルは全てpublicになっていました。
よろしくお願いします。
0767デフォルトの名無しさん
NGNGスレッドを少なく出来る部分に魅力を感じます。
Windowsでもpoll出来ますか?
出来るならそっちを使いたいです。
よろしくお願いします。
0769デフォルトの名無しさん
NGNG「何故」について考えることに意味があるかどうかだ。
しょせん同じ人間が用意したウィザードだぞ。
答えをいうなら、ウィザード作成者が徹夜明けだったからとしか答えようがない。
0770デフォルトの名無しさん
NGNGバグですかね?
たぶん意味があると思うのですが。
は!
わかったかもしれない!
もしかして、CWinThreadを継承したクラスは自分をマネージしないといけないんですか?
だとすると納得いく。
ちょっと実験してみます。
0771デフォルトの名無しさん
NGNG専門用語?それともカッコイイっぽいから使ってるだけ?
0772デフォルトの名無しさん
NGNGカッコイイから使ってみました。
0773デフォルトの名無しさん
NGNG動的生成されることを前提にしてるからprotectedにしたほうが安全だと想ったんじゃない。
IMPLEMENT_DYNCREATEとかCRuntimeClassあたりで。
0774デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG「コイツ、話を誤魔化してる。もしくは何も判ってない。」と思われるだけ。
0777デフォルトの名無しさん
NGNGはい。誤魔化していました。
素直にわかりませんって書けばよかったです。
>>773
そうみたいです。
でも、デストラクタはどうしてなんですかね?
破棄するときどうなるのだろう?
0778デフォルトの名無しさん
NGNGnew/deleteで生成すると書いてあったか?
0779デフォルトの名無しさん
NGNG0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNGマスクパターン
0783デフォルトの名無しさん
NGNGスレッドを自殺させたあとにメモリーをチェックするとリークしていると報告されるのですが、
これは何故なんでしょう?
0784デフォルトの名無しさん
NGNGTerminateThreadを使ったのか?
0785デフォルトの名無しさん
NGNGPostQuitMessageしてみました。
0786デフォルトの名無しさん
NGNGだれがどのタイミングで?
0787デフォルトの名無しさん
NGNG根本的に間違っているような母艦
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNGMFCよくわかんないけど (じゃあなぜこのスレにいるんだつーツッコミは禁止だ)
Win32APIレベルで考えると、ボタンを押されたら親ウィンドウに
WM_COMMAND をポストされるよな。BN_CLICKED と コントロールID と
ご丁寧にボタンのウィンドウハンドルまでつけて。
コントロールID やウィンドウハンドルで選別すればヨロシけれ。
もれ普段MFC使わずにナマで書いてるけど、いちいちコントロールID設定するの面倒なんで
ウィンドウハンドルで選別してるw
究極のDQNグラマとはもれのことよw
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNGMFCのトリックをパクったりするのが有効だからだろ。
0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNGっていうか、マウス操作している人が一番良く知っているはずだが。
0795デフォルトの名無しさん
NGNGあるメニューの項目で、UPDATE_COMMAND_UIメッセージの
イベントハンドラを(CxxxDlgクラスへ)追加し、その関数内で、
pCmdUI->SetCheck(1);
と記述したのですが、チェックが付いてくれません
同じ事をシングルドキュメントでやると、上手くいくのですが・・・
ダイアログベースでメニューのチェックを制御するには
なにかコツがあるのでしょうか?
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNGスレッド自身が任意のタイミングで。
0798740
NGNGFLEXGRIDを使用していたのですが、OCXファイルはあったのですがClassIDの方に登録
されて居なかったので、その段階でダイアログが開かずに落ちていました。
このClassIDってどのようにして登録すればよいのでしょうか
>>742
ありがとうございます
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNG"\r\n"
0802795
NGNG0803デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNGfuck you 股来た 目がビーチクでターンエーがオメコで括弧が足
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNGどちらでやったらより良いですか?またなぜ、そのほうがより良いといえるのですか?
0808デフォルトの名無しさん
NGNGON_REGISTERED_MESSAGE
もしくは
ON_MESSAGE
ハンドラで
0809デフォルトの名無しさん
NGNGソフトラインブレーク で調べてみんさい
0810デフォルトの名無しさん
NGNGいくらでもたたいてくれて結構です
画像を加工して保存がしたいのですが
HDCで保持するのとDIBデータを扱う2つがあるのですが
この2つについての、違いをご教授願いたいのです。
よろしくお願いします
0811デフォルトの名無しさん
NGNG推奨スレ
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変数を持たせる方法というのがあるそうです。
ただ、こういった処理をしたい場合、これが定番な書き方なのでしょうか?
もうちょっとスマートなやり方がありそうな気がするのですが。。
0813812
NGNGスピンボックスから自動関連付けしているのが原因っぽいです。
関連付けを外したらダイアログは普通に表示されました。
0814デフォルトの名無しさん
NGNGスマートかどうかは知らないけど、とりあえずピンポイントその状況だけ避けるなら
if (::IsWindow(m_EditX..m_hWnd)) とかで判定する手もあると思う。
0815812
NGNG正直、それを考えてましたw
Assertionがその条件で発生してるんですが、
IsWindowの意味自体があやふやで自信がありませんでした。
メンバ変数を増やすよりはマシってことで、それでやらせていただきます。
0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNGwndfrm.cpp にあるように、メニューの UPDATE_COMMAND_UI を処理するのは CFrameWnd クラス。
( CFrameWnd::OnInitMenuPopup を参照 )
よってダイアログベースの場合自分で似たような処理を書くか、単純に自力でメニューアイテムをSetCheck すること。
あるいは単に SDI で FormView 使うって手もある。たぶんこっちのほうが簡単。
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNGMFC的には if (m_EditX.GetSafeHwnd()) だな。
0820デフォルトの名無しさん
NGNGGetSafeHwndはポインタ経由で this が 0 のときにもアクセス違反にならないというだけの関数。
(要は return this ? this->m_hWnd : 0 ってな実装)。
ポインタでもないメンバ変数に使うのは無意味。
m_hWnd って直中身見るのは行儀悪くてイヤーンっていう非MFC人なら常時使ってもいいかもね。
0821デフォルトの名無しさん
NGNGってあまり使ってませんかそうですか
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNGなくなりません。
MFCがテンプレートになる可能性があるだけでしょう。
その場合、ClassWizardなどのIDE機能の変更があると思います。
0825デフォルトの名無しさん
NGNG0826デフォルトの名無しさん
NGNG少なくとも現行OS(winXP以下)が現役で動いているうちは確実に使えるだろ
0827デフォルトの名無しさん
NGNGMSがOSを出し続ける限り使えると思う。
それ以前に、MSにとってMFC/ATLをなくすメリットは何かあるの?
0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNGこんどこそ驚きのプゲラ仕様がないライブラリを求む
0830デフォルトの名無しさん
NGNG0831デフォルトの名無しさん
NGNG大量(最大1万件)のデータをリストビューに表示させるのですが、一番下のアイテムを選択表示させデータの流れる様子を、画面に表示させたいのです。
SetRedrawを用いてInsertItemを行っています。1万件を超えるとDeleteItemを用いて先頭のアイテムを削除しています。現在表示速度が遅いのかデータが溜まっています。さらに画面がちらついてしまいます。
画面のちらつきはOnEraseBkgndを用いて、描画を省いているのですが上手く画面のちらつきがおさまりません。
良い方があれば教えてください。
0832デフォルトの名無しさん
NGNGリストビューで表示が間に合わないような頻度で書き換わるデータを本当にリストビューで
1万件もためて表示する意味があるのかという疑問が・・・。
0833デフォルトの名無しさん
NGNG仮想リストビューを使いなさい。
0834デフォルトの名無しさん
NGNG大量データを扱う場合は仮想リストコントロールを使うというのが定石だけど、
「流れる様子」とか言ってあんまり頻繁に更新する場合は頻度によって多少
のちらつきが出るかも。
0835デフォルトの名無しさん
NGNGコモンのリストコントロールなら必要ないと思うけど。
描画に必要なインデックス情報しか処理要求してこないようにできたはず。
MFCの場合は知らないけど。
0836835
NGNGWM_PAINTを送るだけでいいから楽だよ。
LVN_GETDISPINFOとか、LPSTR_TEXTCALLBACKでググって見れば?
MFCでも逝けるはず。試してないけど。
0837835
NGNGWM_PAINT送信での更新だと、InvalidateRect()もあらかじめ必要かも。
0838デフォルトの名無しさん
NGNG尤も、ログ機能なんで更新は最高でも1秒に一回程度。
有り得ない上限として1万行の仕様になり、ランテストした次第。
0839デフォルトの名無しさん
NGNGあらかじめ上限数のアイテムを作っておいて、無効アイテムに空文字を返せば、
動的にアイテム数が増減しても高速処理できる。
ただし、見た目は件数が数件でもスクロールバーが出てしまうけど。
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNGttp://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200409/04090044.txt
0842デフォルトの名無しさん
NGNG> 仮想リストビューなんて要るの?
> コモンのリストコントロールなら必要ないと思うけど。
コモンのリストコントロールを使わずに仮想リストビューを使うって、どういうこと?
0843デフォルトの名無しさん
NGNGプログラム自体は動くのですが、Enterを押すと勝手に終了してしまいます。
なぜがご存知の方、教えてください<m(__)m>
0844デフォルトの名無しさん
NGNGダイアログクラスのOnOk()をオーバーライドし
CDialog::OnOK();
をコメントアウトして下さい
0845デフォルトの名無しさん
NGNG聞かれる前に追加。
Escキーでも終了してしまうので、
OnCancel()も>844同様に呼び出されないようにすべし。
0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNGProxyの動的な変更方法が判りません。
Sleipnirの様にプログラム中から変更を行いたいと思っております。
参考になる文献などでも良いのでご存じの方ご教授お願い致します。
0849デフォルトの名無しさん
NGNGttp://www.athomejp.com/goldfish/mfc/dialog/nonesc.asp
0850デフォルトの名無しさん
NGNGなんで? いつでも EndDialog できるやん。
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG0853デフォルトの名無しさん
NGNG844は終了できなくならんだろ。
0854デフォルトの名無しさん
NGNGそんなん言い出すなら、タスクリストがあるやん
0855デフォルトの名無しさん
NGNGだから>>844-845の二つともやらせたら、だってば。
0856デフォルトの名無しさん
NGNGで、「タスクリストからしか終了できません。どうすればいいですか。」って質問が来そうだなって話だ
0857デフォルトの名無しさん
NGNGそんなら来てからでええやん
来ないかも知れないし
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNG予防線として>>845は同時にEndDialogも書いた方がいいという主張をしたかったんだろう。>>847は。
0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNG0862なぜが?
NGNGなぜがご存知の方、教えてください
なぜがご存知の方、教えてください
0863デフォルトの名無しさん
NGNGA. OnOK()をコメントアウトで終了しなくなります。
すごい回答だ。つーか、こんな回答でWindowsのダイアログの作法を無視しまくる
変なアプリが増えないことを祈る。
0864デフォルトの名無しさん
NGNG>>849
0865デフォルトの名無しさん
NGNG模範回答よろしく
0866デフォルトの名無しさん
NGNGダイアログボックスをリターンキーやエスケープキーで閉じないようにするには?
http://web.archive.org/web/20030415014307/techtips.belution.com/ja/vc/
0867デフォルトの名無しさん
NGNG0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNG0870デフォルトの名無しさん
NGNGvoid CxxxDlg::OnOK()
void CxxxDlg::OnCancel()
void CxxxDlg::OnClose()
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNGなんで? いつでも EndDialog できるやん。
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNG私の理解では、
ESCやENTERでプログラムが終了するのはダイアログベースの仕様であり、
終了させるためには、OnCancel()、OnOK()をオーバーライドすればよい。
実際にやってみたところ、ESCやEnterでは終了せず、右上のバツでは終了できました。
ありがとうございました!!
しかしながらEnterでプログラムが終了する仕様は問題ありですね、、、
0879デフォルトの名無しさん
NGNGんなこたあない。
ダイアログがどうゆうものか、もちっと勉強してくれ。
0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNGダイアログクラスを使わないで、ダイアログを作る。
0883デフォルトの名無しさん
NGNG→Enterでプログラムが終了するのは好ましくない。
ダイアログクラスを使わないで、ダイアログを作る。
→Enterでプログラムが終了しないのは好ましくない。
0884デフォルトの名無しさん
NGNG終了するのは自然な動作だが、ダイアログ・ベースでもそんな簡単なものばかり
じゃないからね。ものに合わせて変えるのは当然だろ。
0885デフォルトの名無しさん
NGNGダイアログが閉じて、アプリ終了した場合やGUI操作がない場合は、Enterクローズは不安感に襲われる。
0886デフォルトの名無しさん
NGNGダイアログの作法?
ダイアログを作ってるんじゃなく、
ダイアログを"ベース"にアプリを作っています。
0887デフォルトの名無しさん
NGNGCSocketで通信するプログラムを作ってるのですが、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デフォルトの名無しさん
NGNG127.0.0.1がちゃんと解決されているか確認。
netstat /an でポート番号が重複してないか確認。
0889デフォルトの名無しさん
NGNG別のアプリケーションからPostMessage()されると、そのメッセージは破棄されてしまうのですか?
どうも拾えないメッセージがあってそれが原因かなと考えているのですが・・・
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNGどうでも良いけどテストで使うにしろ1500ってポートはあんまり使わないところ
とりあえず5000オーバーの空いてるところとか使っとけよ
0892デフォルトの名無しさん
NGNG>>888
127.0.0.1が解決できているかどうかの確認ですが、
とりあえずpingは返ってくるようです(他に確認方法ってありますか?)。
またnetstat /anで確認したのですが、特にかぶっているポートはありませんでした。
>>890
OSのファイヤーウォールの項目もチェックしてみましたが、
どの接続にもファイヤーウォールのチェックは入っていませんでした。
>>891
そうします。Winがどのあたりのポートを使っているか
よく知らなかったもので。
0893デフォルトの名無しさん
NGNG0894デフォルトの名無しさん
NGNG接続中: 127.0.0.1...ホストへ接続できませんでした。 ポート番号 1500: 接続に失敗し
ました
となりました。これは解決ができていないのでしょうか?
ためしにnetstat /anで出てきたLISTENING中のポートに
telnetしてみても同じ結果になりました。
0895デフォルトの名無しさん
NGNGそのリスニング・ポートはちゃんと0.0.0.0か127.0.0.1にバインドされてるの?
システム・サービスの場合、リストに出てても接続を受けないものもあるから
ちゃんと動く何かの簡易サーバ-クライアント・ソフトを持ってきて実験して
みたら?
それでもダメなら接続をブロックするファイアウォールか何かが動いてる
そのシステム固有の問題ってはっきりするから。
0896デフォルトの名無しさん
NGNGもし他のポートで試せるのなら試すべき。
0897デフォルトの名無しさん
NGNG>>892を見るとテストするポートの設定をしてないように思える。
0898デフォルトの名無しさん
NGNG破棄されない。
MessageBox APIの中でメッセージループが回ってるから。
0899デフォルトの名無しさん
NGNGご回答ありがとうございます。
>>895さんのおっしゃる通り、アンインストールしたと思っていた
ファイヤーウォール(Zone Alarm)が残っていたようです。
アンインストールしたら正常に接続できました。
言い訳をさせていただくと、以前はフィルタ状況のモニターがポップアップで
表示されており、現在は出現しないのでアンインストールしたと思い込んでいました。
(思い込みは良くない・・・)
休日にみなさんの貴重な時間を割いていただいてありがとうございます。
問題の特定の仕方や、問題になりそうな部分の勉強になりました。
今後も精進します。
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNGそのボタンにクラスウィザードを使おうとしたところ、
ソースファイル(C:\〜\TestDlg.h, C:\〜\TestDlg.cpp)の
クラス"CTestDlg"は重複する挿入ブロックが存在します。
というメッセージが出てクラスウィザードが使えなくなってしまったのですが
どうやったら直りますか?環境はXP(SP1)、VC6SP6です。
いったんVCを終了してncb, opt, clw ファイルを削除した後にもう一度
試してみたんですがやはり同じ症状です。
0903902
NGNGダイアログベースでデストラクタが無いので手動で追加したんですが
それを消してから上記の3ファイルを削除・再構築したところ直りました。
0904デフォルトの名無しさん
NGNGお分かりの方、いらっしゃいましたら、よろしくお願いします。
1.iniファイルで指定されたフォルダにあるファイル名(例:abbccc)を取得
2.ファイル名を分解(例:a bb ccc)
3.msdnの行にadoを使ってインサートする(例:a bb cccとフィールドを分けて)
0905デフォルトの名無しさん
NGNGスレ治外。
0906デフォルトの名無しさん
NGNGmsdnにadoでインサートするのはMFCじゃ無くても無理だろうなあと。
0907デフォルトの名無しさん
NGNGデフォルトの引数を設定して、一番最後の引数の型を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バージョンくらい書こうや。
0909デフォルトの名無しさん
NGNGすみません。VCのですよね。
VisualC++Ver6、サービスパックもVer6です。
ちなみにconst char * に置き換えると直るには直るのですが
これ(宣言と定義で違うようにすること)は一体どういう意図なのかがわからないです
0910デフォルトの名無しさん
NGNGVC.NETじゃちゃんと同じになるんだけど・・・
0911デフォルトの名無しさん
NGNGウィザードで作った後、手作業でデフォルト引数書くとかするしかないんじゃないかなぁ。
デフォルト引数のある関数にジャンプしないのは俺もよくある。
近くの関数にジャンプしてからスクロール…っていつもしてる。
こういう仕様なんだとあきらめてるよ。
0912デフォルトの名無しさん
NGNG同じ環境でやってみたけど、CLASS VIEWがおかしいみたい。
コンパイルは通る。
0913デフォルトの名無しさん
NGNG見た目が破損しててもコンパイル・ビルド作業への影響は一切ない。
0915デフォルトの名無しさん
NGNG削除したくて、Trimで色々やってみたのですが、うまいこといきません、
教えてエロイ人。
0916915
NGNGで、解決しました・・・。
Trimに拘った、私が悪かったみたいです。
ご迷惑おかけしました〜。
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNG0919デフォルトの名無しさん
NGNG2バイト文字が考慮されないっていうやつだろ、多分。
0920デフォルトの名無しさん
NGNGMFCはじめたばかりの初心者です。
質問ですが、ウインドウの背景を画像ファイルとして保存するにはどうすればいいのでしょうか。
いろいろ調べたのですが結局分かりませんでした。
環境はこのとおりです
OS:WindowsXP SP1
VC++.NET 2003
お願いします。どなたか教えてください。
0921デフォルトの名無しさん
NGNG読み出しなら ::LoadImage でできるが
書き込みのサポートはないから、思いっきり自力で書くことになる。
http://pc5.2ch.net/test/read.cgi/tech/1092524669/883-
0922デフォルトの名無しさん
NGNGCImageにアタッチすれば、CImage::Save()で保存出来るよ。
今ホットなGDI+を使うことになるけど。
0923デフォルトの名無しさん
NGNGありがとうございました m(_ _)m
0924デフォルトの名無しさん
NGNG作成したコントロールはVBでFormなどに貼り付けて使う予定です.
コントロールは実行時に他のDLLやファイルなどを読み込む必要があり,
ターゲットとなるexeのカレントパスを取得してファイルなどを読み込む処理を
コントロールのクラスのOnCreateメソッド(?)に書きました.
しかし,OnCreateではVBなどでコントロールをFormに貼り付けた時点で
実行されてしまうため,実行時のexeのパスを取得する部分を利用して
ファイルなどを読み込む処理でエラーが起きてしまいます.
プログラムが実行されるときに
一度だけ処理されるメソッドやイベントはあるば教えて頂きたいのですが.
環境 VC6.0 VB6.0 WinXP
0925デフォルトの名無しさん
NGNGDllMain()でやればいいんじゃないの。
0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNGnew演算子で確保したメモリ領域を解放する処理は明示的に行っているんですが、
デバッグ版⇒CWinApp::Exitinstanceが実行される前に(明示的記述したタイミングで)、
メモリ解放処理が完了する。
リリース版⇒CWinApp::Exitinstanceが実行された後に、メモリ解放処理が完了する。
上記のような動きをしているみたいなんです。
メモリ解放処理後に、終了コードを各プロセスを管理しているプロセスに通知しているため
リリース版では管理プロセスが終了コードを受信した時にも、
対象のプロセスが動き続けていることになってしまいます。
こんな現象に関してご存知の方いらっしゃいましたらぜひご教授をお願いします。
0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNGソース読んでみれば?
0932デフォルトの名無しさん
NGNGデバッグ版 DEBUG_NEW を定義せず
リリース版 最適化全てオフ
でテストしてみそ
0933デフォルトの名無しさん
NGNGする事はありますか?
0934デフォルトの名無しさん
NGNG0935デフォルトの名無しさん
NGNGあるらしい
>>934
メッセージにも優先順位があるらしく、マウスイベントが
他のイベントより優先される場合もあるらしいよ
0936デフォルトの名無しさん
NGNGマウスイベントはメッセージキューを通らないで直接ウィンドウプロシージャへ行くメッセージじゃないか?
0937デフォルトの名無しさん
NGNGそうかも
「PostMessageでは試したことないけど」って言うの忘れた
0938933
NGNG同じ系統のメッセージの順番のみが問題ですんで、他のメッセージの割り込みは問題にならないです。
とりあえず大丈夫なものとしてやってみます
0939デフォルトの名無しさん
NGNGへ?
0940デフォルトの名無しさん
NGNGこのBITMAPINFOとビットマップの高さが増すにつれパレット番号を増加させるデータをもちいて
CreateDIBitmapにセットしてグラデーションのビットマップを作りました。(作ったつもり。)
これをメモリデバイスコンテキストでSelectObjectしてからディスプレイ(24bit)のDCにBitBltしたのですが、
この場合256カラー(パレットあり)を変換して24bitカラーのビットマップになってくれるとおもったのですが
どうもパレットデータはシステム内部のものをつかって描画してるっぽいんですがなぜですか?
そういうものですか?
0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGHINSTANCE hInst;
hInst = LoadLibrary("Graphics.dll");
HBITMAP hBitmap;
hBitmap = LoadBitmap(hInst, "IDB_BITMAP1");
とやっても、hBitmap == NULLになってしまってビットマップを読み込めません。
僕のどこが間違ってるんでしょうか。
0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNG全体的に間違ってると思います。1行目とか。
その DLL には本当に "IDB_BITMAP1" というビットマップが入ってますか?
MAKEINTRESOURCE(IDB_BITMAP)の間違いではないのですか?
0945デフォルトの名無しさん
NGNG1行目書きなおしたら変になってしまいました
自分で作ったDLLなんで IDB_BITMAP1 が入ってるのは間違いないはずなんですが、どうもそれだと読みこめなかったみたいで、
MAKEINTRESOURCE(1000);
と直接リソースIDで指定してもう一度やってみたら読み込めました。
なんでこれだとできるのか分かりませんが、とりあえず解決したみたいです。ありがとうございました。
0946デフォルトの名無しさん
NGNGそれがわかるまで先に進むな
一歩たりとも
0947デフォルトの名無しさん
NGNGMFCなんか嫌いだぁ
>>933
キューの中では順序通りでも PeekMessage で優先して取り出せるでしょ
DispatchMessageが中で何してるかは知るか。
>>940
パレットは別に CreatePaletteとSelectObjectでセットするんだったような
GDI+への対応はいつになるんだ?
>>945
まず無理だろうが、Graphics.dllのソースの中にある resource.h をインクルードしてみるといい。
これがMFCというやつだ。
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG断言していい。
入ってない。
そういうあいまいな認識でコード書くと周りに甚大な被害を及ぼすからやめてくれ。
>>947
引っ込め。
0950デフォルトの名無しさん
NGNGこれほど的外れな回答も珍しいな。
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オススメの書籍等あれば教えていただけませんでしょうか?
0953デフォルトの名無しさん
NGNG・1回目に保存処理が走っているのか確認
・各APIの戻り値を確認
0954デフォルトの名無しさん
NGNGこれ?
0955デフォルトの名無しさん
NGNGVCそのものを全く知らん状態で始めるならとりあえず入門書として
林晴比古の本なんかを薦めてみるが、取っ掛かりだけ掴めれば
後は余程専門的な事をやらない限りはネットで調べた方が早いし
詳しい情報が載ってる。
0956デフォルトの名無しさん
NGNGCDialgを継承したクラスに
WaitForSingleObject()を使って
常に特定のイベントがシグナルか監視する
独立した関数を作りたいのですが
良い方法はありませんか?
良かったら教えてください。
0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNG関係ないけどFILE_SHARE_WRITEはやめといた方が・・・
0959デフォルトの名無しさん
NGNG>>955に同意。
ただし、MFC入門書は良書が多いので問題ないけど、
その後をどう進むかだね。
C++の専門書(入門書でなくSTLに触れていて、テンプレート関連が充実)
を読むのが良いかも。
0960デフォルトの名無しさん
NGNG環境:WinNT、VC6.0
でMFC使ってる者です
BOCのFlexGrid使ってるんですが
これのツリービューを作っているんですが
状態の保持が上手く出来ません
ツリーのオブジェクトを削除したり置換したりすると
縮めたオブジェクトが展開されてしまいます
0961デフォルトの名無しさん
NGNGBOC(現GrapeCity)ならサポートが丁寧だから向こうに聞いたら?
Gridでなんでツリーなのかよく判らんが。
0962デフォルトの名無しさん
NGNGで、質問は何なの?
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNG現在2chブラウザ使えないの状況下なのでこうなってます
>>958さん
FILE_SHARE_WRITEはやめといたほうがいいといいますがそれはどういうこと
ですか?
>>954さん
一応命令は削除してみましたが変化は見られませんでした
>>953さん
APIはすべて確認したところすべて正常でした
自分の考えでは再描画系に問題があったのではないかと判断しております
みなさま、ご意見ありがとうございました。
0966デフォルトの名無しさん
NGNGピクチャーボックスの枠を消去したいのですがネットで方法を
探しているのですが見つかりません
どなたかおしえてくださいませ
0967デフォルトの名無しさん
NGNGビットマップスタイル
0968sage
NGNG0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNG>FILE_SHARE_WRITEはやめといたほうがいいといいますがそれはどういうこと
denyじゃなくてshareだぞ。
複数の書き込みオープンを許すんだぞ。
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNGネストって出来ないんでしょうか?
ネストした子側のウインドウサイズが0x0になっていて
うまく動作しませんでした。
親側のビューをDeleteView()やGetPane()->DestroyWindow()などで
削除してみたりしたんですが変わりませんでした。
よろしくお願いします。
0974デフォルトの名無しさん
NGNG707 名前:デフォルトの名無しさん[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やったことあるので出来ると思います。
CSplitterWnd のソースだかどっかにうんこのようなASSERTが入ってた気がするので
オーバーライドとかで回避しないとデバッグ時に死ぬ。
0976デフォルトの名無しさん
NGNGCString型 に改行文字を入れることは可能なのか
CString型 に改行文字を入れた状態でファイル書き込みWriteFileを
行った場合改行されるものなのですか?
自分はやってみたのですが無理でした
CString a="aiueo"+'\n';
すいませんが教えてください。
0977デフォルトの名無しさん
NGNG↑なんじゃこりゃ
・・・ポインタと整数の足し算だからエラーも警告も出ないのか・・・。
0978デフォルトの名無しさん
NGNG可能。
Windowsでは改行を "\r\n" の2文字であらわしているので、
CString a="aiueo\r\n";
0980デフォルトの名無しさん
NGNGバッファにいれとく限りにおいては、「\n」だけで良いんじゃないか?
テキストモードにしとけば、ファイルへの出力の時に内部処理で\r\nになる。
0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNGそのとおり実行できましたー
ありがとうございます
0983デフォルトの名無しさん
NGNGCStdioFile使う手はある。
0984デフォルトの名無しさん
NGNGCFileDialogを使って任意でファイルを保存するようにしているのですが
すでにあるファイルを、上書きしようとしたら警告がでません。
拡張子をつけた状態では警告文はでるのですがわざとファイル名から拡張子を
消してみると今度は警告がでません。おそらくファイル名の文字列が
違うので警告文がでないのは承知なのですが拡張子は同じはずなので
警告がでてほしいのですが、対処方法がわかりません、すいませんがご教授
お願いいたします
CFileDialog myDLG(FALSE,NULL,NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"ビットマップ(*.bmp)|*.bmp||");
if(myDLG.DoModal() != IDOK) return;
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNGいいからもう寝ろ。
0987デフォルトの名無しさん
NGNGコンストラクタではタイミング的に早すぎて、
GetDlgItem(IDC_RADIO1)が成功しないんだと思う。
OnInitDialog()内で行ってみては?
0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNGGetOpenFileName()、GetSaveFileName()あたりを参照。
MFCのCFileDialogはAPI並に面倒くさいわりに得られるメリットが薄く、
ぶっちゃけ必要ないクラスのひとつ。
下位互換のための存在だと思って差し支えない。
そんなわけで素直にAPI使っとけ。
0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNGダイアログベースのアプリにタブコントロールを配置して、PropertySheetを挿入してるのですが
途中でもう一度新しくPropertySheetのインスタンスを生成して、タブコントロールに挿入したいのですが
追加と言う形になってしまいます。
どうすれば全部破棄した後、挿入出来るのでしょうか?
宜しくお願いします。
0995デフォルトの名無しさん
NGNG無理
0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。