ブログ

割とコンピュータよりの情報をお届けします。

2018年12月

C#で配列のソート

C#で配列のソートをする方法としてArray.Sortがある.

ただし,引数に与えた配列は順番が破壊されてしまう.

通常は,以下のようにするが,これだと元のtestは書き換えられる.

            Int32[] test = new Int32[5];
            
            for (int i = 0; i < test.Length; i++)
            {
                test[i] = test.Length - i;
            }
            Array.Sort(test);

もとの配列の中でのインデックスを記録しておきたい場合,test1にインデックスを記録しておき,Array.Sortに二つ配列を渡してやると,test1はソート前の配列での順番を表すことになる.

            Int32[] test1 = new Int32[5];
            Int32[] test2 = new Int32[5];
            
            Random rand = new Random(100);
            for (int i = 0; i < test1.Length; i++)
            {
                test1[i] = i;
                test2[i] = rand.Next();
            }
            Array.Sort(test2, test1);
 

≫ 続きを読む

2018/12/28 コンピュータ   TakeMe

Windowsタスクバーを表示したり非表示にしたり

Windows Embedded Standardの装置でタスクバーを非表示にしている例があった.最初はスタートメニューにそのような設定項目があるのかと思っていたが,どうもそうではないらしい.どのように行っているのか確認していると...

サンプルとして以下のようなコードで実施できる.

#include "stdafx.h"
#include <Windows.h>

int main()
{
    HWND hWnd = FindWindow(_T("Shell_TrayWnd"), NULL);

    ShowWindow(hWnd, IsWindowVisible(hWnd) ? SW_HIDE : SW_SHOW);

    return 0;
}

大したことのないアプリである.以下のようなコードでもよいです(Windows 10ではこれで動いていた).

#include "stdafx.h"
#include "WindowsProject2.h"


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    HWND hWnd = FindWindow(_T("Shell_TrayWnd"), NULL);
    ShowWindow(hWnd, IsWindowVisible(hWnd) ? SW_HIDE : SW_SHOW);
    return 0;
}

≫ 続きを読む

2018/12/05 コンピュータ   TakeMe

Visual Studio 2017ならWindows アプリケーションがテンプレートですぐに

猫でもわかるWindowsプログラミング を買ってからすでに,十数年たっているが,今でも十分に使える説明が多い。買った頃は,BCCでコンパイルしていた.

Windows Embedded Compact 用のアプリケーションもほぼ同じ説明で作れる

Visual Studio 2017なら最初の空のウィンドウ(メニューバー付き)を作るまでテンプレートで出来てしまう。

Visual Studio 2017ならプロジェクトを新規作成するときのダイアログで,Visual C++の項目Windows デスクトップ アプリケーションを選択すると,一気にウィンドウ作成まで行ってしまう.

説明との,違いといえば最近のバージョンのWindows(Windows Embedded Compactを含む)はWCHARが標準になっているところである.

つまり文字の処理関係が変わっている点だけ注意が必要である.しかし,説明自体は非常によくできている.

≫ 続きを読む

2018/12/02 コンピュータ   TakeMe