【VC++】プログラム作成に手を貸して下さい!!

このエントリーをはてなブックマークに追加
331デフォルトの名無しさん:2005/04/05(火) 19:41:39
とか言いつつ「メニューとダイアログとかはリソースですが」って言ってる315にワロタ
332デフォルトの名無しさん:2005/04/15(金) 00:33:35
画像の検索っぽいことをしようとしてるんだけど、
50枚くらいのbmp(24bit、640×480)の中から検索する場合、
どんな感じで組んだらいいですか?
ちなみにSDKでやってます。
333デフォルトの名無しさん:2005/04/15(金) 11:46:07
>332
画像の何を検索するの?
334デフォルトの名無しさん:2005/04/15(金) 17:30:59
>333
俗に言う感性情報検索ってものを作ろうと思ってて、
画像の色彩情報を頼りにいろいろ検索しようと思ってます。
335デフォルトの名無しさん:2005/04/22(金) 13:12:08
ダイアログボックスにコンボボックスを設定して、中に文字を選択できるように
したいんですけど、うまくいきません。
空のコンボボックスが出来てしまいます。
参考にしたサイトでは、配列に格納されている文字をコンボボックスに登録する
という風になってるんですが、出来たコンボボックスは空っぽ・・・。
これは何でなのでしょう?
336デフォルトの名無しさん:2005/04/22(金) 16:21:10
WM_INITDIALOGでコンボボックスのリストにアイテムを登録しる
337デフォルトの名無しさん:2005/04/22(金) 17:02:43
>>336
ありがとうございます。そちらは解決しました。

現在、win32でエクセルファイルを開かずにデータを取得し、
ダイアログボックスで設定を入力した上で、その設定を元にセルのデータ
チェックをするというプログラムを作っています。

計算のロジックは出来たのですが、エクセルの読み込みやダイアログボックス
をメイン上でうまく出せません。
どうしたら良いでしょうか?
338日曜プログラマー:2005/05/08(日) 19:31:57
どなたかわかるかたがみえたら教えてください。
テキストを印刷するプログラムで文字化けしてしまい困っています。

開発環境はWindowsXp、VC++ver4.0SEです。
SDIでMFCを使って、印刷をさせたく、本やWebを参考になんとかC***View::OnPrint()
までたどりつきました。
印刷内容はCStringArrayにある適当なCStringを抽出してきた文章で、レポート用紙
のような用紙に余白、行数を指定して印刷します。

Viewでループを組んで、1行ごとの文字列をDocumentに要求しており、Documentでは
要求されるたびに文章の抽出、与えられた行数からの文字列の抽出を行っています。

CStringの行数を調べるために、Findで'\n'の位置を見つけて、Rightで行を区切っていく
作業と、Leftを使って与えられた1行の文字数での抽出を行った所、文字化けしてしまいます。
どうやらおおもとのCStringをreturnで返してやると、文章はちゃんと取り出せてそうで、
その後にCString.IsEmpty()を行った直後にreturnで返すと文字化けしているようです。
いろいろいじった結果、IsEmptyやFindなどを使った後のCStringをreturnすると文字化けする
ようなので、1文字ずつ改行の判定をするようにしてみたりしましたがうまくいかず途方に
暮れています。

よろしくお願いします。疲れました…。
339デフォルトの名無しさん:2005/05/08(日) 20:06:38
VC4.0SEって・・・ナニソレ
340日曜プログラマー:2005/05/08(日) 20:13:33
あいやー。
Visual C++ ver4.0 Standard editionのつもりでつ。
たぶん、7年くらい前の購入です。

日曜プログラマですが、使えそうなのができたら仕事でも使ってます。
341デフォルトの名無しさん:2005/05/09(月) 01:40:43
原因が何かわかるような気もするが書くのマンドクセ
342日曜プログラマー:2005/05/12(木) 19:27:15
>>341
ははぁ。書くのがめんどくさいような原因なのですね。

とりあえず、次の休みにがんばってみますが…
次は元のデータをそのまま返して、Viewで処理してみようかなぁ
343日曜プログラマー:2005/05/15(日) 01:19:11
自己解決しました。
OnPrint()でフォント指定すれば治りました。
恥ずかしい…。orz

