Visual C++에서 WPF 프로젝트 를 만 드 는 방법 예제 탐색
WPF 는 C\#/VB 개발 뿐만 아니 라 다른 언어 도 지원 하기 때문에 예 를 들 어 C+,F\#등 개발 도 지원 합 니 다.그래서 저 는 최근 에 시간 을 들 여 모색 해 봤 습 니 다.본 고 는 주로
C++/CLI
에서 WPF 프로젝트 를 만 드 는 방법 을 소개 합 니 다.제 가 사용 하 는 개발 환경 은 Win 10 x64+Visual Studio 2019(16.6.1 버 전)입 니 다.
오늘 우 리 는
C++/CLI
을 사용 해 야 한다.C++의 키 집합 이 라 고 할 수 있다.정상적으로 사용 하려 면
C++/CLI
build 세트(아래 그림 참조)가 설치 되 어 있 는 지 확인 하 는 동시에 Visual C+해당 버 전의 런 타임 라 이브 러 리 도 설치 되 어 있 는 지 확인 해 야 합 니 다.C++/CLI
에 들 어가 서 Visual Studio 2019 를 찾 고'수정'을 우 클릭 한 다음'독립 구성 요소'(Individual components)라 는 옵션 으로 전환 합 니 다.만약 설치 하지 않 았 다 면,선택 한 후에 설치 하면 된다.
다음은 프로젝트 를 만 들 수 있 습 니 다.템 플 릿
을 선택 하 는 것 을 권장 합 니 다.솔 루 션 과 프로젝트 이름 은 모두 사용 할 수 있 습 니 다CLR Empty Project (.NET Framework)
.이 때 빈 항목 이 생 성 되 었 습 니 다.
이때 Project 의 속성 을 보고
CppWpfDemo
->"C/C++"->"All Options"를 입력 하여 검색 하여 선택 한 것 이Configration Properties
인지 확인 합 니 다.다음 항목 아래 폴 더'Resource Files'를 마우스 우 클릭 하고'Add'->'new item'을 누 르 십시오.형식 은'Component Class'를 선택 하고 기본 이름
Common Language Runtime Suppor(/clr)
을 사용 할 수 있 습 니 다.이때
MyComponent
의 코드 는 다음 과 같다.
#include "MyComponent.h"
WPF 의 각종 라 이브 러 리 를 정확하게 인용 하기 위해 서 는 WPF 의 3 개 핵심 dll 을 추가 해 야 합 니 다.조작 방법 은:오른쪽 키 로 항목 중
MyComponent.cpp
을 클릭 하고References
을 누 르 고 선택:그 다음 에 후진 을 했 습 니 다.저 는 이것 으로 바 꾸 어 간단 한 화면 을 만 들 었 습 니 다.
이때
Add Reference
의 내용 은 다음 과 같다.
#include "MyComponent.h"
using namespace CppWpfDemo;
using namespace System::Windows;
using namespace System::Windows::Controls;
using namespace System::Windows::Media;
[System::STAThreadAttribute]
int main(array<System::String^>^ args)
{
Application^ app = gcnew Application();
Window^ window = gcnew Window();
window->Title = "C++/CLI WPF demo";
TextBlock^ tb = gcnew TextBlock();
tb->Text = "Hello WPF";
// Add root Grid
Grid^ rootGrid = gcnew Grid();
rootGrid->Width = 120;
rootGrid->Height = 120;
RowDefinition^ myRowDef1 = gcnew RowDefinition();
rootGrid->RowDefinitions->Add(myRowDef1);
DataGrid^ grid = gcnew DataGrid();
grid->Background = Brushes::LightBlue;
grid->Width = 80;
grid->Height = 100;
// Define the Canvas
Canvas^ mainCanvas = gcnew Canvas();
mainCanvas->Children->Add(tb);
mainCanvas->Children->Add(grid);
Canvas::SetTop(tb, 20);
Canvas::SetLeft(tb, 20);
Canvas::SetTop(grid, 50);
Canvas::SetLeft(grid, 20);
rootGrid->Children->Add(mainCanvas);
Grid::SetRow(mainCanvas, 0);
window->Content = rootGrid;
app->Run(window);
return 0;
}
코드 중의MyComponent.cpp
은 필요 하 며,등가[STAThread]
또는[System::STAThread]
이다.또 한 친 구 는 프로젝트 속성 에'Entry Point'의 값 을'main'으로 설정 해 야 한다 고 말 했다.채 워 넣 는 것 과 안 채 우 는 것 은 영향 이 없 는 지 테스트 해 봤 으 니 쓰 지 말 것 을 권장 했다.
이제 build 할 수 있 습 니 다.
만약 에
[System::STAThreadAttribute]
문제 가 발생 하면 설치Visual C++ Redistributable for Visual Studio 2015와Microsoft Visual C++ 2015 Redistributable Update 3 RC를 하면 해결 할 수 있 고 x64 와 x86 의 운행 라 이브 러 리 는 모두 설치 해 야 한다.만약 아직 안 된다 면,
VCRUNTIME140.dll missing
C:\Windows\System32
인지 확인 하고 읽 기 전용 이 라면 앞의 체크 를 제거 합 니 다.옥 에 티 는 뒤에 명령 행 창 이 계속 있 습 니 다.
인터넷 에서 해결 방안 을 찾 아 보 니 현재 사용 하고 있 는
을int main()
으로 바 꾸 면 해결 할 수 있 고,사용 할 수 있 으 려 면int WINAPI WinMain()
헤더 파일 을 도입 해 야 한다.WinMain()
을windows.h
다음 줄 에 추가 하면 다음 과 같은 오류 가 발생 합 니 다.명령 공간 충돌 로
#include windows.h
인용 에 봉기 가 일 어 났 기 때문이다.해결 방법 은 코드 의 첫 줄 에
#include "MyComponent.h"
두 는 것 이다.이때
Window
의 내용 은 다음 과 같다.
#include "windows.h"
#include "MyComponent.h"
using namespace System::Windows;
using namespace System::Windows::Controls;
using namespace System::Windows::Media;
[STAThread]
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmd, int nCmd)
{
Application^ app = gcnew Application();
Window^ window = gcnew Window();
window->Title = "C++/CLI WPF demo";
TextBlock^ tb = gcnew TextBlock();
tb->Text = "Hello WPF";
// Add root Grid
Grid^ rootGrid = gcnew Grid();
rootGrid->Width = 120;
rootGrid->Height = 120;
RowDefinition^ myRowDef1 = gcnew RowDefinition();
rootGrid->RowDefinitions->Add(myRowDef1);
DataGrid^ grid = gcnew DataGrid();
grid->Background = Brushes::LightBlue;
grid->Width = 80;
grid->Height = 100;
// Define the Canvas
Canvas^ mainCanvas = gcnew Canvas();
mainCanvas->Children->Add(tb);
mainCanvas->Children->Add(grid);
Canvas::SetTop(tb, 20);
Canvas::SetLeft(tb, 20);
Canvas::SetTop(grid, 50);
Canvas::SetLeft(grid, 20);
rootGrid->Children->Add(mainCanvas);
Grid::SetRow(mainCanvas, 0);
window->Content = rootGrid;
app->Run(window);
return 0;
}
실행 결 과 는:대 백 이 는 오늘 구덩이 에 누 워 서 문 제 를 해결 했다.먼저 장~
첫 번 째 버 전 코드 가 업로드 되 었 습 니 다
#include windows.h
:https://github.com/yanglr/CppWpfDemo/tree/master/CppWpfDemo/CppWpfDemo.Visual C++에서 WPF 프로젝트 를 만 드 는 방법 에 대한 탐색 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Visual C++에서 WPF 프로젝트 를 만 드 는 방법 에 대한 탐색 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Unity에서 Visual Studio가 열리지 않는 경우 VSCode로 대체하는 방법Unity에서는 Edit -> Preferences -> External Tools에서 사용할 편집기를 지정할 수 있습니다. 일반적으로 Visual Studio 2019 등이 기본 편집기로 설정되었지만 Unity 2...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.