なぜかエラー(WIN32 API)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
オカピーw

なぜかエラー(WIN32 API)

#1

投稿記事 by オカピーw » 13年前

コード:

#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

#define ID_MYTOOL 100
#define ID_EDIT 110
#define ID_EDIT2 101
#define ID_MYTIMER 102
#define ID_STATUS 103
#define MAXWEAPONS 324
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include "resource.h"
#include "Impassible.h"
#include "header.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK MyEditProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK MyDlgProc(HWND,UINT,WPARAM,LPARAM);
HWND MyCreateToolbar(HWND);
void MyCreateStatusbar(HWND);

TBBUTTON tbb[] = {
	{STD_FILESAVE,IDM_SAVE,TBSTATE_ENABLED,BTNS_BUTTON},
	{STD_FILENEW, IDM_NEW, TBSTATE_ENABLED, BTNS_BUTTON},
	{STD_FILEOPEN, IDM_OPEN, TBSTATE_ENABLED, BTNS_BUTTON},
	{STD_COPY, IDM_COPY, TBSTATE_ENABLED, BTNS_BUTTON},
	{STD_CUT, IDM_CUT, TBSTATE_ENABLED, BTNS_BUTTON},
	{STD_PASTE,IDM_PASTE,TBSTATE_ENABLED,BTNS_BUTTON},
	{STD_DELETE,IDM_DEL,TBSTATE_ENABLED,BTNS_BUTTON},
	{STD_UNDO,IDM_UNDO,TBSTATE_ENABLED,BTNS_BUTTON},
};

ATOM InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);
int MyNew(HWND);
int MyOpen(HWND);
int MySave(HWND);
int MySaveAs(HWND);
int MyConfirm(HWND);
int MyYmd(HWND, HWND, int);
int MySetInfo(HWND hEdit, HWND hEdit2);
BOOL bInfo=TRUE;

TCHAR szClassName[] = TEXT("dswebmaster");	//ウィンドウクラス
HINSTANCE hInst; //インスタンスハンドル
TCHAR szTitle[128] = TEXT("大戦略WEB MASTER Ver 1.1.1.2");
TCHAR szTitle_org[] = TEXT("大戦略WEB MASTER Ver 1.1.1.2[%s](%dバイト)");
TCHAR szFile[MAX_PATH];
TCHAR szFileTitle[MAX_PATH];
HWND hMain;//メインウィンドウのハンドル
HWND hSubEdit;
WNDPROC OrgEditProc;
int nPet;
TCHAR DialogText;
HWND hEdit, hEdit2;
int AddCount = FALSE;
HWND g_hStatus;


int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
				   LPSTR lpsCmdLine, int nCmdShow)
{
	MSG msg;
	BOOL bRet;
	HACCEL hAccel;
	
	hInst = hCurInst;
	if (!InitApp(hCurInst))
		return FALSE;
	if (!InitInstance(hCurInst, nCmdShow)) 
		return FALSE;

	hAccel = LoadAccelerators(hCurInst, TEXT("MYACCEL"));

	while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) {
		if (bRet == -1) {
			break;
		} else {
			if (!TranslateAccelerator(hMain, hAccel, &msg)) {
				TranslateMessage(&msg);
				DispatchMessage(&msg);
			}
		}
	}
	return (int)msg.wParam;
}

//ウィンドウ・クラスの登録

ATOM InitApp(HINSTANCE hInst)
{
	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 = (HICON)LoadImage(hInst,
		TEXT("MYICON"),
		IMAGE_ICON,
		0,
		0,
		LR_DEFAULTSIZE | LR_SHARED);
	wc.hCursor = (HCURSOR)LoadImage(NULL,
		MAKEINTRESOURCE(IDC_ARROW),
		IMAGE_CURSOR,
		0,
		0,
		LR_DEFAULTSIZE | LR_SHARED);
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.lpszMenuName = TEXT("MYMENU");	//メニュー名
	wc.lpszClassName = szClassName;
	wc.hIconSm = (HICON)LoadImage(hInst,
		TEXT("MYICON"),
		IMAGE_ICON,
		0,
		0,
		LR_DEFAULTSIZE | LR_SHARED);

	return (RegisterClassEx(&wc));
}

//ウィンドウの生成

