语言: C
作业内容:
1. 在 RESOURCE(资源文件)中已经添加一个窗体,并且窗体上有81个文本框,3个按钮。
需要把这个窗体及上边的文本框及按钮都显示出来。
2. Win_DlgProc函数如何使用(放在哪儿? WinMain函数的While里边吗)
现状:
因为初次接触C语言的界面,所以我只会创建出一个空白的,跟已有的资源文件无关的窗体。
资源文件名称: Script1.rc
附加说明:
之前用DOS界面作了一个解答 数独 的小程序,现在把它关联到界面操作上去。
对于C语言的界面完全没接触过, 所以不知从何下手。
哪位朋友要知道网上有好的电子书或好的教程请介绍给我,先谢谢了。
#include <windows.h>
#include <windowsx.h>
// #include <winsock.h>
// #include <commctrl.h>
#include <process.h>
#include "resource.h"
static TCHAR szAppName[]=TEXT("Sudoku");
BOOL CALLBACK Win_DlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
long WINAPI WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LONG lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
HWND hWndMain;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG Message;
if(!InitWindowsClass(hInstance))
return FALSE;
if(!InitWindows(hInstance,nCmdShow))
return FALSE;
while(GetMessage(&Message,NULL,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow(szAppName,"数独",WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,0,CW_USEDEFAULT,0,
NULL,NULL,hInstance,NULL);
if(!hWnd){
return FALSE;
}
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
BOOL InitWindowsClass(HINSTANCE hInstance)
{
WNDCLASS WndClass;
WndClass.style=0;
WndClass.lpfnWndProc=WndProc;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hInstance=hInstance;
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
//WndClass.hIcon=LoadIcon(HINSTANCE,IDD_PROPPAGE_LARGE);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.lpszMenuName="SudokuPlay";
WndClass.lpszClassName=szAppName;
return RegisterClass(&WndClass);
}
long WINAPI WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LONG lParam)
{
switch(iMessage)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
return 0;
}
BOOL CALLBACK Win_DlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch( message ){
case WM_INITDIALOG:
// ?? ReadCommandInfo();
// ?? DlgInit( hwnd );
return TRUE;
case WM_CLOSE:
ExitProcess( 0 ) ;
Sleep(100);
EndDialog( hwnd, 0 );
return TRUE;
case WM_COMMAND:
switch( HIWORD( wParam ) )
{
case BN_CLICKED:
switch( LOWORD( wParam ) )
{
case IDC_BUTTON_CREATE:
// CmdIn( hwnd );
break;
case IDC_BUTTON_SOLVE:
// RunCommand( hwnd, 0 );
break;
case IDC_BUTTON_CHECK:
// RunCommand( hwnd, 1 );
break;
}
break;
case EN_SETFOCUS:
// 処理X
break;
case EN_KILLFOCUS:
// 処理X
break;
}
return TRUE;
case WM_KEYDOWN:
//
return TRUE;
case WM_SIZE:
case WM_VSCROLL:
// movesize
return TRUE;
case WM_HSCROLL:
//movesize
return TRUE;
}
return FALSE;
}
扩展问题:(如解决再加分)
如何把81个文本框对应到一个有81个元素的数组(整型)?