reset_cat の回答履歴
![](https://gazo.okwave.jp/okwave/images/contents/av_nophoto_100_2.gif)
- recv関数でフリーズしてしまう
現在Winsockを用いた簡単なパケット送受信のソフトを作成しています。 開発環境はVisual Studio2008で、ダイアログベースで作成しています。 パケットの受信側の処理なんですが、いつパケットが来てもいいように、 Ontimerで、定期的に受信処理をしようと思っています。 そこでOntimer内に以下のようにプログラムしたところ、コンパイルエラー はないものの、数秒経つと応答なしとなりフリーズしてしまいます。 原因を探ったところrecv関数が原因で、recv関数をコメントアウトした ところ、フリーズはしなくなりました。また、エラー処理は省略していま すが、ソケットの作成失敗などはありませんでした。 なぜrecv関数でフリーズが起きてしまうのか、原因が分かる方は いらっしゃいますか? OnTimer(UINT nIDEvent){ WSAData wsaData; SOCKET sock; struct sockaddr_in addr; char buf[2048]; WSAStartup(MAKEWORD(2,0), &wsaData); sock = socket(AF_INET, SOCK_DGRAM, 0); addr.sin_family = AF_INET; addr.sin_port = htons(12345); addr.sin_addr.S_un.S_addr = INADDR_ANY; bind(sock, (struct sockaddr *)&addr, sizeof(addr)); memset(buf, 0, sizeof(buf)); recv(sock, buf, sizeof(buf), 0); closesocket(sock); WSACleanup(); }
- モジュールからの呼び出し - Panel内こんとろ~る
モジュールからあるフォームのラベルのテキストを変更する下記のようなプログラムがありました。 Dim Frm as New Form Dim i as integer(カウンタ用変数) Frm = New_Frm(変更するオブジェクトのフォーム名) i=0 for i=0 to 3 Frm.controls("Label" & i).text= i next このようなプログラムがあり、見た目・配置変更が容易という都合上でLabel1~3をPanel上に配置し実行したところエラーが起きました。 この場合、どう書き換えればいいのでしょうか?
- ベストアンサー
- tyosu
- Visual Basic
- 回答数2
- ボタンをクリックして画面遷移させる方法について
flash初心者です。 cs4でAS3.0を使っています。 ボタンをクリックするとgotoAndPlayでラベルの指定してあるフレームに飛ぶように設定したいのですが、クリックしても全く反応してくれません。 ボタンは「next」と「top」の2つを画像(ボタンシンボル)で作成しています。 アニメーション後にこの2つのボタンが出て、それぞれをクリックすると別のアニメーションに飛ぶという流れを考えています。 記述したAS3.0は下記です。 --------------------------- stop(); var topBtn01:SimpleButton = new SimpleButton(); var nextBtn01:SimpleButton = new SimpleButton(); topBtn01.addEventListener(MouseEvent.CLICK,top01Click); nextBtn01.addEventListener(MouseEvent.CLICK,next01Click); function top01Click(event:MouseEvent):void{ gotoAndPlay("top01"); } function next01Click(event:MouseEvent):void{ gotoAndPlay("next01"); } ----------------------------------- それぞれのボタンにインスタンス名を「topBtn01」「nextBtn01」とつけています。 ちなみに、エラーは何も出ていません。 ただ、変数を定義しているはじめの2~3行目を抜くと下記のエラーが出ていました。 --------------------------- TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at top_main_fla::MainTimeline/frame251() --------------------------- どうしたら良いか、どなたか教えてください。 よろしくお願いいたします。
- ListBoxで大文字と小文字
ListBoxで大文字と小文字 こんにちは。 C#+.NetFrameworkです。 ListBoxなのですが、アイテムを更新する際に、元の内容と大文字と小文字だけが異なる文字を設定した場合に、表示が変わってくれません。 たとえば、listBox1の最初の項目にabcと設定されていた場合に、 listBox1.Items[0]="ABC"; としても、画面表示がabcのままなのです。 実際のデータは書き換わっていて、データを取り出してみると、ABCが入っています。 表示もABCになってほしいのですが、方法はあるのでしょうか?
- ダイアログのクラス化で仮想関数を用いて派生クラスにしているんです
ダイアログのクラス化で仮想関数を用いて派生クラスにしているんですが・・・ ダイアログを基本クラスで静的プロシージャと派生クラスでオーバーライドしてプロシージャを使いたい のですが、どうしても自身のポインタが取得できません。 以下にソースを載せておきます。 class CBaseWnd { public: // ポインタの設定 void SetPointer( HWND hWnd ); // ウィンドウプロシージャの呼び出し static LRESULT CALLBACK CallProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); // ウィンドウプロシージャの実装 virtual LRESULT MainProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); }; [クラスの実装] //===== ポインタの設定 =====// void CBaseWnd::SetPointer( HWND hWnd ) { SetWindowLong( hWnd, GWL_USERDATA, (LONG)this ); } //===== ウィンドウプロシージャの呼び出し =====// LRESULT CALLBACK CBaseWnd::CallProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { //_プロパティリストからthisポインタを取得 //ここでポインタを取得することができないでいます。値が0です。 //先にSetWindowlongをやっても値が0のままです。 CBaseWnd* thisPtr = (CBaseWnd*)GetWindowLong( hWnd, GWL_USERDATA ); //_thisポインタが取得できなかった場合... if( ! thisPtr ) { //_ウィンドウの作成時の場合... //ここでアクセス違反というエラーが起きる if( message == WM_INITDIALOG ) thisPtr = (CBaseWnd*)((LPCREATESTRUCT)lParam)->lpCreateParams; //_thisポインタが取得できた場合... if( thisPtr ) { //_プロパティリストにオブジェクトハンドル(thisポインタ)を設定する thisPtr->SetPointer( hWnd ); } } //_thisポインタが取得できた場合... if( thisPtr ) { LRESULT lResult = thisPtr->MainProc( hWnd, message, wParam, lParam ); return lResult; } return DefWindowProc( hWnd, message, wParam, lParam ); } //===== ウィンドウプロシージャの実装(継承可能) =====// // ここでの記述はデフォルトの処理 // LRESULT CBaseWnd::MainProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) { //_ウィンドウが破棄された場合 case WM_DESTROY: PostQuitMessage(0); return 0; //_デフォルトの場合 default: return DefWindowProc( hWnd, message, wParam, lParam ); } } WM_INITDIALOGでダイアログの初期化中にポインタを取得しようとしますが、アクセス違反が起こり失敗します。 どなたか分かる方がいらっしゃったらご指摘お願いします。
- recv関数でフリーズしてしまう
現在Winsockを用いた簡単なパケット送受信のソフトを作成しています。 開発環境はVisual Studio2008で、ダイアログベースで作成しています。 パケットの受信側の処理なんですが、いつパケットが来てもいいように、 Ontimerで、定期的に受信処理をしようと思っています。 そこでOntimer内に以下のようにプログラムしたところ、コンパイルエラー はないものの、数秒経つと応答なしとなりフリーズしてしまいます。 原因を探ったところrecv関数が原因で、recv関数をコメントアウトした ところ、フリーズはしなくなりました。また、エラー処理は省略していま すが、ソケットの作成失敗などはありませんでした。 なぜrecv関数でフリーズが起きてしまうのか、原因が分かる方は いらっしゃいますか? OnTimer(UINT nIDEvent){ WSAData wsaData; SOCKET sock; struct sockaddr_in addr; char buf[2048]; WSAStartup(MAKEWORD(2,0), &wsaData); sock = socket(AF_INET, SOCK_DGRAM, 0); addr.sin_family = AF_INET; addr.sin_port = htons(12345); addr.sin_addr.S_un.S_addr = INADDR_ANY; bind(sock, (struct sockaddr *)&addr, sizeof(addr)); memset(buf, 0, sizeof(buf)); recv(sock, buf, sizeof(buf), 0); closesocket(sock); WSACleanup(); }
- C#でボタンクリックをキャンセル
C#でボタンクリックをキャンセル こんにちは。 C#+.Netです。 ・テキストボックスとボタンを持つフォーム ・ボタンが押された時にテキストボックスの内容をチェックする。 ・OKであれば、そのままフォームを閉じる。 ・NGであればメッセージボックスを表示して、フォームは開いたまま。 というフォームを作成したいのです。 フォームはShowDialogで表示させます。 ボタンのDialogResultには、DialogResult.OKを設定してあります。 ボタンのClickイベントを使って、メッセージボックスを出すことはできたのですが、フォームを開いたままにすることができません。 あるいは、ボタンのDialogResultはNoneのままにして、イベントハンドラ内から、フォームを閉じる方法がないかと思ったのですが、それもわかりません。 どのようにすればよいのでしょうか?よろしくお願いします。
- 【C#】インデックス番号(?)の取得
いつもお世話になってます。 C#に関して質問です。 VisualC#2008を使用しています。 private System.Windows.Forms.PictureBox[] kihon_pic = new PictureBox[100]; のように、ピクチャーボックスのコントロール配列を作り、あるピクチャーボックスがクリックされたときに、そのピクチャーボックスのインデックス番号(?)を取得できるようにしたいと思っています。 例えば、クリックされたピクチャーボックスはkihon_pic[4]であるとか、kihon_pic[7]であるとか、そういった具合にです。 誰か方法が分かる人がいましたら、ご回答をよろしくお願いします。
- VC++ Express m_hWnd
VC++ Express edition 2008で、Command Promptを起動、directoryを替えようとして、 HINSTANCE ret = ShellExecute(m_hWnd,"open","cmd.exe",NULL,"c:\\Program Files",SW_SHOW) で、m_hWndが定義されていないとエラーが出てきました。VC++2005 standard version では出るようですが、Express edition 2008では定義されてないようです。この部分、Expression editionではどのように定義するのか教えてください。2008 Express editionで別の変数が適当であれば、そちらを教えていただけませんか?
- CTreeCtrlのノードごとにアイコンを変えたい
おせわになります。 C++6.0 MFC で開発しております。 現在,CTreeCtrlで、下記のような画像付き(●:画像)のツリーを表示しています。 ●AAA-●bbb -●ccc -●ddd そこで、下記のようにノードごとに画像を変えたいのですが、どのような関数を使用すればよいのでしょうか? ●AAA-★bbb -◆ccc -□ddd お手数ですがなにとぞよろしくお願いします。
- asusのマザーボードM2A-VM HDMI のビデオカードのドライ
asusのマザーボードM2A-VM HDMI のビデオカードのドライバはどこからダウンロードするといいでしょうか?このビデオカードはオンボードです。OS初期化してこのマザーボードのCDデスクがないです。
- パソコンとPCモニターをHDMIで繋ごうとしているのですが
>パソコンとパソコン用モニタをHDMIなどのマルチメディアインターフェイスでつなぐことはお勧めできません。いろんな面で問題が出てくると思います。 DVIつないだほうが無難です。 過去の、他の方の質問の答えを見てたんですが、このような文章があってちょっと気になってます。 例えばどのような問題が発生するのでしょうか? NVIDIA GeForceGTS250(1GB)からWestingHouseL2235HW(HDMI端子1.3Ver)に、PLANEX HDMI Ver.1.3規格カテゴリ2対応 ハイスピードHDMIケーブル を使用して接続してみたいと思ってるんですが・・・。
- 締切済み
- sugatan585
- ビデオカード
- 回答数2
- VC++ Express m_hWnd
VC++ Express edition 2008で、Command Promptを起動、directoryを替えようとして、 HINSTANCE ret = ShellExecute(m_hWnd,"open","cmd.exe",NULL,"c:\\Program Files",SW_SHOW) で、m_hWndが定義されていないとエラーが出てきました。VC++2005 standard version では出るようですが、Express edition 2008では定義されてないようです。この部分、Expression editionではどのように定義するのか教えてください。2008 Express editionで別の変数が適当であれば、そちらを教えていただけませんか?
- [C#]ListView一覧表示時の幅設定について
[開発言語] C# [開発環境] Visual Studio 2005 C#のListViewに関して質問です。 ViewプロパティにListを指定した場合のItemの幅はどのように設定するのでしょうか? 理想としては、エクスプローラのように ItemのTextの長さに応じて最適な幅に調節したいのです。 よろしくお願いいたします。
- 締切済み
- chowwwwwww
- その他(プログラミング・開発)
- 回答数2
- VC++2008 の中断/再開ボタンについて
MFCにて開発しております。 forループにて処理を走らせております。 処理時間が長いので、 進行状況ダイアログをモーダレスダイアログにて表示しております。 進行状況ダイアログには中断ボタンが存在し、 中断ボタン押下で処理が一時中断すし、「再開」ボタンへと名称が変わる。 再開ボタンを押下することで、引き続き処理が走る という処理にしたいと考えております。 この中断ボタンの処理ですが、WaitForSingleObject関数を使用しようかと考えておりますが、 どうもMSDNやネットで検索しても、使い方が良くわかりません。 DWORD WaitForSingleObject( HANDLE hHandle, // オブジェクトのハンドル DWORD dwMilliseconds // タイムアウト時間 ); この「HANDLE hHandle」にはどういった形のものを使えば良いのでしょうか。 (HANDLE自体を調べましたが良く意味がわかりませんでした・・・) もしよろしければご教授頂けたら幸いです。
- VB2008でのコンボボックスの扱いについて
VB2008でのコンボボックスの扱いについて 教えてください。 コード(3桁)と名称をコンボに設定したいの ですが、 例えばコード1桁の時、3桁の時でも後に続く 名称の先頭を揃えたいのですが。 VB6の時は .AddItem Format("01", "@@@!") & "名称"で できたのですが。 VB2008で .Items.Add("01".PadRight(3) & 名称)で 実行すると微妙にずれるのですが。 何か良い方法を教えて頂きたいのですが。
- ベストアンサー
- cw3629
- Visual Basic
- 回答数1
- VC++2008 の中断/再開ボタンについて
MFCにて開発しております。 forループにて処理を走らせております。 処理時間が長いので、 進行状況ダイアログをモーダレスダイアログにて表示しております。 進行状況ダイアログには中断ボタンが存在し、 中断ボタン押下で処理が一時中断すし、「再開」ボタンへと名称が変わる。 再開ボタンを押下することで、引き続き処理が走る という処理にしたいと考えております。 この中断ボタンの処理ですが、WaitForSingleObject関数を使用しようかと考えておりますが、 どうもMSDNやネットで検索しても、使い方が良くわかりません。 DWORD WaitForSingleObject( HANDLE hHandle, // オブジェクトのハンドル DWORD dwMilliseconds // タイムアウト時間 ); この「HANDLE hHandle」にはどういった形のものを使えば良いのでしょうか。 (HANDLE自体を調べましたが良く意味がわかりませんでした・・・) もしよろしければご教授頂けたら幸いです。
- Visual studio 2008 Express Edition
Visual studio 2008 Express Edition C# を使用して シリアルポートにアクセスする方法を教えてください。 以前にC++Builderを使用してRS-232Cをアクセスするプログラムは作成したことがあるのですが、 10年以上前のことなので忘れてしまい、 参考文献も捨ててしまいました。 どのクラスを使用すれば、最適なのかご存知のかた教えてください。 なお、Express Editionが無理なら、 Professional Edition でもかまいません。 どうかよろしくお願いします。
- 締切済み
- go_sydney
- その他(プログラミング・開発)
- 回答数2
- [C#]ListView一覧表示時の幅設定について
[開発言語] C# [開発環境] Visual Studio 2005 C#のListViewに関して質問です。 ViewプロパティにListを指定した場合のItemの幅はどのように設定するのでしょうか? 理想としては、エクスプローラのように ItemのTextの長さに応じて最適な幅に調節したいのです。 よろしくお願いいたします。
- 締切済み
- chowwwwwww
- その他(プログラミング・開発)
- 回答数2
- 簡単なネットワークプログラムなのですが・・・
ネットワーク通信の基礎を学ぼうと、いろいろなサイトをみながらSocket通信の簡単なメッセージ送受信を行おうとしているのですが、streamを使って送信したメッセージを送信、又は受信するときにsocketを閉じないと送信できません。 そして常に受信させたいのですが、socketを閉じているため、nullexceptionになってしまいます。 何か別の手はありますでしょうか・・・? 現在↓のような感じで行っています。 private void 待機ToolStripMenuItem_Click(object sender, EventArgs e) { //サーバーを開始 Int32 port = 9999; IPAddress localAddr = IPAddress.Parse("127.0.0.1"); server = new TcpListener(localAddr, port); server.Start(); threadA = new Thread(recvData); threadA.Start(); } // 受信用(マルチスレッド) public void recvData() { //接続待機 this.Invoke(new MyDelegate(delegate { textBox1.Text = "接続待機中"; })); TcpClient client = server.AcceptTcpClient(); //接続 this.Invoke(new MyDelegate(delegate { textBox1.Text = "接続されました"; })); NetworkStream stream = client.GetStream(); // 無限ループ while (true) { Byte[] bytes = new Byte[20]; //わざと小さく取ってある。 int i; //メッセージを受信 while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { String data = System.Text.Encoding.UTF8.GetString(bytes, 0, i); Console.WriteLine(String.Format("受信: {0}", data)); } client.Close(); }