BOOL InitInstance(HINSTANCE hInst, int nCmdShow)
{
	HWND hWnd;

	hWnd = CreateWindow(szClassName,
			szTitle, //タイトルバーにこの名前が表示されます
			WS_OVERLAPPEDWINDOW, //ウィンドウの種類
			CW_USEDEFAULT,	//X座標
			CW_USEDEFAULT,	//Y座標
			CW_USEDEFAULT,	//幅
			CW_USEDEFAULT,	//高さ
			NULL, //親ウィンドウのハンドル、親を作るときはNULL
			NULL, //メニューハンドル、クラスメニューを使うときはNULL
			hInst, //インスタンスハンドル
			NULL);
	if (!hWnd)
		return FALSE;
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);
	hMain = hWnd;
	return TRUE;
}

//ウィンドウプロシージャ

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
	int id, nStart, nEnd;
	static HMENU hMenu;
	RECT rc;
	MENUITEMINFO mi;
	INITCOMMONCONTROLSEX cc,ic;
	static HWND hTool,hStatus;

	switch (msg) {
		case WM_CREATE:
			hMenu = GetMenu(hWnd);
//			SetTimer(hWnd,ID_MYTIMER,500,NULL);
			hEdit = CreateWindow(
				TEXT("EDIT"),
				NULL,
				WS_CHILD | WS_VISIBLE | 
				ES_WANTRETURN | ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL |
				ES_AUTOHSCROLL | WS_HSCROLL, 
				0, 0,
				0, 0,
				hWnd,
				(HMENU)ID_EDIT,
				hInst,
				NULL);
			hEdit2 = CreateWindow(
				TEXT("EDIT"),
				NULL,
				WS_CHILD | WS_VISIBLE |
				ES_WANTRETURN | ES_MULTILINE | ES_AUTOVSCROLL |	ES_AUTOHSCROLL, 
				0, 0,
				0, 0,
				hWnd,
				(HMENU)ID_EDIT2,
				hInst,
				NULL);
			hSubEdit = hEdit2;
			lstrcat(szTitle, TEXT("[無題]"));
			SetWindowText(hWnd, szTitle);
			Edit_LimitText(hEdit, 0);
			OrgEditProc = (WNDPROC)SetWindowLongPtr(hEdit, 
				GWL_WNDPROC, 
				(LONG_PTR)MyEditProc);
			//ツールバー作成処理
			cc.dwSize = sizeof(INITCOMMONCONTROLSEX);
			cc.dwICC = ICC_BAR_CLASSES;
			InitCommonControlsEx(&cc);
			hTool = MyCreateToolbar(hWnd);

			//ステータスバー作成処理
			ic.dwSize = sizeof(INITCOMMONCONTROLSEX);
			ic.dwICC = ICC_BAR_CLASSES;
			InitCommonControlsEx(&ic);
			MyCreateStatusbar(hWnd);
			break;
		case WM_SIZE:
			MoveWindow(hEdit, 0, 30, LOWORD(lp), HIWORD(lp)-53 , TRUE);
			SendMessage(hTool,TB_AUTOSIZE,0,0);
			SendMessage(g_hStatus, msg, wp, lp);
			break;
		case WM_COMMAND:
			switch (LOWORD(wp)) {
				case IDM_NEW:
					MyNew(hEdit);
					break;
				case IDM_OPEN:
					MyOpen(hEdit);
					break;
				case IDM_END:
					SendMessage(hWnd, WM_CLOSE, 0, 0);
					break;
				case IDM_SAVE:
					MySave(hEdit);
					break;
				case IDM_SAVEAS:
					MySaveAs(hEdit);
					break;
				case IDM_UNDO:
					SendMessage(hEdit, EM_UNDO, 0, 0);
					break;
				case IDM_CUT:
					SendMessage(hEdit, WM_CUT, 0, 0);
					break;
				case IDM_COPY:
					SendMessage(hEdit, WM_COPY, 0, 0);
					break;
				case IDM_PASTE:
					SendMessage(hEdit, WM_PASTE, 0, 0);
					break;
				case IDM_DEL:
					SendMessage(hEdit, WM_CLEAR, 0, 0);
					break;
				case IDM_ALL:
					SendMessage(hEdit, EM_SETSEL, 0, -1);
					break;
				case IDM_YMD1:
					MyYmd(hEdit, hEdit2, 1);
					break;
				case IDM_YMD2:
					MyYmd(hEdit, hEdit2, 2);
					break;
				case IDM_HMS1:
					MyYmd(hEdit, hEdit2, 3);
					break;
				case IDM_HMS2:
					MyYmd(hEdit, hEdit2, 4);
					break;
				case IDM_______A_1:
					DialogBox(hInst,TEXT("MYDIALOG"),hWnd,
						(DLGPROC)MyDlgProc);
				
			}
			if (lp != (LPARAM)hEdit)
				return DefWindowProc(hWnd, msg, wp, lp);
			switch (HIWORD(wp)) {
				case EN_CHANGE:
					MySetInfo(hEdit, hEdit2);
					break;
			}
			break;
		case WM_SETFOCUS:
			SetFocus(hEdit);
			break;
		case WM_INITMENU:
			if (SendMessage(hEdit, EM_CANUNDO, 0, 0) == 0) {
				EnableMenuItem(hMenu, IDM_UNDO, MF_BYCOMMAND | MF_GRAYED);
			} else {
				EnableMenuItem(hMenu, IDM_UNDO, MF_BYCOMMAND | MF_ENABLED);
			}
			mi.cbSize = sizeof(MENUITEMINFO);
			mi.fMask = MIIM_STATE;
			if (bInfo) {
				mi.fState = MFS_CHECKED;
				SetMenuItemInfo(hMenu, IDM_INFO, FALSE, &mi);
			} else {
				mi.fState = MFS_UNCHECKED;
				SetMenuItemInfo(hMenu, IDM_INFO, FALSE, &mi);
			}
			SendMessage(hEdit, EM_GETSEL, (WPARAM)&nStart, (LPARAM)&nEnd);
			if (nStart == nEnd) {
				EnableMenuItem(hMenu, IDM_CUT, MF_BYCOMMAND | MF_GRAYED);
				EnableMenuItem(hMenu, IDM_COPY, MF_BYCOMMAND | MF_GRAYED);
			} else {
				EnableMenuItem(hMenu, IDM_CUT, MF_BYCOMMAND | MF_ENABLED);
				EnableMenuItem(hMenu, IDM_COPY, MF_BYCOMMAND | MF_ENABLED);
			}
			if (IsClipboardFormatAvailable(CF_TEXT)) {
				EnableMenuItem(hMenu, IDM_PASTE, MF_BYCOMMAND | MF_ENABLED);
			} else {
				EnableMenuItem(hMenu, IDM_PASTE, MF_BYCOMMAND | MF_GRAYED);
			}
			DrawMenuBar(hWnd);
			break;
		case WM_CLOSE:
			id = MyConfirm(hEdit);
			if (id == IDCANCEL)
				break;
			id = MessageBox(hWnd,
				TEXT("終了してもよろしいですか"),
				TEXT("確認"),
				MB_YESNO | MB_ICONQUESTION);
			if (id == IDYES) {
				SetWindowLong(hEdit, GWL_WNDPROC, (LONG)OrgEditProc);
				DestroyWindow(hEdit);
				DestroyWindow(hEdit2);
				DestroyWindow(hWnd);
			}
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		default:
			return (DefWindowProc(hWnd, msg, wp, lp));
	}
	return 0;
}

int MyNew(HWND hEdit)
{
	int id;
	id = MyConfirm(hEdit);
	if (id == IDCANCEL) {
		return -1;
	}
	Edit_SetText(hEdit, TEXT(""));
	SetWindowText(GetParent(hEdit), TEXT("大戦略WEB MASTER Ver 1.0.1.5[無題]"));
	lstrcpy(szFile, TEXT(""));
	return 0;
}

int MyOpen(HWND hEdit)
{
	int id;
	HWND hMain;
    DWORD dwSize = 0L;
    OPENFILENAME ofn;
    HANDLE hFile;
    DWORD dwAccBytes;
    LPTSTR lpszBuf;
	
	HGLOBAL hMem;

    id = MyConfirm(hEdit);
	if (id == IDCANCEL)
		return -1;

    memset(&ofn, 0, sizeof(OPENFILENAME));
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hwndOwner = hEdit;
    ofn.lpstrFilter = TEXT("大戦略web master(*.dsweb)\0*.dsweb\0All files(*.*)\0*.*\0\0");
    ofn.lpstrFile = szFile;
    ofn.lpstrFileTitle = szFileTitle;
    ofn.nMaxFile = MAX_PATH;
    ofn.nMaxFileTitle = MAX_PATH;
    ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
    ofn.lpstrDefExt = TEXT("dsweb");
    ofn.lpstrTitle = TEXT("大戦略WEB MASTER ファイルを開く");

    if(GetOpenFileName(&ofn) == 0)
        return -1;
    hFile = CreateFile(szFile, //ファイル名
		GENERIC_READ, //読みとり/書き込みアクセス
		0, //共有設定 0だと共有対象としない
		NULL, //セキュリティ属性 
		OPEN_ALWAYS, //ファイルがすでに存在しているかどうかの考慮
		FILE_ATTRIBUTE_NORMAL, //ファイル属性
		NULL);
    dwSize = GetFileSize(hFile, NULL);

	hMem = GlobalAlloc(GHND, sizeof(TCHAR) * (dwSize + 1));
	if (hMem == NULL) {
		MessageBox(hEdit, 
			TEXT("メモリの確保に失敗しました\n一度終了し、現在実行中のプログラムを一度停止してから再度試してください"), 
			TEXT("大戦略WEB MASTER"),
			MB_ICONEXCLAMATION | MB_ICONERROR);
		return -1;
	}
	lpszBuf = (LPTSTR)GlobalLock(hMem);
    
    ReadFile(hFile, lpszBuf, dwSize, &dwAccBytes, NULL);
    lpszBuf[dwAccBytes] = TEXT('\0');
    Edit_SetText(hEdit, lpszBuf);
    wsprintf(szTitle, szTitle_org, szFileTitle, dwSize);
	hMain = GetParent(hEdit);
    SetWindowText(hMain, szTitle);
    CloseHandle(hFile);
	GlobalUnlock(hMem);
	GlobalFree(hMem);

	return 0;
}

int MySaveAs(HWND hEdit)
{
	OPENFILENAME ofn;
    HANDLE hFile;
    DWORD dwAccBytes;
    
	LPTSTR lpszBuf;
    int nLen;
	HGLOBAL hMem;
    
    nLen = GetWindowTextLength(hEdit);
	hMem = GlobalAlloc(GHND, nLen + sizeof(TCHAR));
	lpszBuf = (LPTSTR)GlobalLock(hMem);

    GetWindowText(hEdit, lpszBuf, nLen + 1);
    
    memset(&ofn, 0, sizeof(OPENFILENAME));
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hwndOwner = hEdit;
    ofn.lpstrFilter = TEXT("大戦略web master(*.dsweb)\0*.dsweb\0All files(*.*)\0*.*\0\0");
    ofn.lpstrFile = szFile;
    ofn.lpstrFileTitle = szFileTitle;
    ofn.nFilterIndex = 1;
    ofn.nMaxFile = MAX_PATH;
    ofn.nMaxFileTitle = MAX_PATH;
    ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
    ofn.lpstrDefExt = TEXT("dsweb");
    ofn.lpstrTitle = TEXT("名前を付けて保存する");

    if(GetSaveFileName(&ofn) == 0)
        return -1;
    hFile = CreateFile(szFile, 
		GENERIC_WRITE, 
		0, 
		NULL, 
		CREATE_ALWAYS, //常に新しいファイルを作成する
		FILE_ATTRIBUTE_NORMAL, 
		NULL);
	if (hFile == INVALID_HANDLE_VALUE) {
		MessageBox(hEdit, 
			TEXT("ファイルのオープンに失敗しました"), 
			TEXT("Error"), 
			MB_OK | MB_ICONEXCLAMATION);
		return -1;
	}
    WriteFile(hFile, 
		lpszBuf, 
		(DWORD)lstrlen(lpszBuf) * sizeof(TCHAR), 
		&dwAccBytes, 
		NULL);
    wsprintf(szTitle, szTitle_org, szFileTitle, nLen);
    SetWindowText(GetParent(hEdit), szTitle);
    if(CloseHandle(hFile) == 0)
        MessageBox(hEdit, TEXT("Error CloseHandle"), TEXT("Error"), MB_OK);
    SendMessage(hEdit, EM_SETMODIFY, FALSE, 0);
	GlobalUnlock(hMem);
	GlobalFree(hMem);

	return 0;
}

int MySave(HWND hEdit)
{
	HANDLE hFile;
    DWORD dwAccBytes;
    int nLen;
	LPTSTR lpszBuf;
	HGLOBAL hMem;

	if (lstrcmp(szFile, TEXT("")) == 0) {
		MessageBox(hEdit, 
			TEXT("ファイル名が付けられていません"),
			TEXT("大戦略WEB MASTER"),
			MB_OK);
		MySaveAs(hEdit);
		return -1;
	}
    nLen = GetWindowTextLength(hEdit);
	hMem = GlobalAlloc(GHND, sizeof(TCHAR) * (nLen + 1));
	lpszBuf = (LPTSTR)GlobalLock(hMem);


    GetWindowText(hEdit, lpszBuf, nLen + 1);

    hFile = CreateFile(szFile, 
		GENERIC_WRITE, 
		0, 
		NULL, 
		TRUNCATE_EXISTING,
		FILE_ATTRIBUTE_NORMAL, 
		NULL);
    WriteFile(hFile, 
		lpszBuf, 
		(DWORD)lstrlen(lpszBuf) * sizeof(TCHAR), 
		&dwAccBytes, 
		NULL);

	GlobalUnlock(hMem);
	GlobalFree(hMem);
    SendMessage(hEdit, EM_SETMODIFY, FALSE, 0);
	wsprintf(szTitle, szTitle_org, szFileTitle, nLen);
    SetWindowText(GetParent(hEdit), szTitle);
    if (CloseHandle(hFile) == 0) {
        MessageBox(hEdit, TEXT("Error CloseHandle"), TEXT("Error"), MB_OK);
        return -1;
    }

    return 0;
}

int MyConfirm(HWND hEdit)
{
	int id;

	if (SendMessage(hEdit, EM_GETMODIFY, 0, 0) == TRUE) {
		id = MessageBox(hEdit,
			TEXT("文書が更新されています。\n変更を保存しますか?"),
			TEXT("大戦略WEB MASTER"),
			MB_YESNOCANCEL | MB_ICONEXCLAMATION);
		if (id == IDYES) {
			MySave(hEdit);
		} else if (id == IDCANCEL) {
			return IDCANCEL;
		} else if (id ==  IDNO) {
			return IDNO;
		}
	}
	return 0;
}

int MyYmd(HWND hEdit, HWND hEdit2, int nOption)
{
	SYSTEMTIME st;
	TCHAR szBuf[64];

	GetLocalTime(&st);
	switch (nOption) {
		case 1:
			wsprintf(szBuf, TEXT("%d年%02d月%02d日"), st.wYear, st.wMonth, st.wDay);
			break;
		case 2:
			wsprintf(szBuf, TEXT("%d/%02d/%02d"), st.wYear, st.wMonth, st.wDay);
			break;
		case 3:
			wsprintf(szBuf, TEXT("%02d時%02d分%02d秒"), st.wHour, st.wMinute, st.wSecond);
			break;
		case 4:
			wsprintf(szBuf, TEXT("%02d:%02d:%02d"), st.wHour, st.wMinute, st.wSecond);
			break;
	}

	SetWindowText(hEdit2, szBuf);

	SendMessage(hEdit2, EM_SETSEL, 0, -1);
	SendMessage(hEdit2, WM_COPY, 0, 0);
	SendMessage(hEdit, WM_PASTE, 0, 0);

	return 0;
}

int MySetInfo(HWND hEdit, HWND hEdit2 )
{
	TCHAR szBuf[256], szBuf2[64];
	int nLen, nLine, nStart, nEnd;

	nLen = GetWindowTextLength(hEdit);
	nLine = (int)SendMessage(hEdit, EM_GETLINECOUNT, 0, 0);
	wsprintf(szBuf, 
		TEXT("文字数= %d 文字   行 = %d "), nLen, nLine);
	SendMessage(hEdit, EM_GETSEL, (WPARAM)&nStart, (LPARAM)&nEnd);
	if (nStart != nEnd) {
		wsprintf(szBuf2, TEXT("\r\n選択開始位置 = %d, 終了位置 = %d"), nStart, nEnd);
		lstrcat(szBuf, szBuf2);
	}
	SendMessage(g_hStatus,SB_SETTEXT,0 | 0 ,
		(LPARAM)szBuf);
	return 0;
}

LRESULT CALLBACK MyEditProc(HWND hEdit, UINT msg, WPARAM wp, LPARAM lp)
{
	switch (msg) {
		case WM_LBUTTONUP:
		case WM_KEYUP:
			MySetInfo(hEdit, hSubEdit);
			break;

	}
	return CallWindowProc(OrgEditProc, hEdit, msg, wp, lp);
}


BOOL CALLBACK MyDlgProc(HWND hDlg,UINT msg,WPARAM wp, LPARAM lp)
{
	static HWND hList;//リストハンドル
	int id;
	TCHAR name[80];

	switch(msg){
		case WM_COMMAND:
			switch(LOWORD(wp)){
				case IDCANCEL:
					EndDialog(hDlg,IDOK);
					AddCount = FALSE;
					return TRUE;
				case IDOK:
					id = ListBox_GetCurSel(hList);
					if(id < 0) break;
					wsprintf(name,TEXT("%s"),
						List[id]);

					SetWindowText(hEdit2,name);

					SendMessage(hEdit2,EM_SETSEL,0,-1);
					SendMessage(hEdit2,WM_COPY,0,0);
					SendMessage(hEdit ,WM_PASTE,0,0);
//					AddCount = FALSE;
					return TRUE;
			}
		case WM_INITDIALOG:
			hList = GetDlgItem(hDlg,IDC_LIST1);
			if (AddCount == FALSE){
			for (int c = 0; c < MAXWEAPONS ; c++){
				ListBox_AddString(hList,List[c]);
			}
			AddCount = TRUE;
			return TRUE;
			}

	}
	return FALSE;
}

HWND MyCreateToolbar(HWND hWnd)
{
	HWND hTool;
	TBADDBITMAP tb;
	int stdid, i;

	hTool = CreateWindow(TOOLBARCLASSNAME,
		NULL,
		WS_CHILD | WS_VISIBLE, //ウィンドウスタイル
		0, 0, 0, 0,
		hWnd,
		(HMENU)ID_MYTOOL,
		hInst,
		NULL);
	SendMessage(hTool, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
	tb.hInst = HINST_COMMCTRL;
	tb.nID = IDB_STD_SMALL_COLOR;
	stdid = (int)SendMessage(hTool, TB_ADDBITMAP, 0, (LPARAM)&tb);

	for (i = 0; i < 6; i++) 
		tbb[i].iBitmap += stdid;
	SendMessage(hTool, TB_ADDBUTTONS, (WPARAM)8, (LPARAM)&tbb[0]);

	return hTool;
}

void MyCreateStatusbar(HWND hWnd)
{

    g_hStatus = CreateWindowEx(
        0,					//拡張スタイル
        STATUSCLASSNAME,    //ウィンドウクラス
        NULL,    //タイトル
        WS_CHILD | SBARS_SIZEGRIP | CCS_BOTTOM | WS_VISIBLE,//ウィンドウスタイル 
        0,    //X座標
        0,    //Y座標
        0,    //ウィンドウ幅
        0,    //高さ
        hWnd,    //親ウィンドウ
        (HMENU)ID_STATUS,    //ステータスバーのID
        hInst,    //インスタンスハンドル
        NULL);
    SendMessage(g_hStatus, SB_SIMPLE, 0, 0);
}
こんなプログラムを作りました
しかしエラーばかりです
コンパイラはVC++ 2008です

僕的にはエディットコントロールに問題がありそうなんですが
よく分かりません
誰か助けてください!!!

追伸
リンカや関数の定義は他のヘッダに書いてあります

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: なぜかエラー(WIN32 API)

#2

投稿記事 by みけCAT » 13年前

まずエラーメッセージを貼り付けてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: なぜかエラー(WIN32 API)

#3

投稿記事 by softya(ソフト屋) » 13年前

幾つもトピックがあるので、こちらは閉鎖させて頂きます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る