Ⅰ 用Visual C++編寫一個SDI應用程序,按以下要求編程:
MFC基礎編程,你這個要求挺簡單的,我們課本上貌似就有,不過我現在這里沒有安裝vc,你這個程序就是一些操作,也不好貼代碼,如果你要是實在弄不出來,我回去幫你弄一下,然後把操作過程寫清楚,把工程都發給你吧,不過至少得到明天,今天沒時間。
現在把操作過程發給你吧,希望你能操作出來,我已經編譯運行過了的。如果有問題,可能是你操作上的問題,我一步步操作然後一步步發給你。實在還有問題就找我交流吧,
1.新建MFC工程,命名MySdi,選擇單文檔,完成。
2.插入(insert)->資源(resources),選擇Dialog,點擊new(新建)。 //這步完成新建一個對話框資源
3.然後就是編輯這個資源了,畫兩個靜態文本框提示x和y,畫兩個編輯框用來輸入坐標的。
4.在對話框最上面點右鍵點擊類向導,為資源添加一個新類,命名為CTestDlg。
5.給類CTestDlg添加成員變數POINT m_point,公有變數。然後在CTestDlg的構造函數中初始化
m_point.x=0;
m_point.y=0;
6.回到對話框資源編輯那裡(就是剛才畫圖那裡),在OK按鈕雙擊確定然後進入OnOk()函數編寫中。添加如下代碼:
m_point.x=GetDlgItemInt(IDC_EDIT1);
m_point.y=GetDlgItemInt(IDC_EDIT2);
7.以上就弄好了對話框了,下面就是菜單和顯示對話框的問題了。
首先在菜單資源中編輯中添加菜單項「輸入數據(I)..」,ID為IDM_INPUT,caption為「輸入數據(I)...\\tCtrl+I」,點擊資源中Accelerator下的IDR_MAINFRAME然後添加快捷鍵(這個會吧。。。)。
8.回到剛才菜單資源編輯中,在輸入數據菜單項上點擊右鍵選擇類向導添加菜單項的命令響應,選擇CMySdiVie類,選擇command,點擊add function,edit exsiting進入代碼編輯狀態。添加如下代碼:
CMyDialog dlg;
if(dlg.DoModal()==IDOK)
{
x=dlg.m_point.x;
y=dlg.m_point.y;
Invalidate();
}
然後給CMySdiView類添加成員變數x,y並在構造函數中初始化。
注意:還要在這個文件最上面添加如下代碼:#include "TestDlg.h"
9.這個時候你可以編譯試試,點菜單項可以彈出對話框了。
10.最後,就是在OnDraw()函數中添加如下代碼:
pDC->MoveTo(0,0);
pDC->LineTo(x,y);
(我這里每次畫一條原點到輸入點的線,不知道你題目說的「畫一條從當前位置到輸入坐標的直線」中當前位置是什麼意思,你也可以自己改一下坐標就可以畫出你要的線了)。
哎,夠詳細吧,我可是畫了幾個小時啊,寫這么詳細,為了保證不出錯,我先做出來了,然後重新做了一次,做一步寫一步。如果你操作正確,肯定錯不了。不過萬一你還有什麼問題就直接找我交流就是了。
不是吧,給你弄這么詳細還不給個好評給我,我傷心啊。。。
Ⅱ C語言圖形界面怎麼做出來
這是最簡單的界面程序://c++.cpp:定義應用程序的入口點。
//
#include"stdafx.h"
#include"c++.h"
#defineMAX_LOADSTRING100
//全局變數:
HINSTANCEhInst; //當前實例
TCHARszTitle[MAX_LOADSTRING]; //標題欄文本
TCHARszWindowClass[MAX_LOADSTRING]; //主窗口類名
//此代碼模塊中包含的函數的前向聲明:
ATOM MyRegisterClass(HINSTANCEhInstance);
BOOL InitInstance(HINSTANCE,int);
LRESULTCALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
INT_PTRCALLBACK About(HWND,UINT,WPARAM,LPARAM);
intAPIENTRY_tWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPTSTRlpCmdLine,
intnCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
//TODO:在此放置代碼。
MSGmsg;
HACCELhAccelTable;
//初始化全局字元串
LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);
LoadString(hInstance,IDC_C,szWindowClass,MAX_LOADSTRING);
MyRegisterClass(hInstance);
//執行應用程序初始化:
if(!InitInstance(hInstance,nCmdShow))
{
returnFALSE;
}
hAccelTable=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDC_C));
//主消息循環:
while(GetMessage(&msg,NULL,0,0))
{
if(!TranslateAccelerator(msg.hwnd,hAccelTable,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return(int)msg.wParam;
}
//
//函數:MyRegisterClass()
//
//目的:注冊窗口類。
//
//注釋:
//
//僅當希望
//此代碼與添加到Windows95中的「RegisterClassEx」
//函數之前的Win32系統兼容時,才需要此函數及其用法。調用此函數十分重要,
//這樣應用程序就可以獲得關聯的
//「格式正確的」小圖標。
//
ATOMMyRegisterClass(HINSTANCEhInstance)
{
WNDCLASSEXwcex;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style =CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc =WndProc;
wcex.cbClsExtra =0;
wcex.cbWndExtra =0;
wcex.hInstance =hInstance;
wcex.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(IDI_C));
wcex.hCursor =LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground =(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName =MAKEINTRESOURCE(IDC_C);
wcex.lpszClassName =szWindowClass;
wcex.hIconSm =LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_SMALL));
returnRegisterClassEx(&wcex);
}
//
//函數:InitInstance(HINSTANCE,int)
//
//目的:保存實例句柄並創建主窗口
//
//注釋:
//
//在此函數中,我們在全局變數中保存實例句柄並
//創建和顯示主程序窗口。
//
BOOLInitInstance(HINSTANCEhInstance,intnCmdShow)
{
HWNDhWnd;
hInst=hInstance;//將實例句柄存儲在全局變數中
hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if(!hWnd)
{
returnFALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
returnTRUE;
}
//
//函數:WndProc(HWND,UINT,WPARAM,LPARAM)
//
//目的:處理主窗口的消息。
//
//WM_COMMAND -處理應用程序菜單
//WM_PAINT -繪制主窗口
//WM_DESTROY -發送退出消息並返回
//
//
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
intwmId,wmEvent;
PAINTSTRUCTps;
HDChdc;
switch(message)
{
caseWM_COMMAND:
wmId=LOWORD(wParam);
wmEvent=HIWORD(wParam);
//分析菜單選擇:
switch(wmId)
{
caseIDM_ABOUT:
DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);
break;
caseIDM_EXIT:
DestroyWindow(hWnd);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
break;
caseWM_PAINT:
hdc=BeginPaint(hWnd,&ps);
//TODO:在此添加任意繪圖代碼...
EndPaint(hWnd,&ps);
break;
caseWM_DESTROY:
PostQuitMessage(0);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
return0;
}
//「關於」框的消息處理程序。
INT_PTRCALLBACKAbout(HWNDhDlg,UINTmessage,WPARAMwParam,LPARAMlParam)
{
UNREFERENCED_PARAMETER(lParam);
switch(message)
{
caseWM_INITDIALOG:
return(INT_PTR)TRUE;
caseWM_COMMAND:
if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)
{
EndDialog(hDlg,LOWORD(wParam));
return(INT_PTR)TRUE;
}
break;
}
return(INT_PTR)FALSE;
}
Ⅲ 現在chrome怎麼使用idm 希望能給個詳細的教程,如果有用可以追償
1、首先需要安裝IDM擴展程序,打開IDM安裝文件夾,找到這個文件「IDMGCExt.crx」。