どっかのWeb siteの印刷の解説でOnBeginPrinting()でフォント指定してたので
それを流用してましたが、関数を抜けたら作ったフォントは当然破棄されますね。
破棄されてもメモリに情報が残っているために、そこの内容が書き換わるまでは
内容が保持されるような挙動を示していたと言うことですね。
もう、不思議な動きにおもいっきりはまりました。

レスくださった皆様、ありがとうございます。
私はまたプログラミングに戻ります。
344デフォルトの名無しさん:2005/06/09(木) 17:10:37
VC++6.0でUSBメモリのデバイス インスタンス IDを取得する方法をどうやったらできるのか分かる方、よろしくお願いします。
345デフォルトの名無しさん:2005/06/20(月) 00:28:24
学校の研究で作っているシミュレーションプログラムに
WindowsでGUIなインタフェースをつけるように先生に言われ、
「猫でも…」を買ってきてとりあえずボタンクリックで実行できるようにはしたんですが、
計算中はウィンドウの再描画なども行われず、全くのだんまりになってしまって、
何かのバグで停止してしまっているかのように見えてしまいます。
インストーラやダウンローダのように「何%まで終了しました」というウィンドウを表示したいのですが、
どうすればいいのか全く分かりません。
計算は単純なものをループで回しているだけのものですので、
そのループの何回目まで終了したかを表示すればいいんだと思うのですが…。
どのように書けばいいのか教えていただけないでしょうか。
環境はVisualStudi.net2003で言語はVC++を使っています。

また、できれば計算を途中で中止する「キャンセル」ボタンもつけたいとも思っています。
346デフォルトの名無しさん:2005/06/20(月) 05:26:49
>>345
ヒントをあげよう。( ´∀`)っ[Sleep()]
スレッドでもいいんだが、スレッドをやらせるのは危険な気がする
347345:2005/06/20(月) 06:08:42
>>346
ヒントありがとうございます。
が、頂いたヒントから
・ループ中にSleep(10)などを突っ込む
・「VC++ 再描画 sleep」などの語句で検索
をしてみましたが、解決の糸口も見つけられませんでした。
わがままで申し訳ありませんが、もう少しヒント(できれば答え自体)を
教えていただけないでしょうか。
348デフォルトの名無しさん:2005/06/20(月) 07:07:09
Sleep()を突っ込む場所
349デフォルトの名無しさん:2005/06/20(月) 07:15:46
>>346
おぃおぃ、Sleepじゃ何の解決にもならんだろ。
347も調べたなら、それくらい気づけよ。
350デフォルトの名無しさん:2005/06/20(月) 07:28:42
スレッドにするか、ループ中にメッセージポンプを廻すか。
351345:2005/06/22(水) 22:29:37
学校のVC++.NETがインストールされたPCが使えなくて、返事が遅くなってしまいました。
ごめんなさい。
>>348
どこにどういう風にSleepをいれれば、どういう理屈で解決するのか全く分かないんです。
>>349 さん
が書かれている通り「Sleepでどうやって解決するんだろう?」とは思ったんですが、
私が知らないだけで、どこかにSleepをいれればうまくいくものなのか、
それだけで済むならそれが一番いいのかなと思っています。
>>350
progressとかで検索して、メッセージポンプという言葉や、
具体的なソースのようなものもあったのですが、
(例 ttp://hp.vector.co.jp/authors/VA007941/program/no2051.html)
そのまま貼り付ければOKというようなお手軽なものが見つけられず、
どうにもできない状況です。
皆様に頼ってばかりで申し訳ないのですが、
メッセージポンプについてご教示ください。
352デフォルトの名無しさん:2005/06/22(水) 22:41:34
セーフモードってどうしたら直るんですか?教えてください
353デフォルトの名無しさん:2005/06/22(水) 22:42:55
>>351
お前が張ったURLの先にあるMessagePump()はそのまま貼って使えるが。
354デフォルトの名無しさん:2005/06/22(水) 22:46:14
>>351
お好みの方法でどうぞ。

http://www.kumei.ne.jp/c_lang/sdk/sdk_72.htm
http://www.kumei.ne.jp/c_lang/sdk/sdk_87.htm

> そのまま貼り付ければOKというようなお手軽なものが見つけられず

根本が間違っているから、
そのまま貼り付ければOKなんてものを探すな。
355デフォルトの名無しさん:2005/06/22(水) 22:50:01
>> ttp://hp.vector.co.jp/authors/VA007941/program/no2051.html
> 固まる減少を回避できる

不覚にもワロタ
356345:2005/06/22(水) 23:21:24
>>353
さっきの書き込みの後、MessagePump()だけを使ってうまくいったんで、
報告しようと思って書き込みに来たらそのままのことを指摘して頂いることを知りました。
もう少し、やってみてから書き込むべきだったと反省しています。
>>354
> 根本が間違っているから、
> そのまま貼り付ければOKなんてものを探すな。
先生から「金曜までに…」と言われていたので焦ってお手軽な手を求めてしまっていました。
反省しています。
先のMessagePump()もどういう理屈なのか理解できていないまま使っていますが、
これから少しでも理解できるように努力していきます。

ありがとうございました。
357デフォルトの名無しさん:2005/07/04(月) 13:33:53
UpdateData(TRUE);
ix = m_ix; //m_ixはエディットボックスのメンバ変数

こんな感じでエディットボックスの数値を取得しようとしたんですが、
エディットボックスの値が数値以外や空白の場合、固まってしまいます。

デバックモードで見たところ、UpdateData(TRUE);で止まっているようなのですが、
どうすればよいのでしょう?
358357:2005/07/04(月) 20:57:12
こっちの方が質問スレに適しているみたいなので、こっちで質問しなおします。

★初心者にVisual C++を教えるスレ★ Part20
http://pc8.2ch.net/test/read.cgi/tech/1120222322/
359デフォルトの名無しさん:2005/07/28(木) 22:20:34
【環境】VC++6.0 Win2000 Access2000

DAOを使用し、以下のとおり実装しようとしてます。

1.D/B接続用インスタンス生成
2.D/B接続
3.レコードセットインスタンス生成
4.クエリーの発行
5.〜4の結果を使用した処理もろもろ
6.レコードセットクローズ
7.D/Bクローズ

全てローカルスレッドで処理すると正常に終わるのですが、
4.のみをワーカスレッド内で行うと7でエラーになってしまいます。
回避方法をご存知の方、どなたかお知恵をお貸しください。
360デフォルトの名無しさん:2005/09/09(金) 19:44:33
IMEバーがディスクトップに置かれている時、
強制的にタスクバーに戻して、MaxmizeでWindowを表示したい。
どなたか方法教えてください。

環境 VC++6.0 WndowsXP
361デフォルトの名無しさん:2005/09/09(金) 22:09:54
>IMEバーがディスクトップに
円盤上?
362デフォルトの名無しさん:2005/10/12(水) 10:53:31
遠隔操作ソフトを作りたいのですが、どなたか手を貸してください。
363デフォルトの名無しさん:2005/10/12(水) 23:32:42
VNCとかリモートデスクトップ接続で充分じゃん。
364デフォルトの名無しさん:2005/10/19(水) 15:45:04
VC6 SP6で

struct tako{
double x;
double y;
};
class hoge{
public:
struct tako ika[640][480];//←この位置で宣言するとおk
  struct tako kai[256][256];//←この位置で宣言するとおk
  void funk(void);
};

void hoge::funk(void){
//struct tako ika[640][480];//←この位置で宣言するとダメぽ
 //struct tako kai[256][256];//←この位置で宣言するとダメぽ
  ・
  ・
  ・
}

&ika[0][0]   →0x1063f664
&kai[256][0] →0x1063f664

てな感じでメンバ関数の中で配列宣言するとアドレス被るヤツが現れるのですが
(メンバ変数として宣言するとアドレスが被らない)
これって仕様ですかね?
365デフォルトの名無しさん:2005/10/19(水) 17:16:42
MFCまたはWin32APIでジョイスティックを使用する方法を知りたいです。
手っ取り早い方法または参考サイトを教えていただけるとうれしいです。
いろいろと検索かけてみましたがなかなか見つからないので、よろしくおねがいします。
366デフォルトの名無しさん:2005/10/19(水) 17:21:07
>>364
被るも何も範囲外じゃねーか
367デフォルトの名無しさん:2005/10/19(水) 21:46:16
>>364
kai[256]と宣言するとkai[0]〜kai[255]までの256個の要素が使える。
よって>>366
368デフォルトの名無しさん:2005/10/20(木) 07:44:42
ごめ間違えた
&ika[0][0]   →0x1063f664
&kai[255][0] →0x1063f664
369デフォルトの名無しさん:2005/10/20(木) 14:57:33
>>365
joyGetPosEx使え
1分もかからず検索できたぞ糞が
370デフォルトの名無しさん:2005/10/20(木) 21:59:33
>>364
とりあえず関数の自動変数にしたらスタックオーバーフローするだろ。
371デフォルトの名無しさん:2005/10/30(日) 23:06:35
VC++.NET 2003 で stdafx.cpp と stdafx.h をプロジェクトから外すとコンパイルエラーになるのですが外しちゃ駄目なのですか?
駄目なら理由を教えてくれると幸いです。
372デフォルトの名無しさん:2005/10/30(日) 23:19:31
>>371
その2ファイルはコンパイル時間短縮のためのプリコンパイルドヘッダにかかわっているから。
プロジェクトのプロパティからプリコンパイル済みヘッダを使わない設定にすれば削除できる。
373デフォルトの名無しさん:2005/10/31(月) 07:38:17
解りやすい説明ありがとう >372
374デフォルトの名無しさん:2005/11/03(木) 10:40:21
OS :Windows2000
言語 :VC++.net 2003
その他:Excel2000

VC++からExcelのデータを読み書き制御をやっているんですが、
Excelのセル(行)を挿入するってどうやればいいのですか?
(例えば1行目2行目にそれぞれデータが入っていて、
 2行目に新規でデータ行を挿入したい(元の2行目は3行目にずれる))

下記のURLを参考にさせてもらっているんですが、
セル挿入らしきものはなくて、URLのサイトから
[Excelを操作しよう]-[範囲指定したCellのコピーと貼り付け]
をクリックしたところに挙げられているやり方で、ずらしてコピーしていく
方法しかないのかな?と思っています。

もっと簡単な方法をご存知の方は、是非ご教授お願いします。

(参考URL)
ttp://www.attain-sys.com/vc/vc.html
375デフォルトの名無しさん:2005/11/03(木) 13:01:43
それこそVBAでやればいいことだと思うのだが。
376& ◆vFEdc9l4GY :2005/11/03(木) 17:42:17
>374
私へのレス…ですよね?
VCでは無理ってことですか?
仕事なんでVCで実現しなければならないんです(>_<)

もしご存知でしたら、お願いします。
377375≠374:2005/11/03(木) 18:17:01
>>376
いや、漏れなら仕事だからこそVBAでやっつけるような内容だと思っただけ。
つまり、その手の仕事はVBAで片付けるからVC++から制御したことはないのだよ。
Copy/Pasteができるのなら、その他の制御もできそうだから頑張って探したまえ。
378374:2005/11/03(木) 18:23:53
>> 377
374=376です。
376のレス先と名前が変になってました…。

なるほど、あまりVC++でやらない制御なのかな?
がんばって探してみます。

もし、やったことがある方がおられたら、お願いします。。
379デフォルトの名無しさん:2005/11/03(木) 21:22:40
とりあえずVBAでやれるか探して、(VBAならいっぱい見つかるだろう)
その後でそのルーチンをVC++へ移植すればいい。

ActiveXの建前として言語非依存がある。
ある言語でできることは他の言語でできないわけがないことになっている。
言語によって簡単だったり面倒だったりの違いはあるけど。
380374
>> 379

ありがとうございます。
まずはVBAで探してみますね。