Win32でも分からなくなりました。
単純に言うと、CreateWindow()、CreateWindowEx()で、ウインドウ、リストビュー作成すると、以下ビルドエラーが出ます。
リンク中...
Serve.obj : error LNK2001: 外部シンボル "__chkesp" は未解決です
LINK : error LNK2001: 外部シンボル "_WinMainCRTStartup" は未解決です
Debug/Server.exe : fatal error LNK1120: 外部参照 2 が未解決です。
link.exe の実行エラー
DFServer.exe - エラー 3、警告 1
強引にエラー解除してみたのですが、それで実行するとCreatWindowでエラーが帰ってしまいます。
DxLibライブラリ使用で、リストビュー使うことはできないのでしょうか?
以下参考までにソースです
----------------------------------------------
// DFServe.cpp : アプリケーション用のエントリ ポイントの定義
//
#include <windows.h>
#include <commctrl.h>
#pragma comment(lib, "comctl32.lib")
//LNK2001: 外部シンボル "_WinMainCRTStartup" は未解決です
//#pragma comment(linker, "/entry:\"WinMain\"")
//コンパイルオプションから/GZ外し
#include "DxLib.h"
#define ID_LISTVIEW 100
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE,int);
char szClassName[] = "TestServer";
HINSTANCE hInst;
HWND hList;
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
// TODO: この位置にコードを記述してください。
MSG msg;
if(!InitApp(hInstance))
return FALSE;
if(!InitInstance(hInstance,nCmdShow))
return FALSE;
return 0;
}
//ウインドウクラス登録
BOOL InitApp(HINSTANCE hInstance)
{
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc; //プロシージャ名
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst; //インスタンス
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL; //メニュー名
wc.lpszClassName = (LPCSTR)szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
return (RegisterClassEx(&wc));
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance;
hWnd = CreateWindow(szClassName,
"DFServe",//タイトルバーにこの名前が表示されます
WS_OVERLAPPEDWINDOW, //ウィンドウの種類
CW_USEDEFAULT, //X座標
CW_USEDEFAULT, //Y座標
640,//CW_USEDEFAULT, //幅
480,//CW_USEDEFAULT, //高さ
NULL,//親ウィンドウのハンドル、親を作るときはNULL
NULL,//メニューハンドル、クラスメニューを使うときはNULL
hInst,//インスタンスハンドル
NULL);
if (!hWnd)
return FALSE; //<----------ここで落ちる
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
::MessageBox(NULL,"","",MB_OK);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
LV_COLUMN lvcol;
switch(msg)
{
case WM_CREATE:
InitCommonControls(); //コモンコントロール初期化
hList = CreateWindowEx(0,
WC_LISTVIEW, "",
WS_CHILD | WS_VISIBLE | LVS_REPORT,
0, 0, 640, 480,
hWnd,
(HMENU)ID_LISTVIEW,
hInst,
NULL);
//リストビューカラム作成
lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvcol.fmt = LVCFMT_LEFT;
lvcol.cx = 80;
lvcol.pszText = "名前";
lvcol.iSubItem = 0;
ListView_InsertColumn(hList, 0, &lvcol);
lvcol.cx = 100;
lvcol.pszText = "IPアドレス";
lvcol.iSubItem = 1;
ListView_InsertColumn(hList, 1, &lvcol);
lvcol.cx = 200;
lvcol.pszText = "ホスト名";
lvcol.iSubItem = 2;
ListView_InsertColumn(hList, 2, &lvcol);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, msg, wp, lp));
}
return 0;
}