小弟在编程的时候遇到了些麻烦哈!请各位高手在这里指点下小第哈!我先谢谢各位大哥了哈!~~~~~

er370520 2006-05-14 10:15:13
小第的VC才现在才刚刚入门哈!我想编制点简单的程序 来提高自己 但是就是连最简单的程序我都没法遍哈!我在这里想请各位高手帮下小第哈!我在这里感激不尽了哈!


我主要是想编个这样的程序: 我在单文档里做了2个编辑框和一个控制按扭 我只要在第一个

编辑框里输入数据20后按下确定按扭后,那么在第2个编辑框里就显示数据60;我在第一个编辑框里输

入30按下确定按扭后,那么在第2个编辑框里就显示90(其实我就是想用套用3X=? 这个公式)。我就

是不知道怎么调用编辑框里的函数以及不知道怎么在这3个控件中添加代码,还有怎么把公式3X=?添

加进去我也不知道从那里下手。

请各位高手帮小第编下程序哈,小第由衷的感谢大家了!~~~~`谢谢!~~~~~


...全文
115 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
anyue417 2006-05-16
  • 打赏
  • 举报
回复
你从这个地址下载MSDN,安装了就可以查:(2005.7月版)
http://soft.freestu.net/search.php?keywords=msdn&imageField.x=4&imageField.y=2
或者直接下载VS2005,上面那个站点也有,里面集成了最新版的中文MSDN。不过麻烦了点。
xiangrujian 2006-05-15
  • 打赏
  • 举报
回复
如果是MFC程序的话添加按钮消息响应函数,利用GetDlgItemText函数获得第一个框的数据,把获得的数据转换为整形再实现3X再转换为字符串行(用atoi和itoa函数),最后利用SetDlgItemText函数把结果设置在第二个框上,函数用法查MSDN,具体代码自己练习写下增加动手能力!
anyue417 2006-05-15
  • 打赏
  • 举报
回复

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HINSTANCE hInstance;
static HWND hwndEdit;
HMENU hMenu;
static HICON hIcon ;

int iSelect;

static BOOL bNeedSave=FALSE;
static int iOffset;
static TCHAR szFileName[MAX_PATH],szTitleName[MAX_PATH];
static UINT messageFindReplace;
int iEnable;
LPFINDREPLACE pfr;

COLORREF backcolor=RGB(208,221,238);

static PTSTR pstrText;
int iLength;


switch (message)
{
case WM_CREATE:
hwndEdit=CreateWindow(TEXT("edit"),NULL,WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_NOHIDESEL,0,0,0,0,hwnd,(HMENU)ID_EDIT,((LPCREATESTRUCT)lParam)->hInstance,NULL);
hInstance=((LPCREATESTRUCT)lParam)->hInstance;
SendMessage(hwndEdit,EM_LIMITTEXT,32000,0L);

PopFileInitialize(hwnd);

messageFindReplace=RegisterWindowMessage(FINDMSGSTRING);

DoCaption(hwnd,szTitleName);
return 0;
case WM_SETFOCUS:
SetFocus(hwndEdit);
return 0;
case WM_CTLCOLOREDIT:
// SetBkMode((HDC)wParam,OPAQUE); //*look on the bottom for more info
SetBkColor((HDC)wParam,backcolor);
return 0;
case WM_CTLCOLORDLG:
// SetBkMode((HDC)wParam,OPAQUE); //*look on the bottom for more info
SetBkColor((HDC)wParam,backcolor);
return 0;


case WM_SIZE:
MoveWindow(hwndEdit,0,0,LOWORD(lParam),HIWORD(lParam),TRUE);
return 0;
case WM_INITMENUPOPUP:
switch(lParam)
{
case 1:
EnableMenuItem((HMENU)wParam,IDM_EDIT_UNDO,SendMessage(hwndEdit,EM_CANUNDO,0,0)?MF_ENABLED:MF_GRAYED);
EnableMenuItem((HMENU)wParam,IDM_EDIT_PASTE,IsClipboardFormatAvailable(CF_TEXT)?MF_ENABLED:MF_GRAYED);

iSelect=SendMessage(hwndEdit,EM_GETSEL,0,0);

if(HIWORD(iSelect)==LOWORD(iSelect))
{
iEnable=MF_GRAYED;
}
else
{
iEnable=MF_ENABLED;
}
EnableMenuItem((HMENU)wParam,IDM_EDIT_CUT,iEnable);
EnableMenuItem((HMENU)wParam,IDM_EDIT_COPY,iEnable);
EnableMenuItem((HMENU)wParam,IDM_EDIT_CLEAR,iEnable);
break;

case 2:
iEnable=hDlgModeless==NULL?MF_ENABLED:MF_GRAYED;
EnableMenuItem((HMENU)wParam,IDM_SEARCH_FIND,iEnable);
EnableMenuItem((HMENU)wParam,IDM_SEARCH_NEXT,iEnable);
EnableMenuItem((HMENU)wParam,IDM_SEARCH_REPLACE,iEnable);
break;
}
return 0;

case WM_COMMAND:
if(lParam && LOWORD(wParam)==ID_EDIT)
{
switch(HIWORD(wParam))
{
case EN_UPDATE:
bNeedSave=TRUE;
return 0;
case EN_ERRSPACE:
case EN_MAXTEXT:
MessageBox(hwnd,TEXT("Edit control out of space!"),szAppName,MB_OK | MB_ICONSTOP);
return 0;
}
break;
}

hMenu=GetMenu(hwnd);
switch(LOWORD(wParam))
{
case IDM_FILE_NEW:
if(bNeedSave && IDCANCEL ==AskAboutSave(hwnd,szTitleName))
{
return 0;
}
SetWindowText(hwndEdit,TEXT("\0"));
szFileName[0]='\0';
szTitleName[0]='\0';
DoCaption(hwnd,szTitleName);
bNeedSave=FALSE;
return 0;

case IDM_FILE_OPEN:
if(bNeedSave && IDCANCEL ==AskAboutSave(hwnd,szTitleName))
{
return 0;
}
if(PopFileOpenDlg(hwnd,szFileName,szTitleName))
{
if(!PopFileRead(hwndEdit,szFileName))
{
OkMessage(hwnd,TEXT("Could not read file %s!"),szTitleName);
szFileName[0]='\0';
szTitleName[0]='\0';
}
}
DoCaption(hwnd,szTitleName);
bNeedSave=FALSE;
return 0;


case IDM_FILE_SAVE:
if(szFileName[0])
{
if(PopFileWrite(hwndEdit,szFileName))
{
bNeedSave =FALSE;
return 1;
}
else
{
OkMessage(hwnd,TEXT("Could not write file %s!"),szTitleName);
return 0;
}
}

case IDM_FILE_SAVE_AS:
if(PopFileSaveDlg(hwnd,szFileName,szTitleName))
{
DoCaption(hwnd,szTitleName);
if(PopFileWrite(hwndEdit,szFileName))
{
bNeedSave=FALSE;
return 1;
}
else
{
OkMessage(hwnd,TEXT("could not write file %s!"),szTitleName);
return 0;
}
}
return 0;
case IDM_APP_EXIT:
SendMessage(hwnd,WM_CLOSE,0,0);
return 0;
case IDM_EDIT_UNDO:
SendMessage(hwndEdit,WM_UNDO,0,0);
return 0;
case IDM_EDIT_CUT:
SendMessage(hwndEdit,WM_CUT,0,0);
return 0;
case IDM_EDIT_COPY:
SendMessage(hwndEdit,WM_COPY,0,0);
return 0;
case IDM_EDIT_PASTE:
SendMessage(hwndEdit,WM_PASTE,0,0);
return 0;
case IDM_EDIT_CLEAR:
SendMessage(hwndEdit,WM_CLEAR,0,0);
return 0;
case IDM_EDIT_SELECT_ALL:
SendMessage(hwndEdit,EM_SETSEL,0,-1);
return 0;
case IDM_SEARCH_FIND:
SendMessage(hwnd,EM_GETSEL,0,(LPARAM)&iOffset);
hDlgModeless=PopFindFindDlg(hwnd);
return 0;
case IDM_SEARCH_NEXT:
SendMessage(hwndEdit,EM_GETSEL,0,(LPARAM)&iOffset);

if(PopFindValidFind())
{
PopFindNextText(hwndEdit,&iOffset);
}
else
{
hDlgModeless=PopFindFindDlg(hwnd);
}
return 0;
case IDM_SEARCH_REPLACE:
SendMessage(hwndEdit,EM_GETSEL,0,(LPARAM)&iOffset);
hDlgModeless = PopFindReplaceDlg(hwnd);
return 0;
case IDM_APP_HELP:
MessageBox(hwnd,"Help not yet implemented!",szAppName,MB_ICONEXCLAMATION | MB_OK);
return 0;
case IDM_APP_ABOUT:
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG),hwnd,AboutDlgProc);
return 0;
case IDM_APP_GO:
iLength=GetWindowTextLength(hwndEdit);
pstrText=(PTSTR)malloc((iLength+1)*sizeof(TCHAR));
GetWindowText(hwndEdit,pstrText,iLength+1);
MessageBox(hwnd,pstrText,"ok",MB_OK);
free(pstrText);
return 0;
}

break;

case WM_CLOSE:
if(!bNeedSave || IDCANCEL !=AskAboutSave(hwnd,szTitleName))
{
DestroyWindow(hwnd);
}
return 0;
case WM_QUERYENDSESSION:
if(!bNeedSave || IDCANCEL !=AskAboutSave(hwnd,szTitleName))
{
return 1;
}
return 0;

case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
default:
if(message == messageFindReplace)
{
pfr=(LPFINDREPLACE)lParam;
if(pfr->Flags & FR_DIALOGTERM)
hDlgModeless =NULL;
if(pfr->Flags & FR_FINDNEXT)
{
if(!PopFindFindText(hwndEdit,&iOffset,pfr))
{
OkMessage(hwnd,TEXT("Text not found!"),TEXT("\0"));
}
}
if(pfr->Flags & FR_REPLACE || pfr->Flags & FR_REPLACEALL)
{
if(!PopFindReplaceText(hwnd,&iOffset,pfr))
{
OkMessage(hwnd,TEXT("Text not found!"),TEXT("\0"));
}
}
if(pfr->Flags & FR_REPLACEALL)
{
while(PopFindReplaceText(hwndEdit,&iOffset,pfr));
}

}
break;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}


BOOL CALLBACK AboutDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
case IDCANCEL:
EndDialog(hDlg,0);
return TRUE;
}
break;
}
return FALSE;
}


我也是新手,这个程序是用SDK的方式写的,
在一个主窗口中有一个编辑框控件,编辑框占用了整个窗口,所以看起来和普通的不太一样,但是因为都是涉及到了对编辑框控件的内容的存取,所以应该对楼主有一点用,不要看很长,其实重要的就几个函数调用。高手们不要见笑哈
(这些话是要放在上一贴开头的,可第一贴上的竟然不见了!又重新打了一次)
anyue417 2006-05-15
  • 打赏
  • 举报
回复
#include <windows.h>
#include <commdlg.h>
#include "resource.h"


#define ID_EDIT 1
#define UNTITLED TEXT("(untitled)")

TCHAR szAppName[]=TEXT("Mini Matlab") ;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK AboutDlgProc(HWND,UINT,WPARAM,LPARAM);

void PopFileInitialize(HWND);
BOOL PopFileOpenDlg(HWND,PTSTR,PTSTR);
BOOL PopFileSaveDlg(HWND,PTSTR,PTSTR);
BOOL PopFileRead(HWND,PTSTR);
BOOL PopFileWrite(HWND,PTSTR);

HWND PopFindFindDlg (HWND);
HWND PopFindReplaceDlg(HWND);
BOOL PopFindFindText(HWND,int *,LPFINDREPLACE);
BOOL PopFindReplaceText(HWND,int *,LPFINDREPLACE);
BOOL PopFindNextText(HWND,int *);
BOOL PopFindValidFind(void);

static HWND hDlgModeless;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (hInstance, MAKEINTRESOURCE (IDI_ICON)) ;
wndclass.hCursor = LoadCursor (hInstance, MAKEINTRESOURCE(IDC_CURSOR)) ;
wndclass.hbrBackground =(HBRUSH)CreateSolidBrush(RGB(208,221,238)) ;
wndclass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU);
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow (szAppName, szAppName,
WS_OVERLAPPEDWINDOW,
GetSystemMetrics(SM_CXSCREEN)/10,
GetSystemMetrics(SM_CYSCREEN)/10,
GetSystemMetrics(SM_CXSCREEN)*4/5,
GetSystemMetrics(SM_CYSCREEN)*4/5,
NULL, NULL, hInstance, NULL);

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

// hAccel=LoadAccelerators(hInstance,szAppName);

while (GetMessage (&msg, NULL, 0, 0))
{
if(hDlgModeless==NULL || !IsDialogMessage(hDlgModeless,&msg))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}

}
return msg.wParam ;
}

AskConfirmation(HWND hwnd)
{
return MessageBox(hwnd,TEXT("Really want to close Mini Matlab ?"),szAppName,MB_YESNO | MB_ICONQUESTION);
}

void DoCaption(HWND hwnd,TCHAR *szTitleName)
{
TCHAR szCaption[64+MAX_PATH];
wsprintf(szCaption,TEXT("%s-%s"),szAppName,szTitleName[0]?szTitleName:UNTITLED);
SetWindowText(hwnd,szCaption);
}

void OkMessage(HWND hwnd,TCHAR *szMessage,TCHAR * szTitleName)
{
TCHAR szBuffer[64+MAX_PATH];
wsprintf(szBuffer,szMessage,szTitleName[0]?szTitleName:UNTITLED);
MessageBox(hwnd,szBuffer,szAppName, MB_OK | MB_ICONEXCLAMATION);
}

short AskAboutSave(HWND hwnd,TCHAR *szTitleName)
{
TCHAR szBuffer[64+MAX_PATH];
int iReturn;

wsprintf(szBuffer,TEXT("Save current change in %s?"),szTitleName[0]?szTitleName:UNTITLED);
iReturn=MessageBox(hwnd,szBuffer,szAppName,MB_YESNOCANCEL | MB_ICONQUESTION);
if(iReturn==IDYES)
{
if(!SendMessage(hwnd,WM_COMMAND,IDM_FILE_SAVE,0))
{
iReturn = IDCANCEL;
}
}
return iReturn;
}

贴不下了,接在下面

er370520 2006-05-15
  • 打赏
  • 举报
回复
各位大哥能告诉下小第“函数用法查MSDN”,这个在那里查啊?
芮言 2006-05-15
  • 打赏
  • 举报
回复
为何不用基于对话框的?

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