★初心者にVisual C++を教えるスレ★ Part14
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGお兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
http://www.geocities.co.jp/Beautycare/4965/public/template.html
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
前スレ
★初心者にVisual C++を教えるスレ★ Part13
http://pc5.2ch.net/test/read.cgi/tech/1089011118/l50
0685デフォルトの名無しさん
NGNG+thisとすれば一般的な言葉も検索できますよ。
0686デフォルトの名無しさん
NGNGおお、本当だ!!ありがとうございました。
0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNG参考にしたソースには書かれていなかったのですが、どのように宣言すればいいのでしょうか?
0689デフォルトの名無しさん
NGNG相手がわからないと思って適当な事言ってるだけだから気にしちゃだめだよ。
0690デフォルトの名無しさん
NGNGそのままコピペでもしたからだろ?
そのTipsはクラスのメンバ関数として作られることを前提にしてるから、
グローバル関数にしても使えない。
どこかのクラスに入れるか、this->を消せばOK
0691デフォルトの名無しさん
NGNG詳しく説明して下さい
0692デフォルトの名無しさん
NGNG実はCOMが検索できんで困ってたんだ。トンクス
0693616
NGNG>>632さんの仰る通りパス間違ってました。CreateFile関数の
場合、パスが厳しくチェックされるみたいですね。あと
戻り値がINVALID_HANDLE_VALUEというのも参考になりました。
SetPixel関数を使えばしっかり任意の色に塗られるのに
バイト単位で書き込む(pPixel[0]=0xffみたいに)と白の斜線に
なってしまうという疑問が出たのですが、ここはSetPixelでごまかしときます。。。
ともあれ、解決できたんで、ありがとうございました。
0694デフォルトの名無しさん
NGNG(゚д゚)ノ ハイ
>>690
なるほど。一箇所でしか使わないしわざわざクラスにする必要もないかなーと思って作らなかったのです。
消したらうまくいきました。ありがとうございました。
0695695
NGNG#include <stdio.h>
#include <time.h>
#include <windows.h>
#include <winbase.h>
/**************/
/* メイン関数 */
/**************/
void main()
{
clock_t start, end;
start = clock();
void * hProcess;
int fRet;
hProcess=GetCurrentProcess();
fRet=GetProcessAffinityMask(hProcess,&dwProcessAffinityMask,&dwSystemAffinityMask);
fRet=SetProcessAffinityMask(hProcess,dwProcessAffinityMask);
//SetProcessAffinityMask(hProcess,4);
for(;;){
printf("表示\n");
}
end = clock();
printf("処理時間: %f秒\n", (double)(end - start) / CLOCKS_PER_SEC);
}
と参考書通りに書くと,dwProcessAffinityMask,dwSystemAffinityMaskが定義されていません。
とエラーがでます。何度かエラー解除を試みているのですが,エラーが消えません。
目的はDualCPUのフル稼働です。並列処理ではありません。誰か教えてください。
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNGwinapp fatal error LNK1120: 外部参照 1 が未解決です。
というエラーがでます。どうしてですか?
0698デフォルトの名無しさん
NGNGコンソールプログラムを作るための設定になっているから。
0699デフォルトの名無しさん
NGNGCPU1なら0
CPU2なら1
だったかな?
0700デフォルトの名無しさん
NGNGできたのですがデバッグで、このようにでました。
'WinApp.exe': 'C:\WINNT\system32\NTDLL.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\KERNEL32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\USER32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\GDI32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\imm32.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\ADVAPI32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\rpcrt4.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
プログラム '[1760] WinApp.exe: ネイティブ' はコード 87 (0x57) で終了しました。
これはなんですか?
0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNGこのような内容の行は無視しても大丈夫
ついで言うと >>697
よく分からなかったらエラー番号の上にカーソル持っていって F1 キー
0704デフォルトの名無しさん
NGNG'WinApp.exe': 'C:\WINNT\system32\KERNEL32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\USER32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\GDI32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\imm32.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\ADVAPI32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\rpcrt4.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
プログラム '[1760] WinApp.exe: ネイティブ' はコード 87 (0x57) で終了しました。
と表示されます。どうしてですか?
0705デフォルトの名無しさん
NGNGマルチスレッドプログラミング相談室 その2
ttp://pc5.2ch.net/test/read.cgi/tech/1037636153/
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG相手にする香具師もうぜぇ。
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGいい加減にしろ。向こうのスレでも答えてもらってんだろ。
0712695
NGNG#include <stdio.h>
#include <time.h>
#include <windows.h>
#include <winbase.h>
/**************/
/* メイン関数 */
/**************/
void main()
{
HANDLE hProcess;
int fRet;
DWORD dwProcessAffinityMask,dwSystemAffinityMask;
hProcess=GetCurrentProcess();
fRet=GetProcessAffinityMask(hProcess,&dwProcessAffinityMask,&dwSystemAffinityMask);
fRet=SetProcessAffinityMask(hProcess,1);
for(;;){
printf("表示\n");
}
}
と書き直したらエラーは消えるのですが,CPUは以前と1/4しか使っていません。
どうすればCPUをフル稼働させることができますか?教えてください。
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG#include <stdio.h>
#include <windows.h>
#include <process.h>
#include <stdlib.h>
#include <time.h>
static
void task(void* id){
SetThreadAffinityMask(GetCurrentThread(),1UL<<atoi((char*)id));
clock_t start=clock();
printf("タスク%sの開始\n",id);
while(clock()-start<15*CLOCKS_PER_SEC){
//何か
}
printf("タスク%sの終了\n",id);
}
main(){
HANDLE t1=(HANDLE)_beginthread(task,0,"1");
task("0");
WaitForSingleObject(t1,INFINITE);
return 0;
}
0715デフォルトの名無しさん
NGNG0716695
NGNG試してみたいと思います。
0717デフォルトの名無しさん
NGNGが出てこなくなりました。どうしたら表示できますか?
かれこれ1時間近く探してます・・。・゚・(ノД`)・゚・。
0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNGという設定ダイアログを最近よく見かけるようになりました。(WinAMPやOpenJane等で使われている)
こういうダイアログは自作なのでしょうか?
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNGいやそういう意味ではなく
ツリービューを配置したダイアログを作成して、ツリー項目が選択されたら子ダイアログを右側に表示
とかそういうコードをシコシコ書いているのか、
SHBrowseForFolderみたいに一発で表示できるとか、
MFC等のライブラリにそういうものがあるのかな、と。
0722デフォルトの名無しさん
NGNGなっている。
>ツリービューを配置したダイアログを作成して、ツリー項目が選択されたら子ダイアログを右側に表示
とかそういうコードをシコシコ書いている
たぶんそうでしょう。これ自体は数行で書けるから技術的な問題は
ほとんど無いかと。
0723デフォルトの名無しさん
NGNGOpenJaneは確かデルファイでオープンソースでは?
winampのリソース見てみたけど、右側のダイアログはこんな感じ。
(左側は実際のWinampの設定画面)
http://v.isp.2ch.net/up/3c1e4e393976.png
0724デフォルトの名無しさん
NGNG明らかに見た目も機能も(右クリックへの対応など)ばらばらなのに同じAPIで実現されてるわけ無いだろ。
0725デフォルトの名無しさん
NGNGあれって、
CListCtrlから派生クラスを作成(例えばCListCtrlEx)するんですよね?
そのCListCtrlExをViewに選択するときってどうするんですか?
プロジェクト作成時のViewはCViewでも良いのでしょうか?
0726デフォルトの名無しさん
NGNG漢なら自作するに決まってるだろ。
コモンダイアログすら使うことは許さん。全て自前で書け。
0727デフォルトの名無しさん
NGNGみたいなバカはシカトでOKだよ
そのCListCtrlExクラスのインスタンスを作成してCreateを呼べばCViewに表示されるよ
0728デフォルトの名無しさん
NGNGBCBじゃだめ?
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNGリソースエディタでは256色までのBitMapファイルしか
取り込めないのでしょうか?
クライアントに32Bitや16BitのBMP画像を表示するには
どうすればいいのでしょうか・・・。
CHtmlViewを描画の基本クラスにすれば
画像ファイルを指定して読み込んで表示できるようですが、
CViewを使ってやるにはどうすればよいのでしょう。
ほんとアホな質問で申し訳ありません。
環境はWindowsXP:Home,VisualC++6.0です。
0731デフォルトの名無しさん
NGNGアホな質問はよそでしてください。
0732デフォルトの名無しさん
NGNGグリッドコントロールみたいのないの?
VC.NET(アンマネージ)
0733デフォルトの名無しさん
NGNG0734半日潰れた
NGNG勝手に付加してコピーしてくるんですけど・・・
なんなの?
0735デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1091543344/269
から移動してきました。
2003 向けのプロジェクトを読み込んで、makefile を作るにはどうしたらいいですか?
それを使って、Visual C++ Toolkit 2003 でビルドしたいんです。
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNGドキュメントクラスで、ワーカースレッド立ち上げて、
そこから、Viewクラスに情報を渡したいんですが、
こういう場合、一般的にはどうするのでしょうか?
グローバルでやりとりもスムーズも余りきれいにはいかないですし、
Documentクラスのポインタをワーカースレッドに渡して仲介すべきなのか、
Viewのポインタを渡した方がいいのか、、、スマートな方法を教えてください。
よろしくおねがいします。
0740デフォルトの名無しさん
NGNGGetDocument
0741739
NGNGすみません、UpdateAllViewsだと、Viewのイベントになりますよね。
補足ですみません、しばらく考えましたが、
ワーカースレッドから、Documentにメッセージを送れるとよさそうです。
SendMessageでいけるかと思ったのですが、ハンドルがもちろん無いので駄目でした。
ワーカースレッドから、Documentにメッセージを送る方法はあるでしょうか?
0742デフォルトの名無しさん
NGNGDocumentクラスのポインタをワーカースレッドに渡して仲介
スレッドの中からそのポインタで上のメンバ関数を実行
0743739
NGNG明解、ありがとうございます。
そうすると、ワーカースレッドがDocumentの型を意識する事になるので、
ちょっと躊躇していましたが、仕方なさそうですね。
ありがとうございます。
0744デフォルトの名無しさん
NGNGそもそもドキュメントに対してなんらかの処理をするワーカスレッドが
ドキュメントの型に依存してないわけが無いのではなかろうか・・・。
0745デフォルトの名無しさん
NGNGマイピクチャフォルダに入っているビットマップは、リソースに追加可能なのですが、
このフォルダ以外の場所においてあるビットマップはリソースに追加できません。
やったことは
リソースビューの .rc を右クリック → リソースの追加 → Bitmapを選択してインポート
→ ビットマップファイルを選択 → 開く
これで、なぜかマイピクチャに入っているものは追加可能でしたが、それ以外のフォルダや
マイピクチャ下に作ったフォルダの中に保存していたビットマップは開くボタンを押してもリソースビューに追加されませんでした
追加したいファイルのあるフォルダはどこかに事前に登録しておく必要とかあるのでしょうか?
それとも、ビットマップを追加するとき制約でもあるのでしょうか?
解決方法を教えてくださいm(_ _)m
Visual C++ .NET 2003
Windows XP home SP2
0746デフォルトの名無しさん
NGNGソース階下のRESフォルダに入れてみては?
あと、ファイル名が全角とか。
0747745
NGNGレスありがとうございます。
それもやってみたのですが、だめでした。
ファイル名はすべて半角英文字です。
0748デフォルトの名無しさん
NGNGYahooでVisual C++6.0欲しさにオマケソフトが色々付くと有ったVisualStudio6.0買ったんですが
肝心のC++6.0がセットアップできませんorz というかC++のCDがありません;
ひたすら検索しても妙な説明ページに引っかかりまくるばかり・・
どなたかセットアップ方法紹介しているサイトなり有ったら教えてください、
変な欲出さなきゃ良かった・・ ||orz
0749デフォルトの名無しさん
NGNG子ウィンドウにタブとかスライダー等、色々配置したいのですが
どうすればいいか迷っています。
プロパティシートを使えばという気もしますが
[OK]ボタン等が必要ないので、他にいい方法があれば
教えていただけませんでしょうか?
よろしくお願いします。
0750デフォルトの名無しさん
NGNG0751616
NGNG0752デフォルトの名無しさん
NGNG1時間も経たんのにマルチポストするような香具師には答えたくない
0753デフォルトの名無しさん
NGNGCD再生しようとしているんですが
TMSF(トラック:分:秒:フレーム)で取得したDWORD値
をどうすれば秒に変換できますか?
というかそもそもそれは再生位置の移動(シーク)だけに使用
する値なんでしょうか。だったら、
別の方法で取得しなければいけませんが。
0754デフォルトの名無しさん
NGNGルートにビットマップファイルを置いて読み込んでみたら?
フォルダ名・ファイル名だけでなく、Pathの途中にスペース、
全角等があると、読み込めない筈。
0755デフォルトの名無しさん
NGNGVB6.0でラベルをフォームに配置するときに、メニューバーで配置するのではなく、
コードを使って座標などを指定して配置したいのですが、どのようにすればいいのでしょうか・・?
また、lineメソッドなどで書いた図形が、他のアプリと重なった時に消えないようにするには
どうすればいいのでしょうか。
どなたかお願いします。
0756デフォルトの名無しさん
NGNGVBプログラマ質問スレ(6.0以前) Part38
http://pc5.2ch.net/test/read.cgi/tech/1095673000/l50
0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNGそういうDLLはありますでしょうか?
ご存知のかた教えていただけると助かります。
0759745
NGNGまったくそのとおりです。
ルートフォルダなら問題なくできました。
いろいろ試したところ、パス名に全角文字が入っていた場合に読み込みできないことがわかりました。
ありがとうございました。
0760デフォルトの名無しさん
NGNGクライアント領域に一つのViewしかつくれないの?(分割しなかったら)
ほんとつかいずれーよなw
0761デフォルトの名無しさん
NGNG...
0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNGサンクス。
ほかの場所にでも無理ですか?
(右下の貧弱なのだけ?)
0766デフォルトの名無しさん
NGNGつか、VC++のバージョンを書いとけよ…
VS2003だったら、
オプション -> テキストエディタ -> C/C++ -> 全般
にある
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNGMFC AppWizard(exe)で作ったプログラムではメインをいじったりできませんか?
というかメイン関数を見ることすら出来ないんですが・・・。
0771デフォルトの名無しさん
NGNG何をしたいのか知らんが、WinMainはMFCの中にある。
0772デフォルトの名無しさん
NGNGええ。実はそれ自体は知っているんですが,どうにかしていじれないですか?
やっぱり1から自分で作らないとダメでしょうか?
0773デフォルトの名無しさん
NGNG何をしたいのか知らんが、大抵のことはWinMain()以外で充分できる。
0774デフォルトの名無しさん
NGNGどうしてもWinMainをいじりたいなら当然自分で作らないとダメ。
0775デフォルトの名無しさん
NGNGメッセージで動くから、メインなんかいじってもしょうがない。
0776デフォルトの名無しさん
NGNG1ファイル目はうまくいくのに2ファイル目以降がfin.open((LPCTSTR)(dirname + "\\" + filename));でオープンに失敗してしまいます。
while(getline(fin, line))の部分をコメントアウトすれば成功するので、おそらく原因はそこなのでしょうが、何故なのかがわかりません。
出来れば解決法も含めて教えてください。開発環境は Visual C++.NETです。
CString dirname; /* ディレクトリの名前 */ CString filepath; /* dirname\*.txtに適合するファイルのパス */
CString filename; /* dirname\*.txtに適合するファイル名 */ CFileFind FileFind;
BOOL bfnf; /* FileFind.FindNextFile()の成否 */ string line; /* ファイルから1行読み込む時のバッファ */
ifstream fin;
filepath = dirname + "\\*.txt";
if(!FileFind.FindFile(filepath)) return FALSE;// dirname\*.txtなるファイルを取得。なければ終わり
do{
bfnf = FileFind.FindNextFile();
if(!FileFind.IsDots()){// .\や..\の除外
filename = FileFind.GetFileName();
fin.open((LPCTSTR)(dirname + "\\" + filename));// dirname\filenameのファイルを開く(CString->char*)
if(!fin)return FALSE; // ファイルのオープンに失敗したらFALSEを返し終了
while(getline(fin, line)){// 1行取って来る(失敗したら終了)
/* 色々な作業 */
}
fin.close();
}
}while(bfnf);
0777デフォルトの名無しさん
NGNG0778デフォルトの名無しさん
NGNG「色々な作業」でFileFindかなにかを壊している悪寒。
whileブロックをコメントアウトしたら動くのなら、少しずつ戻していってどこで動かなくなるか試してみ。
#ソース晒した方が早そうだが。
0779776
NGNGありがとうございます。/* 色々な作業 */の所は今の所全てコメントアウトしているので、
多分関係ないのではないか、と思います。
2ファイル目でfin.openが失敗して(多分) if(!fin)が成り立ってreturn FALSE実行される↓
fin.open((LPCTSTR)(dirname + "\\" + filename));// dirname\filenameのファイルを開く(CString->char*)
if(!fin)return FALSE; // ファイルのオープンに失敗したらFALSEを返し終了
while(getline(fin, line)){// 1行取って来る(失敗したら終了)
/* 色々な作業 */
}
fin.close();
if(!fin)が成り立たず、全てのファイルでfin.openが成功しているのを確認↓
fin.open((LPCTSTR)(dirname + "\\" + filename));// dirname\filenameのファイルを開く(CString->char*)
if(!fin)return FALSE; // ファイルのオープンに失敗したらFALSEを返し終了
// while(getline(fin, line)){// 1行取って来る(失敗したら終了)
// /* 色々な作業 */
// }
fin.close();
こんな感じです。
0780デフォルトの名無しさん
NGNGgetline()の第2パラメータの型とlineの型を調べよ。
#少なくとも>776はコピペミスしてそうだ。
0781マイク ◆yrBrqfF1Ew
NGNG0782776,779
NGNGそれだ!!というかこんなのあったんだ…fstreamとか使うの初めての上適当にやってたので全然知りませんでしたorz
1つめのファイルのgetline(fin,line)がFALSEになった時にfinのファイルストリームがEOFにセットされてるから必要になるんですね。
ありがとうございました。
>>780さんもありがとうございました。
0783デフォルトの名無しさん
NGNG> VS2003だったら、
> オプション -> テキストエディタ -> C/C++ -> 全般
> にある
列を上に表示するオプションなんてないぞ??
0784デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています