<   2004年 08月 ( 57 )   > この月の画像一覧

e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

MFC内部のリソースを2カ国語分含める方法

リソース名の付け方でも説明しましたが、最近、国際版アプリを作製する機会が増えました。

そして、問題が発生しました。
英語版のアプリで未保存のファイルを閉じようとすると、「Untitled 1 ?????????」と表示されるというのです。
これは、まさしく日本語文字列の問題です。
日本語文字列が英語版OS上で表示できないため、「?????」に変換されてしまっているのです。
そして、プロジェクト中からは、この文字列が見つかりません。

そして、探すこと数時間。。。

やっと問題のリソースを発見しました。
ファイル名が「afxres.rc」です。
これは、MFCが自動的に組み込むリソースで、通常、使っているIDEの言語によって、日本語、英語、フランス語、、、
等と、自動的に組み込まれます。

アプリケーションの「xxxx.rc」ファイルの最下部に、以下のような内容が書かれています。

#ifndef APSTUDIO_INVOKED
//////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
#ifdef _WIN32
LANGUAGE 17, 1
#pragma code_page(932)
#endif
#include "res\xxxx.rc2" // Microsoft Visual C++ 以外のツールで編集されたリソース
#include "l.jpn\afxres.rc" // 標準のコンポーネント
#include "l.jpn\afxprint.rc" // 印刷/印刷プレビュー リソース
#endif
/////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED


ここでは、アプリケーションのリソースにMFCのリソースを読み込んでいます。
赤字の部分が問題の箇所です。
ここで、日本語のリソースのみをインクルードしています。
「l.jpn」フォルダ内に、日本語のリソースがまとめられているのです。

いろいろやってみて、afxres.rcファイル中での2重読み込みの防止の解除や、ちゃんと英語のリソースとして読み込むために以下のように変更しました。

#ifndef APSTUDIO_INVOKED
///////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
#ifdef _WIN32
LANGUAGE 17, 1
#pragma code_page(932)
#endif
#include "res\xxxx.rc2" // Microsoft Visual C++ 以外のツールで編集されたリソース
#include "l.jpn\afxres.rc" // 標準のコンポーネント
#include "l.jpn\afxprint.rc" // 印刷/印刷プレビュー リソース

// ここから ->
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#undef __AFXRES_RC__
#include "afxres.rc" // 標準のコンポーネント
#undef __AFXPRINT_RC__
#include "afxprint.rc" // 印刷/印刷プレビュー リソース
#endif
// <- ここまでを追加


#endif
//////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

かなり、回りくどいやり方ですが、なんとか、日英の両刀になりました。。。
やっていることは、日本語版と、英語版の両方のリソースを読み込むという単純なことなのですが、、、
本当はもっと良い方法が隠されているんじゃないかと思います。
[PR]
by isoq | 2004-08-28 18:35 | 開発日記
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

IISより先にインストールされたASP.NETを有効にする

.NET Framework SDKをインストールするときに、自動的にIISが構成されるので、.NET Framework SDKをインストールするよりも先に、IISをインストールしておく必要があります。
そうしないと、IISをインストールしても、ASP.NETが動かない、ということになります。
具体的には、単なるテキストファイルと解釈されて、ブラウザにソースが表示されることになります。

これは、.NET Framework SDKのインストール時に、IISのスクリプトマップが設定されるからです。
スクリプトマップとは、Windowsのファイルの関連付けと同様で、IISで処理するファイルの拡張子と、処理するスクリプトエンジンの関連付けを行うことです。

後からIISをインストールしてしまった場合には、専用のコマンドラインツールを使用して、スクリプトマップの再登録を行うことが出来ます。
コマンドプロンプトを開き、以下の手順で再登録できます。

1. >cd %windir%\Microsoft.NET\Framework\<リターン>
カレントディレクトリを、.NET Frameworkのディレクトリに移動します。
ドライブが異なる場合は、「d:<リターン>」等と入れて、カレントドライブを変更します。

2.>dir<リターン>
ディレクトリの内容の一覧を表示します。
この中から、「v1.1.xxxx」というフォルダ名を確認します。
xxxxの部分にはビルダ番号が入ります。
もし複数の「v1.1」があったら、一番新しいものに目を付けて下さい。

3.>cd v1.1.xxxx<リターン>
「v1.1.xxxx」ディレクトリに移動します。

4.>aspnet_regiis -i<リターン>
ASP.NETのスクリプトマップを再構成します。

詳しいツールの使い方は、MSDNのここで説明されています。

私も、会社のPCでは、今までASP.NETを使う予定がなかったので、サンプルをインストール後、IEでローカルサイトを見るとソースが表示されてしまって焦りました。。。
[PR]
by isoq | 2004-08-28 10:46 | Web
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

マイクロソフトの迷惑メール

先ほど、Visual Studio 2005 Express Beta Productsをダウンロードしようと思い、メールアドレスや個人情報を登録し、「Submit」したら、確認メールを送ったから、そのアドレスをクリックしろとのことでした。
私のメールアドレスは、hotmailのものをしようしました。
待っていたんですが、いっこうにメールが来る気配がないので、試しに「迷惑メールフォルダ」をのぞいてみると、、、

「あった。。。」

最近は迷惑メールの機能が強化されていて、迷惑メールはほとんど受信箱に届かないようになっては来ていましたが、まさかMicrosoftからのメールまではじかれるとは。。。
[PR]
by isoq | 2004-08-28 02:34 | 日記
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

Visual Studio 2005 Express Beta Products

Visual Studio 2005 Express Beta Products が出てますね~
いつの間にか。。。
(最近世間との壁が気になりはじめました。。。)
時間を見繕って試してみたいですね~

ベータ版をダウンロードし放題みたいですよ~
プロでもアマでも、誰でも試せますので、ぜひプログラミングの世界に足をつっこんでみてください。

※はまって抜けられなくなっても責任は取れません (^^;
[PR]
by isoq | 2004-08-28 02:02 | 開発日記
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

タブ形式とMDI形式

VS.NETには、複数のソースコードのウインドウを切り替える方式として、タブ形式とMDI形式があります。

タブ形式では、常にファイル名がタブに表示されていて、そのタブをクリックすると、そのファイルが編集できるようになります。
便利なんですが、ソースを左右に並べて、とか、ダイアログエディタを表示しながらソースをいじるとかしたいときがあります。

そんなときには、MDI形式にすると便利です。
MDI形式では、通常のMDIアプリと同じように、外枠のウインドウの内側に複数の小窓を表示して、サイズを変えて並べたり出来ます。
タブ形式では、クライアント画面に1つのソースだけしか表示することが出来ませんので、ちょっとその面で不便です。

現状では、その切り替えは、環境設定の中で行い、VS.NETを再起動すると、変わります。。。
もうちょっと、オンデマンドに切り替えは出来ないもんですかね~
それか、MDI形式のところに、タブ形式のようなタブだけツールバーに表示できたりしたら良いのに~
[PR]
by isoq | 2004-08-26 15:04 | 開発日記
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

リソース名の付け方

最近、国際版アプリを作製する機会が増えました。
普段は、英語から日本語のローカライズは良くやっていたのですが、今度は日本語版から英語版。
ソフトを輸出しちゃおう!という魂胆です。
というか、もともと英語でも日本語でもOSによって勝手に選択されるように作るのが一般的です。
それをするには、使用する文字列なんかを、すべて文字列リソースに放り込むやり方が一般的です。
そうなってくると、文字列リソースの名前の付け方が問題になってきます。
なんたって、大量の文字列があるんですから。

わかりやすい名前を付けたい。

でも、意味がある名前を付けても探すのが大変、ぐちゃぐちゃで醜い。

じゃ、数字でいこう!(探すときは検索すればOK!?)

となるわけでして、ただいま、IDS_APP_0001から順番にリソース名を振っていますIDS_STRING129 という自動的に付けられるリソース名をそのまま使用しています。
経験(者)が乏しい現場ですので、それで良いのか?謎ですが、とりあえずそれでスタートしてみました。

国際アプリを作っている方がいましたら、名前の付け方を教えて下さい。。。
[PR]
by isoq | 2004-08-26 14:56 | 開発日記
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

VS.NET と Visual Source Safe

さいきん、ようやく VisualStudio.NET を使用するようになってきた。
MSDNに入っていたので、VS.NET2002の時代から送られてきてはいたが、数回試しに使ってみてはいたが、「まだまだ未完成」というレッテルを勝手に貼り付け、嫌遠してきた。
使った感想は、VS97のときに抱いた感想とほぼ同じ。
そして、MSDNを1年更新し、VS.NET2003が送られてきた。
そして、1年がたち、MSDNが切れた頃、ようやく使い始めたというわけです。
VS.NET2003がまずまず使えるレベルになってきていますね~
VS6と比べても、ソース管理や全体的な使用感が向上していることを感じます。

そのソース管理で問題にぶつかりました。
VS6の時代までは、「どのプログラムにも使える共有コードをまとめた、ヘッダ&CPPファイル」を、Common フォルダにおき、いろいろなプロジェクトから参照して使用してきました。
VS6のVSS連携機能では、それが可能だったのですが、VS.NETのVSS連携では、「ソリューション フォルダの外側のファイルに対しては、プロジェクトに含めてもVSSで管理できない」と、IDEに文句を言われるのです。

なにか、方法があるのでしょうか?
[PR]
by isoq | 2004-08-26 14:40 | 開発日記
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

暴君ハバネロ

暴君ハバネロ

わたし、辛いものが好きなんです。
暴君ハバネロもコンビニにおいてあることは知っていましたし、パッケージを見る限り辛そうには見えるんですが、
たかが「ちょっと辛い子供のお菓子」じゃないか。
と思っていたんです。

最近、近所のセブンイレブンで「いくら以上買うとくじが引ける」イベントをやっていて、適当に引いたら、暴君ハバネロがあたりました。
食べてみて、「やっぱりそんなに辛くないじゃん!」という感想でした。
ちょっとのどがひりひりする感覚はありますが、それほど「劇辛」という程ではありませんでした。
これが、夕食後のことでした。

そして翌朝、トイレにいくと、暴君が暴れ出しました。。。。
大の方をすると、激痛に襲われたのです。
「こ、これは、スパゲッティにタバスコを半分近く掛けて食べた時と同じ症状だ!」
ととっさに判断しましたが、後の祭りでした。
辛いものには注意しましょう!
後が辛いですよ~!

ちなみに、このリンク(暴君ハバネロ)は、
オークションで、自分で自分好みの暴君を東ハト関東工場・中央研究所で開発し、それを食する権利を買うことが出来るみたいですよ~
だれか!超激辛暴君を作って下さい!
[PR]
by isoq | 2004-08-26 12:42 | 日記
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

おみやげプレゼント、無事に届く

昨夜、ITエンジニアで2児のPapaのcrabさんに、おみあげプレゼントの苺みるくちゃんが、無事に届けられました。
あ~良かった。

実は裏で極秘裏に計画を立て、crabさんと、某山手線の駅で待ち合わせ、某自動車会社の本社ビルの地下にある焼鳥屋に行きました。

私、あまり子持ちの友達がいないのです。
大学時代の友達は、独身80%、既婚20%ですが、まだ子持ちはいません。
なので、子供ネタが通じるcrabさんとは、すごく楽しい時間を過ごすことができました。

私のcrabさんの印象は、「想像とかなり違う」でした。
ラグビーをやられていたとのことだったので、ものすごく体格の良い方(ぽっちゃりめ)だと思っていたのですが、、、勝手な想像でした、ごめんなさい。

またあう機会がありましたら、遊んでくださいね~ > crabさん
[PR]
by isoq | 2004-08-26 01:32 | 日記
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

コラムの投稿開始

これから、ここでプログラミングに関する基礎知識から、言語仕様、テクニックなどに関するコラムを掲載していこうと想います。
今まで、(PocketPCを買ってからというもの)すでに結構な量(20タイトルくらい)を書きためているのですが、どのように公開しようか悩んでいました。
というのも、作成・保守・外観、など、結構こっちゃったりするんです。
そうなると、コラムどころではなく、見栄えの良い自分専用Webアプリをどうやって作ろうか、、、と、その設計から入ろうとしてしまうのです。
こうなると、これが完成するまでは、コラムを書き出す(清書する)ことが後回しにされてしまい、しかも、時間が無いので、いつになることやら、、、、ということになってしまいます。

そこで、このブログを使用して、コラムの投稿を順不同で気ままに行い、私のホームページでそのインデックスを作成する方式で、やってみようと思った次第です。
「分かりやすくて、役に立つコラムを書いていければ良いな~」
というのが、とりあえずの抱負です (^ ^)
[PR]
by isoq | 2004-08-21 02:48 | 日記
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