カテゴリー : プログラミング

このカテゴリーの登録数:107件 表示 : 61 - 80 / 107

Jan 19, 2006

今度は日立からワンセグケータイ登場

ポスト @ 12:16:17 | プログラミング,BREW

2.7インチ液晶搭載のワンセグ端末(ITMedia)

視聴中に電話がかかってきても、テレビ番組を約2分間まで一時保存して通話終了後に再生する「タイムシフト再生」機能を搭載する。音声付きの1.3倍速で再生するため、視聴しながら通常放送に追いつくことが可能だという。

これは同機種に搭載されてるSH-Mobile3Aの機能を利用したものと思われますが(ちなみにこの石は京ぽん2でも使われてます。もちろん京ぽん2ではワンセグは見れません。笑)、「2分間のタイムシフト」って、ワンセグでどれだけ意味があるのだろう。これ、組み込むために開発はそうとう大変だったと思いますよ…涙…

涙でキーボードがかすんできたので以下(ry

Jan 16, 2006

あっと驚くCS_DROPSHADOW

ポスト @ 19:08:47 | プログラミング,ATL/WTL

このウィンドウクラススタイルを指定すると、XPで、ウィンドウに影がつきます!
まさにここで悩んでいたモンダイがイッパツ解決なのです。

これ、MSDNで全文検索すると出てくるのですが、Kさんが別の調べ物してるときに偶然ハケーソしてちょっと今職場が熱くなった次第。ぐぐっても日本語ページではひっかからないし、これほとんど知られてない話なんだろうなぁ…

「小便たれ」ロジックとWTL::CClientDC

ポスト @ 19:00:33 | プログラミング,ATL/WTL

激烈に仕事してます。って単に火を噴いてるからなだけですが。苦笑
とりあえず今現時点においては猛烈な眠気の中がんばっております。

で、そういう状況ですとしょうもないミスが出るもので。

昨日、独自の描画が見事に動いたのはよいのですが、そのウィンドウが出た状態でUI操作を行うと、なぜか同じプロセスの別のウィンドウの再描画だけが行われない、という不可思議な現象が出ました。

そしてなにより、WM_TIMER が、SetTimer()は正常終了しているのにまったく受け取れません。

なんじゃこりゃ、的に悩んだわけですが。

もっと読む...

Dec 29, 2005

「メニューの下に影を表示する」はレジストリのココに格納される

ポスト @ 15:44:55 | プログラミング,ATL/WTL

Windows98以降の、「マウスポインタに影つける」やら「メニューがうにょ〜んと出てくるようになる」やらの設定、これを知る必要が出てきてしまいました。ええ、メニューもどきウィンドウを自前で書かないといけないので、設定を見て、他のWindowsが出すのとまったく同じのを出さなくちゃいけなくなってしまいました。涙

で、たいていの項目はSystemParametersInfo()で取れますし、「うにょ〜ん」はAnimateWindow()イッパツなのでまぁいいんです。

モンダイは、「コントロールパネル」-「画面のプロパティ」-「デザイン」-「効果」で指定できる中の、「メニューの下に影を表示する」。この値を取得する方法が、MSDNを調べても出ていません。

えぇぃ、こうなったら力技ぢゃ!

というわけでレジストリ追跡ツールを使って調べましたよ。笑
どうやら、HKCU\Control Panel\Desktop\UserPreferencesMask の19bitめがOnですと「影を表示する」、Offですと「表示しない」なようです。

まぁ、これを取得する方法が公開されていない、ということは、将来的に何か変更になる可能性があるってことでもあるわけですが、今回のプロダクツは「今のXPで動けばよい」ので、まぁこれを使えばよいのかな。

Dec 26, 2005

またまたドハマリ、「イメージリストコントロールを使い、Windows XP上で32ビットアンチエイリアシングビッ

ポスト @ 14:22:14 | プログラミング,ATL/WTL

いやもうなんで自分はここまで本筋じゃないところでハマるのか。元バイトで現在取締役社長のKさん(先日「うちの社は取締役が自分だけなんで『代表』つきませんから!」と指摘されました。すみませんでした。笑)からも「いずみさんていつも関係ないところでハマってますよね」と冷酷に指摘されてるのですが、今回の旅先での作業もまたまた大ハマリ。涙

今回のテーマは、「背景に画像などを持ってて、その上にアンチエイリアシングのかかったフォントやグラフィックでデジタル時計を表示するActiveXコントロール・XP上で動けばよい」です。
で、Win2000以上でなら、GDI+を使えばαブレンディングは比較的カンタンにできるのですけれど、「XPではイメージリストが32bitαチャンネルをサポートしている」というのをMSDN斜め読みしてるときに見つけ、「じゃー旅先で書いておきますよ」と決めたのです。
Kさんは「いずみさんなら2時間でできますよね」とまたまたお得意のプレッシャー。「えーそんなのムリだよー」と行っておいたのですが、確かにコード書いて2時間で時計は出来上がりました(^^;;)。

だがしかし。

もっと読む...

Dec 20, 2005

いやもうオマエはアフォかと、ヴァカかと。笑

ポスト @ 13:45:47 | プログラミング,ATL/WTL

今朝方出来上がったコントロール、既に存在している同じ機能を必要とするコントロールのうち1個の方にも無事取り込めて動作確認できています。

まぁ今朝できたといっても、結局仕様をかなり簡略化して、「ワーカスレッドからCOMイベントは投げない」という形にしたから、なのでぜんぜんだめだめなのですが。

でもさ。
もっとだめだめなのはさ。
「ワーカスレッドからのポインタのマーシャリング」といえば、お約束のように「GIT(グローバルインタフェーステーブル)」。そんなわけでぐぐってたんですけどね。

さー「GIT ATL」でぐぐってみよー!

もうさ、なんていうか、老化ここに極まれりって感じですよね。
自分でネット上に書き散らしておきながら、そのこと自体を完全にすっぽりと忘れ去ってるなんてさ。笑

あぁ、インターネットは私の巨大な備忘録。トホホ

CComBSTRのコンストラクタで文字列長に0を指定すると中身がカラになる

ポスト @ 6:32:40 | プログラミング,ATL/WTL

ハマりました。
こちらとしては、CComBSTR(0, "") みたいな呼び出しで、空文字列を表すBSTRが生成されるだろうってな前提で組んでて、そういうシチュエーションでCOMクライアント側が落ちるので「?」だったのですが、ソースコード読んだらイッパツ判明。何のことはなく、サイズが 0 だと内部ポインタをNULLにしてました…
これって仕様的にどうよ? って感じですが。まぁおとなしく::SysAllocStringLen()ですかねぇ…

お泊まりしてますのですのよ

ポスト @ 6:31:29 | プログラミング

やっぱり案の定夜までにできるわけもなくお泊まり。
途中2時間ほど寝落ちしてしまいましたが、さきほどようやく不安定ながら動くものができましてめどが立ちました…ほっ。

Dec 19, 2005

今日中にやらなければならないこと

ポスト @ 14:26:40 | プログラミング,ATL/WTL

STAで動作するけどワーカスレッドをプロセス内で共有して、そのスレッドからCOMイベントを投げる、という無茶なCOMオブジェクトを夜までにスクラッチ実装しなくちゃいけません。
組み込むべきコアロジック自体は既に動作しているものが使えるのですが、文字列をBSTRで扱うようにしなくちゃいけないし、ICollectionOnSTLImplとか使ったことないし、イベントポインタのマーシャリングなんかやったことないし、そもそもワーカスレッドをプロセス内で共有するのもやったことないし、って夜までに間に合うんかい! 笑

Dec 15, 2005

デジタルテレビが見れる携帯ですと…

ポスト @ 19:43:09 | プログラミング,BREW

「auのワンセグ対応携帯W33SA、16日から順次発売」(ITMedia)

KDDIは移動体向け地上デジタル放送「ワンセグ」に対応した新機種「W33SA」を、12月16日から順次発売する。東北、関東、北陸、関西、四国、九州エリアでは12月16日に、北海道、中部、中国、沖縄エリアでは17日にリリースする。

…そうですかようやく発売ですか…orz

「W33SA 開発者インタビュー」(SANYO)

ワンセグの放送規格をよりどころに、操作仕様を決定していきましたが、放送規格の解釈を巡って、様々な討議が行われました。操作仕様策定に関しては、 KDDI様、アプリメーカー様と一丸となり、会議室に1日中引き篭って議論を繰り返す日々が何日も続きました・・・
放送が無い中での開発において、最も大きな課題は「どうやって評価して、商品化に結びつけるのか?」ということでした。これについてもワンセグの放送規格をよりどころに、莫大な数の試験コンテンツを準備し、実放送が始まっても不具合が起こらないよう、入念に評価を実施しました。開発を実担当されている技術者の方々は、本当に大変だったと思います。

…orz orz orz orz orz orz orz orz orz orz…

ちょっと気が利くアドオンクラス、CCenterredWindow

ポスト @ 13:13:28 | プログラミング,ATL/WTL

ATL::CWindow クラスの CenterWindow(parent) は、parent に自分の親ウィンドウを指定しても、その親ウィンドウではなくオーナーウィンドウの位置に対してセンタリングを行います。
でもそうすると、ActiveXコントロールでの表示などでちと妙なことになりかねません。
ではCenterWindow()を使わずに、WM_CREATEまたはWM_INITDIALOGにて自前でセンタリングすればよいかといえば、その時点で既にポップアップウィンドウの親はオーナーウィンドウにすり替えられてしまっているのでムリです。
↓のアドオンクラスを使えば、そんな時に所与の目的を達成できます。

もっと読む...

Dec 14, 2005

WM_SETREDRAWのばかばかばかばか、ばかん 涙

ポスト @ 17:12:30 | プログラミング,ATL/WTL

またまたCDialogResizeにやられました…

コントロール内でポップアップ表示をする代わりに、自コントロール内に子ウィンドウを貼り付けてそこに表示する、というロジックを組んでいるのですが、描画は自分自身も子のもすべて自前なので、「その子ウィンドウがvisibleかどうか」で描画コードやリサイズ時の描画パーツ再レイアウトコードを条件分岐させてました。

こういう場合、一般的にはフラグを持つのでしょうけど、「ウィンドウがvisibleかどうか」というWindowsの内部情報と完全に同期するはずの情報をわざわざアプリ側で持つのは冗長です。もちろん、悪意あるアプリが外部からWM_SHOWWINDOWを送りつけるとかされるとアウトですけど、その場合は見た目ももともとおかしくなってしまうので、そこまでは考えなくてもよい、というのが常識的な判断だったはずです。

しかし、そのゆに実装してみたコントロールをCDialogResize含みのダイアログアプリコンテナに貼り付けて、そのダイアログをリサイズしてみたところ、なぜか、子ウィンドウたちのZORDERが崩れてしまいます。

もっと読む...

Dec 13, 2005

仕事以外で2月上旬までにやりたいこと

ポスト @ 20:53:56 | プログラミング

ただの備忘録です。

・Detegateを使ったtext/*のみgzip圧縮のhttp proxy、およびgzip圧縮のPOP3/IMAP4 proxy
・生バイナリデータを受信するとメールを組み立てて送信する中継サーバ

Dec 10, 2005

WinHTTPで解決

ポスト @ 1:39:09 | プログラミング,ATL/WTL

CAtlHttpClientがあまりに使えないという件、K君に尋ねたところ、このクラス他にもいろいろ悪さをするらしく、評判サイアクのようです。

結局、K君から教えてもらったWinHTTPを叩くことですんなり解決。いやー高速化に成功しました(^o^)

Dec 08, 2005

CAtlHttpClientはボディが空のリザルトでブロックする

ポスト @ 20:40:23 | プログラミング,ATL/WTL

本日のドハマリがコレ。

とりあえずサーバとhttpで通信するってんで、ATL7にある便利クラス、CAtlHttpClientを使ってみました。おーこれはお手軽だ!

…と思ってたのも束の間。

サーバ側がテストコードをはずした途端、なぜか激重に。(u_u)

いろいろ悩んで調べたのですが、どうやら、CAtlHttpClientは空の本文を受信するとブロックするようです。
サーバ側がデバッグ出力を返していたため、データなしの場合もスムーズに進んでいたのですが、サーバ側が何も返さないと、CAtlHttpClientは「来るはずのない本文を待ってしまう」のですね。で、タイムアウトはきちんと動くので、しばらくすると制御は戻ってきて、結果として「激重に見える」というわけでした。ちゃんちゃん。

さーどうする。解決策はいくつか考えられますがどれもスマートじゃないなぁ。。。

Nov 30, 2005

WTL::CDialogResizeで WS_CLIPCHILDRENを指定するとグループボックスの背景が塗りつぶされない

ポスト @ 22:14:36 , 修正 @ Aug 21, 2009 11:16:13 | プログラミング,ATL/WTL

今おしごとで作っているのはあくまでもコントロール。そのテストのためだけに存在するリサイザブルダイアログボックスはオマケ中のオマケに過ぎず、そこで本筋に関係ない問題で悩んでも200%有害なだけなのですが…

グループボックス(ラジオボタンを四角い枠線で囲ってあるやつ、設定画面でごく普通に出てきます)を貼ったダイアログボックスを、WTLの超有用クラス、CDialogResize で、リサイズ動作中のちらつき防止のため WS_CLIPCHILDREN を指定して動作させると、グループボックスの背景だけが見事に消去されません。

これ、あまりにキモいので、元バイトで今は代取のK君に質問してみたところ…

もっと読む...

Nov 29, 2005

そりゃーstableになんねーよ! 笑

ポスト @ 20:47:33 | プログラミング,C++

本日のドジ。

CContentDataクラスの、特定のメンバで比較を行う Less関数オブジェクトを作りまして、それをstd::stable_sort()に食わせて、std::deque をソートする機能を作りました。

で、それができた後、「同じソート用キーが何度も押されたら、トグルで昇順・降順でのソートを切り替えてくださいよ」てな話になりまして。

std::stable_sort(list.begin(), list.end(), CContentData::HogeLess());

なんてコードで昇順ソートはできていたので、降順用に

std::stable_sort(list.begin(), list.end(), std::binary_negate(CContentData::HogeLess()));

って書いてみたのですがコンパイルエラー。

もっと読む...

Nov 19, 2005

なぜPHPの時代がやって来ないのか

ポスト @ 19:51:25 | プログラミング,PHP

昨晩は、おととしから去年まで1年間在籍してた会社のときの同僚、siさんとアキバにて3時まで呑み、プログラミングなどの話題で盛り上がりました。

で、そこで出てた話が「なんでPHPは目立って流行ってはいないのか?」
いや、PHPを使ったサイトなど腐るほどある、というのは当然なのですが、この業界そのものや、また周辺業界(例えば今年夏まで働いてたゲーム会社)では、PHPが実務で使われている言語だということを知らないお偉方がけっこうおられるのです

もっと読む...

Nov 16, 2005

ATLコントロール内に自前で貼り付けたコントロールのフォーカシング

ポスト @ 12:36:22 | プログラミング,ATL/WTL

複合コントロールでない、普通の CWindow な ATLコントロールを作って、その中にボタンとかを自分で Create()して貼り付けたような場合、そのコントロールをダイアログボックスに貼り付けたりしたときに、Tabキーによるフォーカス移動がうまくいきません。

MSDN 読んだ限りでは、各コントロールに WS_TABSTOP を指定するのは当然としても、親ウィンドウに WS_EX_CONTROLPARENT も指定しなければならないようです。

だがしかし。
実際にそうしてみると、特定のボタンをクリックしたりすることによって、アプリ全体(正確には「メッセージキューを持つスレッド自体)がフリーズしてしまいます。

もっと読む...

Nov 15, 2005

CFlatPopupMenu

ポスト @ 16:07:55 | プログラミング,ATL/WTL

本日より新規の開発に入っておりますが、今回の最大の難関は「吹き出し形のポップアップメニュー」。

さてどうしたものかと思い、ぐぐっているうちに、それそのものズバリじゃないですけど、

http://www.codeguru.com/Cpp/controls/menu/alternativemenu/article.php/c189

にたどり着きました。
で、ソースコード覗いてビクーリ!!!

これ、完全自力でウィンドウ描いてるだけやん。

実はメニューウィンドウに対してGetWindowDC()すればよいようではありますが…さてどうしたものやら。まぁでも、がんばればなんとかなることだけはわかったわけですね。笑